def test_templatetag(self): s = Setting() s.site_name = "Example name" s.save() template = Template( '{% load setting_tags %}{% site_setting "site_name" %}') self.assertEquals(template.render(Context({})), "Example name")
def get_context_settings(): result = defaultdict(dict) settings_values = Setting.objects.values('alias', 'value', 'value_type').filter(load_in_template=True) settings_values_group = Setting.objects.values('alias', 'value', 'value_type', 'group__alias').filter( group__load_in_template=True) for item in settings_values_group: grp = item['group__alias'] result[grp][item['alias']] = Setting.get_value_by_type(item['value'], item['value_type']) settings = {instance['alias']: Setting.get_value_by_type(instance['value'], instance['value_type']) for instance in settings_values} result.update(settings) return dict(result)
def update_settings(self, settings, verbosity=1): """ Loop through the settings and add or update them """ required_keys = [ 'scope', 'scope_category', 'name' ] for setting in settings: # check the required fields req_list = [k for k in setting.keys() if k in required_keys] if len(req_list) != len(required_keys): print 'Setting does not have the required fields ... skipping.' continue try: current_setting = Setting.objects.filter(**{ 'name': setting['name'], 'scope': setting['scope'], 'scope_category': setting['scope_category'] })[0] except: current_setting = None # update the setting if (current_setting): # skip the value for the existing setting if setting.has_key('value'): del setting['value'] current_setting.__dict__.update(setting) current_setting.save() print '%s (%s) - updated.' % ( setting['name'], setting['scope_category'] ) else: # insert new_setting = Setting(**setting) new_setting.save() #if verbosity >= 2: print '%s (%s) - added.' % ( setting['name'], setting['scope_category'] )
def get_setting(alias: str, default: typing.Optional[typing.Union[str, int, bool]] = None, get_or_create: bool = False): if get_or_create: assert default, 'default must be set' instance, _ = Setting.objects.values('value', 'value_type').get_or_create( alias=alias, defaults=dict( alias=alias, value=str(default), value_type=dict(VALUES_TYPE_MAP).get(type(default)) ) ) return Setting.get_value_by_type(instance['value'], instance['value_type']) try: instance = Setting.objects.values('value', 'value_type').get(alias=alias) return Setting.get_value_by_type(instance['value'], instance['value_type']) except Setting.DoesNotExist: return default
def add_settings(self, settings): """ Loop through the settings and add them """ for setting in settings: new_setting = Setting(**setting) exists = Setting.objects.filter(**{ 'name': new_setting.name, 'scope': new_setting.scope, 'scope_category': new_setting.scope_category }).exists() if (exists): print '%s (%s) already exists ... skipping.' % ( new_setting.name, new_setting.scope_category ) else: print '%s (%s) ... done.' % ( new_setting.name, new_setting.scope_category ) new_setting.save()
def test_templatetag(self): s = Setting() s.site_name = "Example name" s.save() template = Template('{% load setting_tags %}{% site_setting "site_name" %}') self.assertEquals(template.render(Context({})), "Example name")
def test_setting_addition(self): s = Setting() s.site_name = "Example name" s.save() self.assertEquals(get_setting('site_name',''), "Example name")
def test_setting_addition(self): s = Setting() s.site_name = "Example name" s.save() self.assertEquals(get_setting('site_name', ''), "Example name")