def METHOD_NAME(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).METHOD_NAME(*args, **kwargs)
        call_command('clear_theme_cache')
    else:
        super(Setting, self).METHOD_NAME(*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)