[WIP] middleware behavior, retrieval through models

This commit is contained in:
Paul Marillonnet 2023-01-12 10:13:03 +01:00
parent cada3f164d
commit 3e7ecae49e
1 changed files with 20 additions and 1 deletions

View File

@ -51,6 +51,9 @@ class CUTMiddleware(MiddlewareMixin):
request.domain = None
else:
if domain not in self.MATCHES:
pattern_found = False
# first search in legacy partner definition
for partner_def in getattr(settings, 'A2_CUT_PARTNERS', []):
patterns = partner_def.get('domains', [])
for pattern in patterns:
@ -60,8 +63,24 @@ class CUTMiddleware(MiddlewareMixin):
continue
self.MATCHES[domain] = partner_def
request.session['cut_domain'] = domain
pattern_found = True
break
else:
# then in model-based partner definition
if not pattern_found:
for partner_object in CUTPartner.objects.all():
patterns = partner_object.domains
for pattern in patterns:
if same_domain(domain, pattern):
break
else:
continue
self.MATCHES[domain] = partner_object.as_dict()
request.session['cut_domain'] = domain
pattern_found = True
break
if not pattern_found:
# when adding a domain, you must reload, must thing of emptying the cache
# sometimes
self.MATCHES[domain] = None