37 |
37 |
def clear_tenants_settings(self):
|
38 |
38 |
self.__dict__['tenants_settings'] = {}
|
39 |
39 |
|
|
40 |
@property
|
|
41 |
def loaders(self):
|
|
42 |
loaders = getattr(self.default_settings, 'TENANT_SETTINGS_LOADERS', [])
|
|
43 |
for loader in loaders:
|
|
44 |
loader_class = import_class(loader)
|
|
45 |
yield loader_class()
|
|
46 |
|
40 |
47 |
def load_tenant_settings(self, wrapped, tenant, tenant_settings,
|
41 |
48 |
last_time):
|
42 |
49 |
'''Load tenant settings from loaders into tenant_settings object, only
|
43 |
50 |
if any of the loaders say it is more recent than last update time'''
|
44 |
|
settings = self.default_settings
|
45 |
51 |
update_time = time.time()
|
46 |
52 |
if last_time and update_time - last_time < 3:
|
47 |
53 |
return tenant_settings, last_time
|
48 |
|
for loader in getattr(settings, 'TENANT_SETTINGS_LOADERS', []):
|
49 |
|
loader_class = import_class(loader)
|
50 |
|
loader_instance = loader_class()
|
51 |
|
new_time = loader_instance.get_new_time(tenant)
|
|
54 |
new = False
|
|
55 |
for loader in self.loaders:
|
|
56 |
new_time = loader.get_new_time(tenant)
|
52 |
57 |
if (not new_time and last_time) \
|
53 |
58 |
or (new_time and not last_time) \
|
54 |
59 |
or (new_time and new_time > last_time):
|
55 |
|
# something is new, call all loaders
|
56 |
|
for loader in settings.TENANT_SETTINGS_LOADERS:
|
57 |
|
loader_class = import_class(loader)
|
58 |
|
loader_instance = loader_class()
|
59 |
|
loader_instance.update_settings(tenant_settings, tenant)
|
60 |
|
return tenant_settings, update_time
|
|
60 |
new = True
|
|
61 |
break
|
|
62 |
|
|
63 |
if new:
|
|
64 |
# something is new, call all loaders
|
|
65 |
for loader in self.loaders:
|
|
66 |
loader.update_settings(tenant_settings, tenant)
|
|
67 |
return tenant_settings, update_time
|
61 |
68 |
return tenant_settings, last_time
|
62 |
69 |
|
63 |
70 |
def get_tenant_settings(self, wrapped, tenant):
|
64 |
|
-
|