diff --git a/sams_classes/sams_app.py b/sams_classes/sams_app.py index 71cbed54f17feae42b77457407f584d99c3deda2..f9ec0c09cf918f3a8831cb8517961c43c42543cc 100644 --- a/sams_classes/sams_app.py +++ b/sams_classes/sams_app.py @@ -95,7 +95,9 @@ class SAMSApp: for element in menuPattern: entry = { 'url': self._generate_url( - urlPart = element['url'], urlPrefix = urlPrefix), + urlPart = element['url'], urlPrefix = urlPrefix, + external = element.get('external', False) + ), 'name': self.lang(langCode)[element['name_string']]} if element.get('menu'): entry['menu'] = self._get_men_entries( @@ -104,7 +106,10 @@ class SAMSApp: entries.append(entry) return entries - def _generate_url(self, urlPrefix: str, urlPart: str = '') -> str: + def _generate_url( + self, urlPrefix: str, urlPart: str = '', external = False ) -> str: + if external: + return urlPart urlPrefix = urlPrefix.strip('/') urlPart = urlPart.strip('/') urlElements = [] diff --git a/test/test_sams_app.py b/test/test_sams_app.py index 2906cb5557acac0146b1e6c64c7d7f2b60b21281..a5288aa8680937fece5b46f5e62ebf19a6ea7f7b 100644 --- a/test/test_sams_app.py +++ b/test/test_sams_app.py @@ -156,6 +156,21 @@ class TestSAMSApp(unittest.TestCase): self.assertEqual(menu[0]['url'], '/test') self.assertEqual(menu[1]['url'], '/test/1') + def test_app_menu_external_urls(self): + """app.menu(lanCode, prefix) ignors external urls for prefix""" + manifest = { + 'default_language': 'en', 'menu': [ + {'url': '', 'name_string': '0'}, + {'url': 'http://zib.de', 'name_string': '1', 'external': True} + ] + } + langDict = {'0': 'main', '1': 'second'} + app = SAMSApp(name = 'test', manifest = manifest + , langDict = {'en': langDict}) + menu = app.menu(langCode = 'en', urlPrefix = '/test') + self.assertEqual(menu[0]['url'], '/test') + self.assertEqual(menu[1]['url'], 'http://zib.de') + def test_app_proxies_list(self): """ app.proxies provides list even if no proxy is defined in manifest""" app = SAMSApp(name = 'test', manifest = {'default_language': 'de'},