From 7fd0e0f8ec278a4df885f6032774929ccc2f97f3 Mon Sep 17 00:00:00 2001 From: Luis Aleixo Date: Tue, 9 May 2023 17:13:46 +0200 Subject: [PATCH] updated env var EXTRA_PAGES structure --- caimira/apps/calculator/__init__.py | 29 ++++++++++---------- caimira/tests/apps/calculator/test_webapp.py | 4 +-- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/caimira/apps/calculator/__init__.py b/caimira/apps/calculator/__init__.py index 76583dc1..dba1208e 100644 --- a/caimira/apps/calculator/__init__.py +++ b/caimira/apps/calculator/__init__.py @@ -1,6 +1,8 @@ # This module is part of CAiMIRA. Please see the repository at # https://gitlab.cern.ch/caimira/caimira for details of the license and terms of use. +import ast +import logging import asyncio import concurrent.futures import datetime @@ -16,7 +18,7 @@ import traceback import typing import uuid import zlib -import ast + import jinja2 import loky @@ -38,6 +40,8 @@ from .user import AuthenticatedUser, AnonymousUser # increase the overall CAiMIRA version (found at ``caimira.__version__``). __version__ = "4.9" +LOG = logging.getLogger(__name__) + class BaseRequestHandler(RequestHandler): async def prepare(self): @@ -327,7 +331,7 @@ class GenericExtraPage(BaseRequestHandler): def get(self): template_environment = self.settings["template_environment"] - template = template_environment.get_template(f"{self.filename}.html.j2") + template = template_environment.get_template(self.filename) self.finish(template.render( user=self.current_user, get_url = template.globals['get_url'], @@ -369,22 +373,19 @@ def make_app( ] # Any extra generic page must be declared in the env. variable "EXTRA_PAGES" - extra_pages=os.environ.get('EXTRA_PAGES', None) + extra_pages: typing.Union[str, typing.List] = os.environ.get('EXTRA_PAGES', []) try: - for extra in ast.literal_eval(extra_pages): # type: ignore - if extra['is_root']: - urls.append((get_root_url(r'%s' % extra['url']), - GenericExtraPage, { - 'active_page': extra['url'].strip('/'), - 'filename': extra['filename'], })) - else: - urls.append((get_root_calculator_url(r'%s' % extra['url']), - GenericExtraPage, { - 'active_page': 'calculator/' + extra['url'].strip('/'), - 'filename': extra['filename'], })) + pages = ast.literal_eval(extra_pages) # type: ignore except (SyntaxError, ValueError): + LOG.warning('Warning: There was a problem with the extra pages. Is the "EXTRA_PAGES" environment variable correctly defined?') pass + for extra in pages: + urls.append((get_root_url(r'%s' % extra['url_path']), + GenericExtraPage, { + 'active_page': extra['url_path'].strip('/'), + 'filename': extra['filename'], })) + caimira_templates = Path(__file__).parent.parent / "templates" calculator_templates = Path(__file__).parent / "templates" templates_directories = [caimira_templates, calculator_templates] diff --git a/caimira/tests/apps/calculator/test_webapp.py b/caimira/tests/apps/calculator/test_webapp.py index de29246a..32d22352 100644 --- a/caimira/tests/apps/calculator/test_webapp.py +++ b/caimira/tests/apps/calculator/test_webapp.py @@ -144,8 +144,8 @@ class TestCERNGenericPage(tornado.testing.AsyncHTTPTestCase): cern_theme = Path(caimira.apps.calculator.__file__).parent.parent / 'themes' / 'cern' app = caimira.apps.calculator.make_app(theme_dir=cern_theme) pages = [ - (r'/calculator/user-guide', caimira.apps.calculator.GenericExtraPage, {'active_page': 'userguide', 'filename': 'userguide'}), - (r'/about', caimira.apps.calculator.GenericExtraPage, {'active_page': 'about', 'filename': 'about'}), + (r'/calculator/user-guide', caimira.apps.calculator.GenericExtraPage, {'active_page': 'calculator/user-guide', 'filename': 'userguide.html.j2'}), + (r'/about', caimira.apps.calculator.GenericExtraPage, {'active_page': 'about', 'filename': 'about.html.j2'}), ] return tornado.web.Application(pages, **app.settings)