Esempio n. 1
0
 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")
Esempio n. 2
0
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)
Esempio n. 3
0
    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']
                )
Esempio n. 4
0
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
Esempio n. 5
0
    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()
Esempio n. 6
0
 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")
Esempio n. 7
0
 def test_setting_addition(self):
 	s = Setting()
 	s.site_name = "Example name"
 	s.save()
 	self.assertEquals(get_setting('site_name',''), "Example name")
Esempio n. 8
0
 def test_setting_addition(self):
     s = Setting()
     s.site_name = "Example name"
     s.save()
     self.assertEquals(get_setting('site_name', ''), "Example name")