Example #1
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.core.theme.utils import theme_options
            self.input_value = theme_options()
            super(Setting, self).save(*args, **kwargs)
            call_command('touch_settings')
        else:
            super(Setting, self).save(*args, **kwargs)

        #update the cache when value has changed
        if orig and self.value != orig.value:
            from tendenci.core.site_settings.utils import (
                delete_setting_cache, cache_setting, delete_all_settings_cache)
            from tendenci.core.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)
Example #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.core.theme.utils import theme_options
         self.input_value = theme_options()
         super(Setting, self).save(*args, **kwargs)
         call_command('touch_settings')
     else:
         super(Setting, self).save(*args, **kwargs)
     
     #update the cache when value has changed
     if orig and self.value != orig.value:
         from tendenci.core.site_settings.utils import (delete_setting_cache,
             cache_setting, delete_all_settings_cache)
         from tendenci.core.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)
Example #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.core.site_settings.utils import (
             delete_setting_cache, cache_setting, 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
Example #4
0
 def get_value(self):
     try:
         if self.is_secure:
             return decrypt(self.value)
     except AttributeError: #cached setting with no is_secure
         from tendenci.core.site_settings.utils import (delete_setting_cache,
             cache_setting, 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