From c3ab8b78b73ea542fd6fec351bd54dfe983592e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 20 Jul 2022 13:36:09 +0200 Subject: [PATCH] template loader: look in additional portal-user locations (#67547) --- hobo/multitenant/settings_loaders.py | 3 +++ hobo/multitenant/template_loader.py | 39 +++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/hobo/multitenant/settings_loaders.py b/hobo/multitenant/settings_loaders.py index 0fedb67..4b45b47 100644 --- a/hobo/multitenant/settings_loaders.py +++ b/hobo/multitenant/settings_loaders.py @@ -131,6 +131,7 @@ class TemplateVars(FileBaseSettingsLoader): def get_hobo_json_variables(cls, hobo_json): variables = hobo_json.get('variables', {}) variables['is_portal_agent'] = False + variables['is_portal_user'] = False authentic_service = None @@ -163,6 +164,8 @@ class TemplateVars(FileBaseSettingsLoader): if 'portal-agent' in service.get('template_name', ''): variables['is_portal_agent'] = True + elif service.get('service-id') == 'combo': + variables['is_portal_user'] = True if getattr(settings, 'HOBO_MANAGER_HOMEPAGE_TITLE_VAR', None): variables['manager_homepage_title'] = variables.get(settings.HOBO_MANAGER_HOMEPAGE_TITLE_VAR) diff --git a/hobo/multitenant/template_loader.py b/hobo/multitenant/template_loader.py index e449e42..db6afaa 100644 --- a/hobo/multitenant/template_loader.py +++ b/hobo/multitenant/template_loader.py @@ -4,6 +4,7 @@ to load templates from them in order, caching the result. """ import hashlib +import itertools from django.conf import settings from django.core.exceptions import ImproperlyConfigured @@ -46,9 +47,41 @@ class FilesystemLoader(DjangoFilesystemLoader): if hasattr(settings, 'TEMPLATE_VARS'): if settings.TEMPLATE_VARS.get('theme'): theme_value = settings.TEMPLATE_VARS['theme'] - known_dirnames = [ - '%s/variants/%s' % (x, theme_value) for x in known_dirnames - ] + known_dirnames + if settings.TEMPLATE_VARS.get('is_portal_agent'): + known_dirnames = ( + list( + itertools.chain( + *[ + ( + '%s/variants/%s/portal-agent' % (x, theme_value), + '%s/variants/%s' % (x, theme_value), + ) + for x in known_dirnames + ] + ) + ) + + known_dirnames + ) + elif settings.TEMPLATE_VARS.get('is_portal_user'): + known_dirnames = ( + list( + itertools.chain( + *[ + ( + '%s/variants/%s/portal-user' % (x, theme_value), + '%s/variants/%s' % (x, theme_value), + ) + for x in known_dirnames + ] + ) + ) + + known_dirnames + ) + else: + known_dirnames = [ + '%s/variants/%s' % (x, theme_value) for x in known_dirnames + ] + known_dirnames + if settings.TEMPLATE_VARS.get('is_portal_agent'): known_dirnames = ['%s/portal-agent' % x for x in known_dirnames] + known_dirnames