0001-multitenant-add-legacy-urls-settings-loader-64347.patch
debian/debian_config_common.py | ||
---|---|---|
310 | 310 |
TENANT_SETTINGS_LOADERS = ( |
311 | 311 |
'hobo.multitenant.settings_loaders.TemplateVars', |
312 | 312 |
'hobo.multitenant.settings_loaders.KnownServices', |
313 |
'hobo.multitenant.settings_loaders.LegacyURLSSettings', |
|
313 | 314 |
'hobo.multitenant.settings_loaders.ThemeSettings', |
314 | 315 |
'hobo.multitenant.settings_loaders.CORSSettings', |
315 | 316 |
'hobo.multitenant.settings_loaders.SharedThemeSettings', |
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 |
if not service.get('legacy_urls'): |
|
256 |
continue |
|
257 |
base_url = service.get('base_url') |
|
258 |
if not base_url: |
|
259 |
continue |
|
260 |
hostname = urllib.parse.urlparse(base_url).netloc |
|
261 |
for legacy_url in service.get('legacy_urls'): |
|
262 |
old_base_url = urllib.parse.urlparse(legacy_url['base_url']) |
|
263 |
domain_mapping[old_base_url.netloc] = hostname |
|
264 | ||
265 |
tenant_settings.LEGACY_URLS_MAPPING = domain_mapping |
|
266 | ||
267 | ||
247 | 268 |
class ThemeSettings(SettingsDictUpdateMixin): |
248 | 269 |
def get_new_time(self, tenant): |
249 | 270 |
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 |
- |