multitenant: add loader to define MELLON_LOGIN_HINTS setting (#42191)
This commit is contained in:
parent
8b1c24db2b
commit
5370064071
|
@ -316,6 +316,7 @@ if PROJECT_NAME != 'wcs':
|
|||
'hobo.multitenant.settings_loaders.CookieNames',
|
||||
'hobo.multitenant.settings_loaders.SettingsJSON',
|
||||
'hobo.multitenant.settings_loaders.SettingsVars',
|
||||
'hobo.multitenant.settings_loaders.BackofficeLoginHint',
|
||||
)
|
||||
|
||||
# templates in <tenant>/templates
|
||||
|
|
|
@ -416,3 +416,19 @@ class SettingsPy(FileBaseSettingsLoader):
|
|||
|
||||
def update_settings_from_path(self, tenant_settings, path):
|
||||
execfile(path, DictAdapter(tenant_settings)) # yep, it's dangerous
|
||||
|
||||
|
||||
class BackofficeLoginHint(FileBaseSettingsLoader):
|
||||
FILENAME = 'hobo.json'
|
||||
|
||||
def update_settings_from_path(self, tenant_settings, path):
|
||||
with open(path) as f:
|
||||
hobo_json = json.load(f)
|
||||
for service in hobo_json.get('services'):
|
||||
if service.get('this'):
|
||||
if service.get('service-id') in ('welco', 'bijoe', 'hobo') or \
|
||||
'portal-agent' in service.get('template_name', ''):
|
||||
tenant_settings.MELLON_LOGIN_HINTS = ['always_backoffice']
|
||||
else:
|
||||
tenant_settings.MELLON_LOGIN_HINTS = ['backoffice']
|
||||
break
|
||||
|
|
|
@ -5,8 +5,9 @@ import pytest
|
|||
from django.conf import UserSettingsHolder
|
||||
|
||||
from hobo.deploy.utils import get_hobo_json
|
||||
from hobo.environment.models import Authentic
|
||||
from hobo.environment.models import Authentic, Combo
|
||||
from hobo.multitenant.settings_loaders import Authentic as AuthenticLoader
|
||||
from hobo.multitenant.settings_loaders import BackofficeLoginHint
|
||||
from hobo.profile.models import AttributeDefinition
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
@ -55,3 +56,45 @@ def test_authentic_update_settings_from_path(tmpdir):
|
|||
assert tenant_settings.A2_PROFILE_FIELDS == profile_fields
|
||||
assert tenant_settings.A2_REQUIRED_FIELDS == [u'first_name', u'last_name', u'email']
|
||||
assert tenant_settings.A2_REGISTRATION_FIELDS == [u'first_name', u'last_name']
|
||||
|
||||
|
||||
def test_mellon_backoffice_login_hint_setting_from_path(tmpdir):
|
||||
c = Combo(title='combo', slug='portal', base_url='http://portal.example.net')
|
||||
c.save()
|
||||
|
||||
env = get_hobo_json()
|
||||
# simulate hobo.json for this instance
|
||||
env['services'][0]['this'] = True
|
||||
|
||||
path = os.path.join(str(tmpdir), 'hobo.json')
|
||||
json.dump(env, open(path, 'w'))
|
||||
|
||||
# call settings loaders
|
||||
tenant_settings = UserSettingsHolder({})
|
||||
assert not getattr(tenant_settings, 'MELLON_LOGIN_HINTS', False)
|
||||
|
||||
loader = BackofficeLoginHint()
|
||||
loader.update_settings_from_path(tenant_settings, path)
|
||||
|
||||
assert tenant_settings.MELLON_LOGIN_HINTS == ['backoffice']
|
||||
|
||||
|
||||
def test_mellon_always_backoffice_login_hint_setting_from_path(tmpdir):
|
||||
c = Combo(title='combo', slug='portal-agent', base_url='http://agent.example.net',
|
||||
template_name='portal-agent')
|
||||
c.save()
|
||||
|
||||
env = get_hobo_json()
|
||||
# simulate hobo.json for this instance
|
||||
env['services'][0]['this'] = True
|
||||
|
||||
path = os.path.join(str(tmpdir), 'hobo.json')
|
||||
json.dump(env, open(path, 'w'))
|
||||
|
||||
# call settings loaders
|
||||
tenant_settings = UserSettingsHolder({})
|
||||
assert not getattr(tenant_settings, 'MELLON_LOGIN_HINTS', False)
|
||||
|
||||
loader = BackofficeLoginHint()
|
||||
loader.update_settings_from_path(tenant_settings, path)
|
||||
assert tenant_settings.MELLON_LOGIN_HINTS == ['always_backoffice']
|
||||
|
|
Loading…
Reference in New Issue