factorize loader instance creation (#33563)
This commit is contained in:
parent
f3bea0612f
commit
0a7f6f9b5d
|
@ -37,27 +37,34 @@ class TenantSettingsWrapper(object):
|
|||
def clear_tenants_settings(self):
|
||||
self.__dict__['tenants_settings'] = {}
|
||||
|
||||
@property
|
||||
def loaders(self):
|
||||
loaders = getattr(self.default_settings, 'TENANT_SETTINGS_LOADERS', [])
|
||||
for loader in loaders:
|
||||
loader_class = import_class(loader)
|
||||
yield loader_class()
|
||||
|
||||
def load_tenant_settings(self, wrapped, tenant, tenant_settings,
|
||||
last_time):
|
||||
'''Load tenant settings from loaders into tenant_settings object, only
|
||||
if any of the loaders say it is more recent than last update time'''
|
||||
settings = self.default_settings
|
||||
update_time = time.time()
|
||||
if last_time and update_time - last_time < 3:
|
||||
return tenant_settings, last_time
|
||||
for loader in getattr(settings, 'TENANT_SETTINGS_LOADERS', []):
|
||||
loader_class = import_class(loader)
|
||||
loader_instance = loader_class()
|
||||
new_time = loader_instance.get_new_time(tenant)
|
||||
new = False
|
||||
for loader in self.loaders:
|
||||
new_time = loader.get_new_time(tenant)
|
||||
if (not new_time and last_time) \
|
||||
or (new_time and not last_time) \
|
||||
or (new_time and new_time > last_time):
|
||||
# something is new, call all loaders
|
||||
for loader in settings.TENANT_SETTINGS_LOADERS:
|
||||
loader_class = import_class(loader)
|
||||
loader_instance = loader_class()
|
||||
loader_instance.update_settings(tenant_settings, tenant)
|
||||
return tenant_settings, update_time
|
||||
new = True
|
||||
break
|
||||
|
||||
if new:
|
||||
# something is new, call all loaders
|
||||
for loader in self.loaders:
|
||||
loader.update_settings(tenant_settings, tenant)
|
||||
return tenant_settings, update_time
|
||||
return tenant_settings, last_time
|
||||
|
||||
def get_tenant_settings(self, wrapped, tenant):
|
||||
|
|
Loading…
Reference in New Issue