Projet

Général

Profil

0001-multitenant-add-legacy-urls-settings-loader-64347.patch

Emmanuel Cazenave, 20 avril 2022 17:55

Télécharger (4,01 ko)

Voir les différences:

Subject: [PATCH] multitenant: add legacy urls settings loader (#64347)

 debian/debian_config_common.py       |  1 +
 hobo/multitenant/settings_loaders.py | 19 +++++++++++++++++++
 tests_multitenant/conftest.py        |  1 +
 tests_multitenant/settings.py        |  1 +
 tests_multitenant/test_settings.py   | 12 ++++++++++++
 5 files changed, 34 insertions(+)
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
-