예제 #1
0
파일: models.py 프로젝트: goetzk/tendenci
    def save(self, *args, **kwargs):
        """The save method is overwritten because settings are referenced
        in several different ways. This is the cental command if we
        want to incorporate a process applicable for all those ways.
        Using signals is also feasable however there is a process order
        that must be followed (e.g. caching new value if not equal to old value)
        so we can leave that for a later time.
        """
        try:
            #get the old value as reference for updating the cache
            orig = Setting.objects.get(pk = self.pk)
        except Setting.DoesNotExist:
            orig = None

        #call touch settings if this is the setting theme
        if self.name == 'theme':
            from tendenci.apps.theme.utils import theme_options
            self.input_value = theme_options()
            super(Setting, self).save(*args, **kwargs)
            call_command('clear_theme_cache')
        else:
            super(Setting, self).save(*args, **kwargs)

        #update the cache when value has changed
        if orig and self.value != orig.value:
            from tendenci.apps.site_settings.utils import (delete_setting_cache,
                cache_setting, delete_all_settings_cache)
            from tendenci.apps.site_settings.cache import SETTING_PRE_KEY

            # delete the cache for all the settings to reset the context
            delete_all_settings_cache()
            # delete and set cache for single key and save the value in the database
            delete_setting_cache(self.scope, self.scope_category, self.name)
            cache_setting(self.scope, self.scope_category, self.name, self)
예제 #2
0
    def save(self, *args, **kwargs):
        """The save method is overwritten because settings are referenced
        in several different ways. This is the cental command if we
        want to incorporate a process applicable for all those ways.
        Using signals is also feasable however there is a process order
        that must be followed (e.g. caching new value if not equal to old value)
        so we can leave that for a later time.
        """
        try:
            #get the old value as reference for updating the cache
            orig = Setting.objects.get(pk=self.pk)
        except Setting.DoesNotExist:
            orig = None

        #call touch settings if this is the setting theme
        if self.name == 'theme':
            from tendenci.apps.theme.utils import theme_options
            self.input_value = theme_options()
            super(Setting, self).save(*args, **kwargs)
            call_command('clear_theme_cache')
        else:
            super(Setting, self).save(*args, **kwargs)

        #update the cache when value has changed
        if orig and self.value != orig.value:
            from tendenci.apps.site_settings.utils import (
                delete_setting_cache, cache_setting, delete_all_settings_cache)
            from tendenci.apps.site_settings.cache import SETTING_PRE_KEY

            # delete the cache for all the settings to reset the context
            delete_all_settings_cache()
            # delete and set cache for single key and save the value in the database
            delete_setting_cache(self.scope, self.scope_category, self.name)
            cache_setting(self.scope, self.scope_category, self.name, self)
예제 #3
0
    def get_value(self):
        try:
            if self.is_secure:
                return decrypt(self.value)
        except AttributeError:  #cached setting with no is_secure
            from tendenci.apps.site_settings.utils import (
                delete_setting_cache, delete_all_settings_cache)
            # delete the cache for this setting
            # print("clearing cache for setting: %s" % self.name)
            delete_all_settings_cache()
            delete_setting_cache(self.scope, self.scope_category, self.name)

        return self.value
예제 #4
0
파일: models.py 프로젝트: goetzk/tendenci
    def get_value(self):
        try:
            if self.is_secure:
                try:
                    return decrypt(self.value).decode('utf-8')
                except UnicodeDecodeError:
                    return decrypt(self.value)
        except AttributeError: #cached setting with no is_secure
            from tendenci.apps.site_settings.utils import (
                delete_setting_cache,
                delete_all_settings_cache)
            # delete the cache for this setting
            # print("clearing cache for setting: %s" % self.name)
            delete_all_settings_cache()
            delete_setting_cache(self.scope, self.scope_category, self.name)

        return self.value
예제 #5
0
    def save(self, *args, **kwargs):
        """The save method is overwritten because settings are referenced
        in several different ways. This is the central command if we
        want to incorporate a process applicable for all those ways.
        Using signals is also feasible however there is a process order
        that must be followed (e.g. caching new value if not equal to old value)
        so we can leave that for a later time.
        """
        # Django 1.10 and later no longer accept "true" or "false" strings for
        # BooleanField values.  Since these are used in many existing theme
        # settings files, we must still support them.
        if self.client_editable in ('true', 'false'):
            self.client_editable = self.client_editable == 'true'
        if self.store in ('true', 'false'):
            self.store = self.store == 'true'
        if self.is_secure in ('true', 'false'):
            self.is_secure = self.is_secure == 'true'

        try:
            #get the old value as reference for updating the cache
            orig = Setting.objects.get(pk=self.pk)
        except Setting.DoesNotExist:
            orig = None

        #call touch settings if this is the setting theme
        if self.name == 'theme':
            from tendenci.apps.theme.utils import theme_options
            self.input_value = theme_options()
            super(Setting, self).save(*args, **kwargs)
            call_command('clear_theme_cache')
        else:
            super(Setting, self).save(*args, **kwargs)

        #update the cache when value has changed
        if orig and self.value != orig.value:
            from tendenci.apps.site_settings.utils import (
                delete_setting_cache, cache_setting, delete_all_settings_cache)

            # delete the cache for all the settings to reset the context
            delete_all_settings_cache()
            # delete and set cache for single key and save the value in the database
            delete_setting_cache(self.scope, self.scope_category, self.name)
            cache_setting(self.scope, self.scope_category, self.name, self)