0001-multitenant-add-legacy-urls-settings-loader-64347.patch
debian/debian_config_common.py | ||
---|---|---|
318 | 318 |
'hobo.multitenant.settings_loaders.SettingsJSON', |
319 | 319 |
'hobo.multitenant.settings_loaders.SettingsVars', |
320 | 320 |
'hobo.multitenant.settings_loaders.BackofficeLoginHint', |
321 |
'hobo.multitenant.settings_loaders.LegacyURLSSettings', |
|
321 | 322 |
) |
322 | 323 | |
323 | 324 |
# templates in <tenant>/templates |
hobo/multitenant/settings_loaders.py | ||
---|---|---|
244 | 244 |
tenant_settings.CORS_ORIGIN_WHITELIST = whitelist |
245 | 245 | |
246 | 246 | |
247 |
class LegacyURLSSettings(FileBaseSettingsLoader): |
|
248 |
FILENAME = 'hobo.json' |
|
249 | ||
250 |
def update_settings_from_path(self, tenant_settings, path): |
|
251 |
domain_mapping = {} |
|
252 |
with open(path) as f: |
|
253 |
hobo_json = json.load(f) |
|
254 |
for service in hobo_json.get('services', []): |
|
255 |
base_url = service.get('base_url') |
|
256 |
if not base_url: |
|
257 |
continue |
|
258 |
hostname = urllib.parse.urlparse(base_url).netloc |
|
259 |
for legacy_url in service.get('legacy_urls', []): |
|
260 |
old_base_url = urllib.parse.urlparse(legacy_url['base_url']) |
|
261 |
domain_mapping[old_base_url.netloc] = hostname |
|
262 | ||
263 |
tenant_settings.LEGACY_URLS_MAPPING = domain_mapping |
|
264 | ||
265 | ||
247 | 266 |
class ThemeSettings(SettingsDictUpdateMixin): |
248 | 267 |
def get_new_time(self, tenant): |
249 | 268 |
return 0 |
tests_multitenant/conftest.py | ||
---|---|---|
67 | 67 |
'secret_key': 'abcde', |
68 | 68 |
'service-id': 'authentic', |
69 | 69 |
'base_url': 'http://other.example.net', |
70 |
'legacy_urls': [{'base_url': 'http://olda2.example.net'}], |
|
70 | 71 |
}, |
71 | 72 |
{ |
72 | 73 |
'slug': 'another', |
tests_multitenant/settings.py | ||
---|---|---|
90 | 90 |
'hobo.multitenant.settings_loaders.CookieNames', |
91 | 91 |
'hobo.multitenant.settings_loaders.SettingsJSON', |
92 | 92 |
'hobo.multitenant.settings_loaders.SettingsVars', |
93 |
'hobo.multitenant.settings_loaders.LegacyURLSSettings', |
|
93 | 94 |
) |
94 | 95 | |
95 | 96 |
GLOBAL1 = 0 |
tests_multitenant/test_settings.py | ||
---|---|---|
227 | 227 |
) |
228 | 228 | |
229 | 229 | |
230 |
def test_legacy_urls_mapping(tenants, settings): |
|
231 | ||
232 |
settings.clear_tenants_settings() |
|
233 |
settings.SETTINGS_MODULE = 'fake.settings' |
|
234 | ||
235 |
for tenant in tenants: |
|
236 |
with tenant_context(tenant): |
|
237 |
hobo_json = tenant.get_hobo_json() |
|
238 |
assert hasattr(settings, 'LEGACY_URLS_MAPPING') |
|
239 |
assert settings.LEGACY_URLS_MAPPING['olda2.example.net'] == 'other.example.net' |
|
240 | ||
241 | ||
230 | 242 |
def test_unique_cookies(tenants, settings): |
231 | 243 |
settings.clear_tenants_settings() |
232 | 244 | |
233 |
- |