Projet

Général

Profil

0002-factorize-loader-instance-creation-33563.patch

Benjamin Dauvergne, 30 mai 2019 09:11

Télécharger (2,54 ko)

Voir les différences:

Subject: [PATCH 2/6] factorize loader instance creation (#33563)

 hobo/multitenant/settings.py | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)
hobo/multitenant/settings.py
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
-