Пример #1
0
def app_settings(request, app_label, template='dbsettings/app_settings.html'):
    # Determine what set of settings this editor is used for
    if app_label is None:
        settings = loading.get_all_settings()
        title = _('Site settings')
    else:
        settings = loading.get_app_settings(app_label)
        title = _('%(app)s settings') % {'app': capfirst(app_label)}

    # Create an editor customized for the current user
    editor = forms.customized_editor(request.user, settings)

    if request.method == 'POST':
        # Populate the form with user-submitted data
        form = editor(request.POST.copy(), request.FILES)
        if form.is_valid():
            form.full_clean()

            for name, value in form.cleaned_data.items():
                key = forms.RE_FIELD_NAME.match(name).groups()
                setting = loading.get_setting(*key)
                try:
                    storage = loading.get_setting_storage(*key)
                    current_value = setting.to_python(storage.value)
                except:
                    current_value = None

                if current_value != setting.to_python(value):
                    args = key + (value, )
                    loading.set_setting_value(*args)

                    # Give user feedback as to which settings were changed
                    if setting.class_name:
                        location = setting.class_name
                    else:
                        location = setting.module_name
                    update_msg = (_('Updated %(desc)s on %(location)s') % {
                        'desc': str(setting.description),
                        'location': location
                    })
                    messages.add_message(request, messages.INFO, update_msg)

            return HttpResponseRedirect(request.path)
    else:
        # Leave the form populated with current setting values
        form = editor()

    return render(request, template, {
        'title': title,
        'no_settings': len(settings) == 0,
        'form': form,
    })
Пример #2
0
    def install_settings(app, created_models, verbosity=2, **kwargs):
        printed = False

        for class_name, attribute_name, value in defaults:
            if not get_setting_storage(app.__name__, class_name, attribute_name):
                if verbosity >= 2 and not printed:
                    # Print this message only once, and only if applicable
                    print("Installing default settings for %s" % app_label)
                    printed = True
                try:
                    set_setting_value(app.__name__, class_name, attribute_name, value)
                except:
                    raise ImproperlyConfigured("%s requires dbsettings." % app_label)
Пример #3
0
    def install_settings(app, created_models, verbosity=2):
        printed = False

        for class_name, attribute_name, value in defaults:
            if not get_setting_storage(app.__name__, class_name, attribute_name):
                if verbosity >= 2 and not printed:
                    # Print this message only once, and only if applicable
                    print "Installing default settings for %s" % app_label
                    printed = True
                try:
                    set_setting_value(app.__name__, class_name, attribute_name, value)
                except:
                    raise ImproperlyConfigured("%s requires dbsettings." % app_label)
Пример #4
0
def app_settings(request, app_label, template='dbsettings/app_settings.html'):
    # Determine what set of settings this editor is used for
    if app_label is None:
        settings = loading.get_all_settings()
        title = _('Site settings')
    else:
        settings = loading.get_app_settings(app_label)
        title = _('%(app)s settings') % {'app': capfirst(app_label)}

    # Create an editor customized for the current user
    editor = forms.customized_editor(request.user, settings)

    if request.method == 'POST':
        # Populate the form with user-submitted data
        form = editor(request.POST.copy(), request.FILES)
        if form.is_valid():
            form.full_clean()

            for name, value in form.cleaned_data.items():
                key = forms.RE_FIELD_NAME.match(name).groups()
                setting = loading.get_setting(*key)
                try:
                    storage = loading.get_setting_storage(*key)
                    current_value = setting.to_python(storage.value)
                except:
                    current_value = None

                if current_value != setting.to_python(value):
                    args = key + (value,)
                    loading.set_setting_value(*args)

                    # Give user feedback as to which settings were changed
                    if setting.class_name:
                        location = setting.class_name
                    else:
                        location = setting.module_name
                    update_msg = (_('Updated %(desc)s on %(location)s') %
                                  {'desc': six.text_type(setting.description),
                                   'location': location})
                    messages.add_message(request, messages.INFO, update_msg)

            # Problem with settings not updated in form fields on save causing user errors. Sending to admin dash instead
            return HttpResponseRedirect(reverse_lazy('admin:index'))
    else:
        # Leave the form populated with current setting values
        form = editor()

    return render_to_response(template, {
        'title': title,
        'form': form,
    }, context_instance=RequestContext(request))
Пример #5
0
def app_settings(request, app_label, template='dbsettings/app_settings.html'):
    # Determine what set of settings this editor is used for
    if app_label is None:
        settings = loading.get_all_settings()
        title = 'Site settings'
    else:
        settings = loading.get_app_settings(app_label)
        title = '%s settings' % capfirst(app_label)

    # Create an editor customized for the current user
    editor = forms.customized_editor(request.user, settings)

    if request.method == 'POST':
        # Populate the form with user-submitted data
        form = editor(request.POST.copy(), request.FILES)
        if form.is_valid():
            form.full_clean()

            for name, value in form.cleaned_data.items():
                key = forms.re_field_name.match(name).groups()
                setting = loading.get_setting(*key)
                try:
                    storage = loading.get_setting_storage(*key)
                    current_value = setting.to_python(storage.value)
                except:
                    current_value = None

                if current_value != setting.to_python(value):
                    args = key + (value, )
                    loading.set_setting_value(*args)

                    # Give user feedback as to which settings were changed
                    if setting.class_name:
                        location = setting.class_name
                    else:
                        location = setting.module_name
                    update_msg = u'Updated %s on %s' % (unicode(
                        setting.description), location)
                    messages.add_message(request, messages.INFO, update_msg)

            return HttpResponseRedirect(request.path)
    else:
        # Leave the form populated with current setting values
        form = editor()

    return render_to_response(template, {
        'title': title,
        'form': form,
    },
                              context_instance=RequestContext(request))
Пример #6
0
def app_settings(request, app_label, template='dbsettings/app_settings.html'):
    # Determine what set of settings this editor is used for
    if app_label is None:
        settings = loading.get_all_settings()
        title = _('Site settings')
    else:
        settings = loading.get_app_settings(app_label)
        title = _('%(app)s settings') % {'app': capfirst(app_label)}

    # Create an editor customized for the current user
    editor = forms.customized_editor(request.user, settings)

    if request.method == 'POST':
        # Populate the form with user-submitted data
        form = editor(request.POST.copy(), request.FILES)
        if form.is_valid():
            form.full_clean()

            n_changed = 0
            for name, value in form.cleaned_data.items():
                key = forms.RE_FIELD_NAME.match(name).groups()
                setting = loading.get_setting(*key)
                try:
                    storage = loading.get_setting_storage(*key)
                    current_value = setting.to_python(storage.value)
                except Exception, e:
                    log.info("An exception occurred trying to convert %s, "
                        "with value %s, to python.", name, value, exc_info=True)
                    current_value = None

                if current_value != setting.to_python(value):
                    args = key + (value,)
                    loading.set_setting_value(*args)

                    # Give user feedback as to which settings were changed
                    if setting.class_name:
                        location = setting.class_name
                    else:
                        location = setting.module_name
                    update_msg = (_(u'Updated %(desc)s on %(location)s') %
                                  {'desc': unicode(setting.description), 'location': location})
                    messages.add_message(request, messages.INFO, update_msg)
                    n_changed += 1

            if not n_changed:
                no_update_msg = (_(u'Nothing was changed'))
                messages.add_message(request, messages.INFO, no_update_msg)

            return HttpResponseRedirect(request.path)
Пример #7
0
def app_settings(request, app_label, template='dbsettings/app_settings.html'):
    # Determine what set of settings this editor is used for
    if app_label is None:
        settings = loading.get_all_settings()
        title = 'Site settings'
    else:
        settings = loading.get_app_settings(app_label)
        title = '%s settings' % capfirst(app_label)

    # Create an editor customized for the current user
    editor = forms.customized_editor(request.user, settings)

    if request.method == 'POST':
        # Populate the form with user-submitted data
        form = editor(request.POST.copy(), request.FILES)
        if form.is_valid():
            form.full_clean()

            for name, value in form.cleaned_data.items():
                key = forms.re_field_name.match(name).groups()
                setting = loading.get_setting(*key)
                try:
                    storage = loading.get_setting_storage(*key)
                    current_value = setting.to_python(storage.value)
                except:
                    current_value = None

                if current_value != setting.to_python(value):
                    args = key + (value,)
                    loading.set_setting_value(*args)

                    # Give user feedback as to which settings were changed
                    if setting.class_name:
                        location = setting.class_name
                    else:
                        location = setting.module_name
                    update_msg = u'Updated %s on %s' % (unicode(setting.description), location)
                    messages.add_message(request, messages.INFO, update_msg )

            return HttpResponseRedirect(request.path)
    else:
        # Leave the form populated with current setting values
        form = editor()

    return render_to_response(template, {
        'title': title,
        'form': form,
    }, context_instance=RequestContext(request))
Пример #8
0
Файл: tests.py Проект: ewe2/G2
    def test_settings(self):
        "Make sure settings groups are initialized properly"

        # Settings already in the database are available immediately
        self.assertEqual(Populated.settings.boolean, True)
        self.assertEqual(Populated.settings.integer, 42)
        self.assertEqual(Populated.settings.string, 'Ni!')

        # Module settings are kept separate from model settings
        self.assertEqual(module_settings.boolean, False)
        self.assertEqual(module_settings.integer, 14)
        self.assertEqual(module_settings.string, 'Module')

        # Settings can be added together
        self.assertEqual(Combined.settings.boolean, False)
        self.assertEqual(Combined.settings.integer, 1138)
        self.assertEqual(Combined.settings.string, 'THX')
        self.assertEqual(Combined.settings.enabled, True)

        # Settings not in the database use empty defaults
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, None)
        self.assertEqual(Unpopulated.settings.string, '')

        # Settings should be retrieved in the order of definition
        self.assertEqual(Populated.settings.keys(),
                         ['boolean', 'integer', 'string'])
        self.assertEqual(Combined.settings.keys(),
                         ['boolean', 'integer', 'string', 'enabled'])

        # Values should be coerced to the proper Python types
        self.assert_(isinstance(Populated.settings.boolean, bool))
        self.assert_(isinstance(Populated.settings.integer, int))
        self.assert_(isinstance(Populated.settings.string, basestring))

        # Settings can not be accessed directly from models, only instances
        self.assertRaises(AttributeError, lambda: Populated().settings)
        self.assertRaises(AttributeError, lambda: Unpopulated().settings)

        # Updates are reflected in the live settings
        loading.set_setting_value('dbsettings.tests', 'Unpopulated', 'boolean',
                                  True)
        loading.set_setting_value('dbsettings.tests', 'Unpopulated', 'integer',
                                  13)
        loading.set_setting_value('dbsettings.tests', 'Unpopulated', 'string',
                                  'Friday')
        self.assertEqual(Unpopulated.settings.boolean, True)
        self.assertEqual(Unpopulated.settings.integer, 13)
        self.assertEqual(Unpopulated.settings.string, 'Friday')

        # But they can't be modified in-place
        self.assertRaises(AttributeError,
                          curry(setattr, Unpopulated.settings, 'integer', 10))
Пример #9
0
    def test_settings(self):
        "Make sure settings groups are initialized properly"

        # Settings already in the database are available immediately
        self.assertEqual(Populated.settings.boolean, True)
        self.assertEqual(Populated.settings.integer, 42)
        self.assertEqual(Populated.settings.string, 'Ni!')

        # Module settings are kept separate from model settings
        self.assertEqual(module_settings.boolean, False)
        self.assertEqual(module_settings.integer, 14)
        self.assertEqual(module_settings.string, 'Module')

        # Settings can be added together
        self.assertEqual(Combined.settings.boolean, False)
        self.assertEqual(Combined.settings.integer, 1138)
        self.assertEqual(Combined.settings.string, 'THX')
        self.assertEqual(Combined.settings.enabled, True)

        # Settings not in the database use empty defaults
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, None)
        self.assertEqual(Unpopulated.settings.string, '')

        # Settings should be retrieved in the order of definition
        self.assertEqual(Populated.settings.keys(), ['boolean', 'integer', 'string'])
        self.assertEqual(Combined.settings.keys(), ['boolean', 'integer', 'string', 'enabled'])

        # Values should be coerced to the proper Python types
        self.assert_(isinstance(Populated.settings.boolean, bool))
        self.assert_(isinstance(Populated.settings.integer, int))
        self.assert_(isinstance(Populated.settings.string, basestring))

        # Settings can not be accessed directly from models, only instances
        self.assertRaises(AttributeError, lambda: Populated().settings)
        self.assertRaises(AttributeError, lambda: Unpopulated().settings)

        # Updates are reflected in the live settings
        loading.set_setting_value('dbsettings.tests', 'Unpopulated', 'boolean', True)
        loading.set_setting_value('dbsettings.tests', 'Unpopulated', 'integer', 13)
        loading.set_setting_value('dbsettings.tests', 'Unpopulated', 'string', 'Friday')
        self.assertEqual(Unpopulated.settings.boolean, True)
        self.assertEqual(Unpopulated.settings.integer, 13)
        self.assertEqual(Unpopulated.settings.string, 'Friday')

        # And they can be modified in-place
        Unpopulated.settings.boolean = False
        Unpopulated.settings.integer = 42
        Unpopulated.settings.string = 'Caturday'
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, 42)
        self.assertEqual(Unpopulated.settings.string, 'Caturday')
Пример #10
0
    def test_settings(self):
        "Make sure settings groups are initialized properly"

        # Settings already in the database are available immediately
        self.assertEqual(Populated.settings.boolean, True)
        self.assertEqual(Populated.settings.integer, 42)
        self.assertEqual(Populated.settings.string, 'Ni!')
        self.assertEqual(Populated.settings.list_semi_colon, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Populated.settings.list_comma, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])

        # Module settings are kept separate from model settings
        self.assertEqual(module_settings.boolean, False)
        self.assertEqual(module_settings.integer, 14)
        self.assertEqual(module_settings.string, 'Module')
        self.assertEqual(module_settings.list_semi_colon, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(module_settings.list_comma, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])

        # Settings can be added together
        self.assertEqual(Combined.settings.boolean, False)
        self.assertEqual(Combined.settings.integer, 1138)
        self.assertEqual(Combined.settings.string, 'THX')
        self.assertEqual(Combined.settings.enabled, True)
        self.assertEqual(Combined.settings.list_semi_colon, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Combined.settings.list_comma, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])

        # Settings not in the database use empty defaults
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, None)
        self.assertEqual(Unpopulated.settings.string, '')
        self.assertEqual(Unpopulated.settings.list_semi_colon, [])
        self.assertEqual(Unpopulated.settings.list_comma, [])

        # Settings should be retrieved in the order of definition
        self.assertEqual(Populated.settings.keys(), 
                         ['boolean', 'integer', 'string', 'list_semi_colon',
                          'list_comma'])
        self.assertEqual(Combined.settings.keys(), 
                         ['boolean', 'integer', 'string', 'list_semi_colon',
                          'list_comma', 'enabled'])

        # Values should be coerced to the proper Python types
        self.assert_(isinstance(Populated.settings.boolean, bool))
        self.assert_(isinstance(Populated.settings.integer, int))
        self.assert_(isinstance(Populated.settings.string, basestring))

        # Settings can not be accessed directly from models, only instances
        self.assertRaises(AttributeError, lambda: Populated().settings)
        self.assertRaises(AttributeError, lambda: Unpopulated().settings)

        # Updates are reflected in the live settings
        loading.set_setting_value('dbsettings.tests.tests', 'Unpopulated', 'boolean', True)
        loading.set_setting_value('dbsettings.tests.tests', 'Unpopulated', 'integer', 13)
        loading.set_setting_value('dbsettings.tests.tests', 'Unpopulated', 'string', 'Friday')
        loading.set_setting_value('dbsettings.tests.tests', 'Unpopulated', 'list_semi_colon', '[email protected];[email protected]')
        loading.set_setting_value('dbsettings.tests.tests', 'Unpopulated', 'list_comma', '[email protected],[email protected]')
        self.assertEqual(Unpopulated.settings.boolean, True)
        self.assertEqual(Unpopulated.settings.integer, 13)
        self.assertEqual(Unpopulated.settings.string, 'Friday')
        self.assertEqual(Unpopulated.settings.list_semi_colon, ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.list_comma, ['*****@*****.**', '*****@*****.**'])

        # And they can be modified in-place
        Unpopulated.settings.boolean = False
        Unpopulated.settings.integer = 42
        Unpopulated.settings.string = 'Caturday'
        # Test correct stripping while we're at it.
        Unpopulated.settings.list_semi_colon = '[email protected]; [email protected]'
        Unpopulated.settings.list_comma = '[email protected] ,[email protected]'
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, 42)
        self.assertEqual(Unpopulated.settings.string, 'Caturday')
        self.assertEqual(Unpopulated.settings.list_semi_colon, ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.list_comma, ['*****@*****.**', '*****@*****.**'])
 def __set__(self, instance, value):
     current_value = self.__get__(instance)
     python_value = value if value is None else self.to_python(value)
     if python_value != current_value:
         set_setting_value(*(self.key + (value,)))
Пример #12
0
 def setUp(self):
     # Standard test fixtures don't update the in-memory cache.
     # So we have to do it ourselves this time.
     loading.set_setting_value('dbsettings.tests.tests', 'Populated', 'boolean', True)
     loading.set_setting_value('dbsettings.tests.tests', 'Populated', 'integer', 42)
     loading.set_setting_value('dbsettings.tests.tests', 'Populated', 'string', 'Ni!')
     loading.set_setting_value('dbsettings.tests.tests', 'Populated', 'list_semi_colon', '[email protected];[email protected];[email protected]')
     loading.set_setting_value('dbsettings.tests.tests', 'Populated', 'list_comma', '[email protected],[email protected],[email protected]')
     loading.set_setting_value('dbsettings.tests.tests', '', 'boolean', False)
     loading.set_setting_value('dbsettings.tests.tests', '', 'integer', 14)
     loading.set_setting_value('dbsettings.tests.tests', '', 'string', 'Module')
     loading.set_setting_value('dbsettings.tests.tests', '', 'list_semi_colon', '[email protected];[email protected];[email protected]')
     loading.set_setting_value('dbsettings.tests.tests', '', 'list_comma', '[email protected],[email protected],[email protected]')
     loading.set_setting_value('dbsettings.tests.tests', 'Combined', 'boolean', False)
     loading.set_setting_value('dbsettings.tests.tests', 'Combined', 'integer', 1138)
     loading.set_setting_value('dbsettings.tests.tests', 'Combined', 'string', 'THX')
     loading.set_setting_value('dbsettings.tests.tests', 'Combined', 'list_semi_colon', '[email protected];[email protected];[email protected]')
     loading.set_setting_value('dbsettings.tests.tests', 'Combined', 'list_comma', '[email protected],[email protected],[email protected]')
     loading.set_setting_value('dbsettings.tests.tests', 'Combined', 'enabled', True)
Пример #13
0
 def __set__(self, instance, value):
     current_value = self.__get__(instance)
     python_value = value if value is None else self.to_python(value)
     if python_value != current_value:
         set_setting_value(*(self.key + (value,)))
Пример #14
0
 def setUp(self):
     # Standard test fixtures don't update the in-memory cache.
     # So we have to do it ourselves this time.
     loading.set_setting_value('dbsettings.tests', 'Populated', 'boolean', True)
     loading.set_setting_value('dbsettings.tests', 'Populated', 'integer', 42)
     loading.set_setting_value('dbsettings.tests', 'Populated', 'string', 'Ni!')
     loading.set_setting_value('dbsettings.tests', '', 'boolean', False)
     loading.set_setting_value('dbsettings.tests', '', 'integer', 14)
     loading.set_setting_value('dbsettings.tests', '', 'string', 'Module')
     loading.set_setting_value('dbsettings.tests', 'Combined', 'boolean', False)
     loading.set_setting_value('dbsettings.tests', 'Combined', 'integer', 1138)
     loading.set_setting_value('dbsettings.tests', 'Combined', 'string', 'THX')
     loading.set_setting_value('dbsettings.tests', 'Combined', 'enabled', True)
Пример #15
0
    def setUp(self):
        super(SettingsTestCase, self).setUp()
        # Standard test fixtures don't update the in-memory cache.
        # So we have to do it ourselves this time.

        loading.set_setting_value(MODULE_NAME, 'Populated', 'boolean', True)
        loading.set_setting_value(MODULE_NAME, 'Populated', 'integer', 42)
        loading.set_setting_value(MODULE_NAME, 'Populated', 'string', 'Ni!')
        loading.set_setting_value(MODULE_NAME, 'Populated', 'list_semi_colon',
                                  '[email protected];[email protected];[email protected]')
        loading.set_setting_value(MODULE_NAME, 'Populated', 'list_comma',
                                  '[email protected],[email protected],[email protected]')
        loading.set_setting_value(MODULE_NAME, 'Populated', 'date',
                                  '2012-06-28')
        loading.set_setting_value(MODULE_NAME, 'Populated', 'time', '16:19:17')
        loading.set_setting_value(MODULE_NAME, 'Populated', 'datetime',
                                  '2012-06-28 16:19:17')
        loading.set_setting_value(MODULE_NAME, '', 'boolean', False)
        loading.set_setting_value(MODULE_NAME, '', 'integer', 14)
        loading.set_setting_value(MODULE_NAME, '', 'string', 'Module')
        loading.set_setting_value(MODULE_NAME, '', 'list_semi_colon',
                                  '[email protected];[email protected];[email protected]')
        loading.set_setting_value(MODULE_NAME, '', 'list_comma',
                                  '[email protected],[email protected],[email protected]')
        loading.set_setting_value(MODULE_NAME, '', 'date', '2011-05-27')
        loading.set_setting_value(MODULE_NAME, '', 'time', '15:18:16')
        loading.set_setting_value(MODULE_NAME, '', 'datetime',
                                  '2011-05-27 15:18:16')
        loading.set_setting_value(MODULE_NAME, 'Combined', 'boolean', False)
        loading.set_setting_value(MODULE_NAME, 'Combined', 'integer', 1138)
        loading.set_setting_value(MODULE_NAME, 'Combined', 'string', 'THX')
        loading.set_setting_value(MODULE_NAME, 'Combined', 'list_semi_colon',
                                  '[email protected];[email protected];[email protected]')
        loading.set_setting_value(MODULE_NAME, 'Combined', 'list_comma',
                                  '[email protected],[email protected],[email protected]')
        loading.set_setting_value(MODULE_NAME, 'Combined', 'date',
                                  '2010-04-26')
        loading.set_setting_value(MODULE_NAME, 'Combined', 'time', '14:17:15')
        loading.set_setting_value(MODULE_NAME, 'Combined', 'datetime',
                                  '2010-04-26 14:17:15')
        loading.set_setting_value(MODULE_NAME, 'Combined', 'enabled', True)
Пример #16
0
    def test_settings(self):
        "Make sure settings groups are initialized properly"

        # Settings already in the database are available immediately
        self.assertEqual(Populated.settings.boolean, True)
        self.assertEqual(Populated.settings.integer, 42)
        self.assertEqual(Populated.settings.string, 'Ni!')
        self.assertEqual(Populated.settings.list_semi_colon,
                         ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Populated.settings.list_comma,
                         ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Populated.settings.date, datetime.date(2012, 6, 28))
        self.assertEqual(Populated.settings.time, datetime.time(16, 19, 17))
        self.assertEqual(Populated.settings.datetime,
                         datetime.datetime(2012, 6, 28, 16, 19, 17))

        # Module settings are kept separate from model settings
        self.assertEqual(module_settings.boolean, False)
        self.assertEqual(module_settings.integer, 14)
        self.assertEqual(module_settings.string, 'Module')
        self.assertEqual(module_settings.list_semi_colon,
                         ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(module_settings.list_comma,
                         ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(module_settings.date, datetime.date(2011, 5, 27))
        self.assertEqual(module_settings.time, datetime.time(15, 18, 16))
        self.assertEqual(module_settings.datetime,
                         datetime.datetime(2011, 5, 27, 15, 18, 16))

        # Settings can be added together
        self.assertEqual(Combined.settings.boolean, False)
        self.assertEqual(Combined.settings.integer, 1138)
        self.assertEqual(Combined.settings.string, 'THX')
        self.assertEqual(Combined.settings.enabled, True)
        self.assertEqual(Combined.settings.list_semi_colon,
                         ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Combined.settings.list_comma,
                         ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Combined.settings.date, datetime.date(2010, 4, 26))
        self.assertEqual(Combined.settings.time, datetime.time(14, 17, 15))
        self.assertEqual(Combined.settings.datetime,
                         datetime.datetime(2010, 4, 26, 14, 17, 15))

        # Settings not in the database use empty defaults
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, None)
        self.assertEqual(Unpopulated.settings.string, '')
        self.assertEqual(Unpopulated.settings.list_semi_colon, [])
        self.assertEqual(Unpopulated.settings.list_comma, [])

        # ...Unless a default parameter was specified, then they use that
        self.assertEqual(Defaults.settings.boolean, True)
        self.assertEqual(Defaults.settings.boolean_false, False)
        self.assertEqual(Defaults.settings.integer, 1)
        self.assertEqual(Defaults.settings.string, 'default')
        self.assertEqual(Defaults.settings.list_semi_colon, ['one', 'two'])
        self.assertEqual(Defaults.settings.list_comma, ['one', 'two'])
        self.assertEqual(Defaults.settings.date, datetime.date(2012, 3, 14))
        self.assertEqual(Defaults.settings.time, datetime.time(12, 3, 14))
        self.assertEqual(Defaults.settings.datetime,
                         datetime.datetime(2012, 3, 14, 12, 3, 14))

        # Settings should be retrieved in the order of definition
        self.assertEqual(Populated.settings.keys(), [
            'boolean', 'integer', 'string', 'list_semi_colon', 'list_comma',
            'date', 'time', 'datetime'
        ])
        self.assertEqual(Combined.settings.keys(), [
            'boolean', 'integer', 'string', 'list_semi_colon', 'list_comma',
            'date', 'time', 'datetime', 'enabled'
        ])

        # Values should be coerced to the proper Python types
        self.assertTrue(isinstance(Populated.settings.boolean, bool))
        self.assertTrue(isinstance(Populated.settings.integer, int))
        self.assertTrue(isinstance(Populated.settings.string, str))

        # Settings can not be accessed directly from models, only instances
        self.assertRaises(AttributeError, lambda: Populated().settings)
        self.assertRaises(AttributeError, lambda: Unpopulated().settings)

        # Updates are reflected in the live settings
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'boolean', True)
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'integer', 13)
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'string',
                                  'Friday')
        loading.set_setting_value(MODULE_NAME, 'Unpopulated',
                                  'list_semi_colon', '[email protected];[email protected]')
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'list_comma',
                                  '[email protected],[email protected]')
        # for date/time you can specify string (as above) or proper object
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'date',
                                  datetime.date(1912, 6, 23))
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'time',
                                  datetime.time(1, 2, 3))
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'datetime',
                                  datetime.datetime(1912, 6, 23, 1, 2, 3))

        self.assertEqual(Unpopulated.settings.boolean, True)
        self.assertEqual(Unpopulated.settings.integer, 13)
        self.assertEqual(Unpopulated.settings.string, 'Friday')
        self.assertEqual(Unpopulated.settings.list_semi_colon,
                         ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.list_comma,
                         ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.date, datetime.date(1912, 6, 23))
        self.assertEqual(Unpopulated.settings.time, datetime.time(1, 2, 3))
        self.assertEqual(Unpopulated.settings.datetime,
                         datetime.datetime(1912, 6, 23, 1, 2, 3))

        # Updating settings with defaults
        loading.set_setting_value(MODULE_NAME, 'Defaults', 'boolean', False)
        self.assertEqual(Defaults.settings.boolean, False)
        loading.set_setting_value(MODULE_NAME, 'Defaults', 'boolean_false',
                                  True)
        self.assertEqual(Defaults.settings.boolean_false, True)

        # Updating blankable settings
        self.assertEqual(Blankable.settings.string, '')
        loading.set_setting_value(MODULE_NAME, 'Blankable', 'string', 'Eli')
        self.assertEqual(Blankable.settings.string, 'Eli')
        loading.set_setting_value(MODULE_NAME, 'Blankable', 'string', '')
        self.assertEqual(Blankable.settings.string, '')

        # And they can be modified in-place
        Unpopulated.settings.boolean = False
        Unpopulated.settings.integer = 42
        Unpopulated.settings.string = 'Caturday'
        Unpopulated.settings.date = datetime.date(1939, 9, 1)
        Unpopulated.settings.time = '03:47:00'
        Unpopulated.settings.datetime = datetime.datetime(1939, 9, 1, 3, 47, 0)
        # Test correct stripping while we're at it.
        Unpopulated.settings.list_semi_colon = '[email protected]; [email protected]'
        Unpopulated.settings.list_comma = '[email protected] ,[email protected]'
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, 42)
        self.assertEqual(Unpopulated.settings.string, 'Caturday')
        self.assertEqual(Unpopulated.settings.list_semi_colon,
                         ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.list_comma,
                         ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.date, datetime.date(1939, 9, 1))
        self.assertEqual(Unpopulated.settings.time, datetime.time(3, 47, 0))
        self.assertEqual(Unpopulated.settings.datetime,
                         datetime.datetime(1939, 9, 1, 3, 47, 0))

        # Test non-required settings
        self.assertEqual(NonReq.non_req.integer, None)
        self.assertEqual(NonReq.non_req.fl, None)
        self.assertEqual(NonReq.non_req.string, "")

        loading.set_setting_value(MODULE_NAME, 'NonReq', 'integer', '2')
        self.assertEqual(NonReq.non_req.integer, 2)
        loading.set_setting_value(MODULE_NAME, 'NonReq', 'integer', '')
        self.assertEqual(NonReq.non_req.integer, None)
Пример #17
0
 def setUp(self):
     super(SettingsTestCase, self).setUp()
     # Standard test fixtures don't update the in-memory cache.
     # So we have to do it ourselves this time.
     loading.set_setting_value(MODULE_NAME, 'Populated', 'boolean', True)
     loading.set_setting_value(MODULE_NAME, 'Populated', 'integer', 42)
     loading.set_setting_value(MODULE_NAME, 'Populated', 'string', 'Ni!')
     loading.set_setting_value(MODULE_NAME, 'Populated', 'list_semi_colon',
                               '[email protected];[email protected];[email protected]')
     loading.set_setting_value(MODULE_NAME, 'Populated', 'list_comma',
                               '[email protected],[email protected],[email protected]')
     loading.set_setting_value(MODULE_NAME, 'Populated', 'date', '2012-06-28')
     loading.set_setting_value(MODULE_NAME, 'Populated', 'time', '16:19:17')
     loading.set_setting_value(MODULE_NAME, 'Populated', 'datetime',
                               '2012-06-28 16:19:17')
     loading.set_setting_value(MODULE_NAME, '', 'boolean', False)
     loading.set_setting_value(MODULE_NAME, '', 'integer', 14)
     loading.set_setting_value(MODULE_NAME, '', 'string', 'Module')
     loading.set_setting_value(MODULE_NAME, '', 'list_semi_colon',
                               '[email protected];[email protected];[email protected]')
     loading.set_setting_value(MODULE_NAME, '', 'list_comma', '[email protected],[email protected],[email protected]')
     loading.set_setting_value(MODULE_NAME, '', 'date', '2011-05-27')
     loading.set_setting_value(MODULE_NAME, '', 'time', '15:18:16')
     loading.set_setting_value(MODULE_NAME, '', 'datetime', '2011-05-27 15:18:16')
     loading.set_setting_value(MODULE_NAME, 'Combined', 'boolean', False)
     loading.set_setting_value(MODULE_NAME, 'Combined', 'integer', 1138)
     loading.set_setting_value(MODULE_NAME, 'Combined', 'string', 'THX')
     loading.set_setting_value(MODULE_NAME, 'Combined', 'list_semi_colon',
                               '[email protected];[email protected];[email protected]')
     loading.set_setting_value(MODULE_NAME, 'Combined', 'list_comma',
                               '[email protected],[email protected],[email protected]')
     loading.set_setting_value(MODULE_NAME, 'Combined', 'date', '2010-04-26')
     loading.set_setting_value(MODULE_NAME, 'Combined', 'time', '14:17:15')
     loading.set_setting_value(MODULE_NAME, 'Combined', 'datetime', '2010-04-26 14:17:15')
     loading.set_setting_value(MODULE_NAME, 'Combined', 'enabled', True)
Пример #18
0
    def test_settings(self):
        "Make sure settings groups are initialized properly"

        # Settings already in the database are available immediately
        self.assertEqual(Populated.settings.boolean, True)
        self.assertEqual(Populated.settings.integer, 42)
        self.assertEqual(Populated.settings.string, 'Ni!')
        self.assertEqual(Populated.settings.list_semi_colon, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Populated.settings.list_comma, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Populated.settings.date, datetime.date(2012, 6, 28))
        self.assertEqual(Populated.settings.time, datetime.time(16, 19, 17))
        self.assertEqual(Populated.settings.datetime, datetime.datetime(2012, 6, 28, 16, 19, 17))

        # Module settings are kept separate from model settings
        self.assertEqual(module_settings.boolean, False)
        self.assertEqual(module_settings.integer, 14)
        self.assertEqual(module_settings.string, 'Module')
        self.assertEqual(module_settings.list_semi_colon, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(module_settings.list_comma, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(module_settings.date, datetime.date(2011, 5, 27))
        self.assertEqual(module_settings.time, datetime.time(15, 18, 16))
        self.assertEqual(module_settings.datetime, datetime.datetime(2011, 5, 27, 15, 18, 16))

        # Settings can be added together
        self.assertEqual(Combined.settings.boolean, False)
        self.assertEqual(Combined.settings.integer, 1138)
        self.assertEqual(Combined.settings.string, 'THX')
        self.assertEqual(Combined.settings.enabled, True)
        self.assertEqual(Combined.settings.list_semi_colon, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Combined.settings.list_comma, ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
        self.assertEqual(Combined.settings.date, datetime.date(2010, 4, 26))
        self.assertEqual(Combined.settings.time, datetime.time(14, 17, 15))
        self.assertEqual(Combined.settings.datetime, datetime.datetime(2010, 4, 26, 14, 17, 15))

        # Settings not in the database use empty defaults
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, None)
        self.assertEqual(Unpopulated.settings.string, '')
        self.assertEqual(Unpopulated.settings.list_semi_colon, [])
        self.assertEqual(Unpopulated.settings.list_comma, [])

        # ...Unless a default parameter was specified, then they use that
        self.assertEqual(Defaults.settings.boolean, True)
        self.assertEqual(Defaults.settings.boolean_false, False)
        self.assertEqual(Defaults.settings.integer, 1)
        self.assertEqual(Defaults.settings.string, 'default')
        self.assertEqual(Defaults.settings.list_semi_colon, ['one', 'two'])
        self.assertEqual(Defaults.settings.list_comma, ['one', 'two'])
        self.assertEqual(Defaults.settings.date, datetime.date(2012, 3, 14))
        self.assertEqual(Defaults.settings.time, datetime.time(12, 3, 14))
        self.assertEqual(Defaults.settings.datetime, datetime.datetime(2012, 3, 14, 12, 3, 14))

        # Settings should be retrieved in the order of definition
        self.assertEqual(Populated.settings.keys(),
                         ['boolean', 'integer', 'string', 'list_semi_colon',
                          'list_comma', 'date', 'time', 'datetime'])
        self.assertEqual(Combined.settings.keys(),
                         ['boolean', 'integer', 'string', 'list_semi_colon',
                          'list_comma', 'date', 'time', 'datetime', 'enabled'])

        # Values should be coerced to the proper Python types
        self.assertTrue(isinstance(Populated.settings.boolean, bool))
        self.assertTrue(isinstance(Populated.settings.integer, int))
        self.assertTrue(isinstance(Populated.settings.string, six.string_types))

        # Settings can not be accessed directly from models, only instances
        self.assertRaises(AttributeError, lambda: Populated().settings)
        self.assertRaises(AttributeError, lambda: Unpopulated().settings)

        # Updates are reflected in the live settings
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'boolean', True)
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'integer', 13)
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'string', 'Friday')
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'list_semi_colon',
                                  '[email protected];[email protected]')
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'list_comma',
                                  '[email protected],[email protected]')
        # for date/time you can specify string (as above) or proper object
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'date',
                                  datetime.date(1912, 6, 23))
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'time',
                                  datetime.time(1, 2, 3))
        loading.set_setting_value(MODULE_NAME, 'Unpopulated', 'datetime',
                                  datetime.datetime(1912, 6, 23, 1, 2, 3))

        self.assertEqual(Unpopulated.settings.boolean, True)
        self.assertEqual(Unpopulated.settings.integer, 13)
        self.assertEqual(Unpopulated.settings.string, 'Friday')
        self.assertEqual(Unpopulated.settings.list_semi_colon, ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.list_comma, ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.date, datetime.date(1912, 6, 23))
        self.assertEqual(Unpopulated.settings.time, datetime.time(1, 2, 3))
        self.assertEqual(Unpopulated.settings.datetime, datetime.datetime(1912, 6, 23, 1, 2, 3))

        # Updating settings with defaults
        loading.set_setting_value(MODULE_NAME, 'Defaults', 'boolean', False)
        self.assertEqual(Defaults.settings.boolean, False)
        loading.set_setting_value(MODULE_NAME, 'Defaults', 'boolean_false', True)
        self.assertEqual(Defaults.settings.boolean_false, True)

        # Updating blankable settings
        self.assertEqual(Blankable.settings.string, '')
        loading.set_setting_value(MODULE_NAME, 'Blankable', 'string', 'Eli')
        self.assertEqual(Blankable.settings.string, 'Eli')
        loading.set_setting_value(MODULE_NAME, 'Blankable', 'string', '')
        self.assertEqual(Blankable.settings.string, '')

        # And they can be modified in-place
        Unpopulated.settings.boolean = False
        Unpopulated.settings.integer = 42
        Unpopulated.settings.string = 'Caturday'
        Unpopulated.settings.date = datetime.date(1939, 9, 1)
        Unpopulated.settings.time = '03:47:00'
        Unpopulated.settings.datetime = datetime.datetime(1939, 9, 1, 3, 47, 0)
        # Test correct stripping while we're at it.
        Unpopulated.settings.list_semi_colon = '[email protected]; [email protected]'
        Unpopulated.settings.list_comma = '[email protected] ,[email protected]'
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, 42)
        self.assertEqual(Unpopulated.settings.string, 'Caturday')
        self.assertEqual(Unpopulated.settings.list_semi_colon, ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.list_comma, ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(Unpopulated.settings.date, datetime.date(1939, 9, 1))
        self.assertEqual(Unpopulated.settings.time, datetime.time(3, 47, 0))
        self.assertEqual(Unpopulated.settings.datetime, datetime.datetime(1939, 9, 1, 3, 47, 0))
Пример #19
0
 def __set__(self, instance, value):
     current_value = self.__get__(instance)
     if self.to_python(value) != current_value:
         set_setting_value(*(self.key + (value,)))
Пример #20
0
 def __set__(self, instance, value):
     current_value = self.__get__(instance)
     if self.to_python(value) != current_value:
         set_setting_value(*(self.key + (value, )))
Пример #21
0
Файл: tests.py Проект: ewe2/G2
 def setUp(self):
     # Standard test fixtures don't update the in-memory cache.
     # So we have to do it ourselves this time.
     loading.set_setting_value('dbsettings.tests', 'Populated', 'boolean',
                               True)
     loading.set_setting_value('dbsettings.tests', 'Populated', 'integer',
                               42)
     loading.set_setting_value('dbsettings.tests', 'Populated', 'string',
                               'Ni!')
     loading.set_setting_value('dbsettings.tests', '', 'boolean', False)
     loading.set_setting_value('dbsettings.tests', '', 'integer', 14)
     loading.set_setting_value('dbsettings.tests', '', 'string', 'Module')
     loading.set_setting_value('dbsettings.tests', 'Combined', 'boolean',
                               False)
     loading.set_setting_value('dbsettings.tests', 'Combined', 'integer',
                               1138)
     loading.set_setting_value('dbsettings.tests', 'Combined', 'string',
                               'THX')
     loading.set_setting_value('dbsettings.tests', 'Combined', 'enabled',
                               True)
Пример #22
0
    def test_settings(self):
        "Make sure settings groups are initialized properly"

        # Settings already in the database are available immediately
        self.assertEqual(Populated.settings.boolean, True)
        self.assertEqual(Populated.settings.integer, 42)
        self.assertEqual(Populated.settings.string, "Ni!")
        self.assertEqual(Populated.settings.list_semi_colon, ["*****@*****.**", "*****@*****.**", "*****@*****.**"])
        self.assertEqual(Populated.settings.list_comma, ["*****@*****.**", "*****@*****.**", "*****@*****.**"])
        self.assertEqual(Populated.settings.date, datetime.date(2012, 6, 28))
        self.assertEqual(Populated.settings.time, datetime.time(16, 19, 17))
        self.assertEqual(Populated.settings.datetime, datetime.datetime(2012, 6, 28, 16, 19, 17))

        # Module settings are kept separate from model settings
        self.assertEqual(module_settings.boolean, False)
        self.assertEqual(module_settings.integer, 14)
        self.assertEqual(module_settings.string, "Module")
        self.assertEqual(module_settings.list_semi_colon, ["*****@*****.**", "*****@*****.**", "*****@*****.**"])
        self.assertEqual(module_settings.list_comma, ["*****@*****.**", "*****@*****.**", "*****@*****.**"])
        self.assertEqual(module_settings.date, datetime.date(2011, 5, 27))
        self.assertEqual(module_settings.time, datetime.time(15, 18, 16))
        self.assertEqual(module_settings.datetime, datetime.datetime(2011, 5, 27, 15, 18, 16))

        # Settings can be added together
        self.assertEqual(Combined.settings.boolean, False)
        self.assertEqual(Combined.settings.integer, 1138)
        self.assertEqual(Combined.settings.string, "THX")
        self.assertEqual(Combined.settings.enabled, True)
        self.assertEqual(Combined.settings.list_semi_colon, ["*****@*****.**", "*****@*****.**", "*****@*****.**"])
        self.assertEqual(Combined.settings.list_comma, ["*****@*****.**", "*****@*****.**", "*****@*****.**"])
        self.assertEqual(Combined.settings.date, datetime.date(2010, 4, 26))
        self.assertEqual(Combined.settings.time, datetime.time(14, 17, 15))
        self.assertEqual(Combined.settings.datetime, datetime.datetime(2010, 4, 26, 14, 17, 15))

        # Settings not in the database use empty defaults
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, None)
        self.assertEqual(Unpopulated.settings.string, "")
        self.assertEqual(Unpopulated.settings.list_semi_colon, [])
        self.assertEqual(Unpopulated.settings.list_comma, [])

        # ...Unless a default paramter was specified, then they use that
        self.assertEqual(Defaults.settings.boolean, True)
        self.assertEqual(Defaults.settings.boolean_false, False)
        self.assertEqual(Defaults.settings.integer, 1)
        self.assertEqual(Defaults.settings.string, "default")
        self.assertEqual(Defaults.settings.list_semi_colon, ["one", "two"])
        self.assertEqual(Defaults.settings.list_comma, ["one", "two"])
        self.assertEqual(Defaults.settings.date, datetime.date(2012, 3, 14))
        self.assertEqual(Defaults.settings.time, datetime.time(12, 3, 14))
        self.assertEqual(Defaults.settings.datetime, datetime.datetime(2012, 3, 14, 12, 3, 14))

        # Settings should be retrieved in the order of definition
        self.assertEqual(
            Populated.settings.keys(),
            ["boolean", "integer", "string", "list_semi_colon", "list_comma", "date", "time", "datetime"],
        )
        self.assertEqual(
            Combined.settings.keys(),
            ["boolean", "integer", "string", "list_semi_colon", "list_comma", "date", "time", "datetime", "enabled"],
        )

        # Values should be coerced to the proper Python types
        self.assertTrue(isinstance(Populated.settings.boolean, bool))
        self.assertTrue(isinstance(Populated.settings.integer, int))
        self.assertTrue(isinstance(Populated.settings.string, six.string_types))

        # Settings can not be accessed directly from models, only instances
        self.assertRaises(AttributeError, lambda: Populated().settings)
        self.assertRaises(AttributeError, lambda: Unpopulated().settings)

        # Updates are reflected in the live settings
        loading.set_setting_value("dbsettings.tests", "Unpopulated", "boolean", True)
        loading.set_setting_value("dbsettings.tests", "Unpopulated", "integer", 13)
        loading.set_setting_value("dbsettings.tests", "Unpopulated", "string", "Friday")
        loading.set_setting_value("dbsettings.tests", "Unpopulated", "list_semi_colon", "[email protected];[email protected]")
        loading.set_setting_value("dbsettings.tests", "Unpopulated", "list_comma", "[email protected],[email protected]")
        # for date/time you can specify string (as above) or proper object
        loading.set_setting_value("dbsettings.tests", "Unpopulated", "date", datetime.date(1912, 6, 23))
        loading.set_setting_value("dbsettings.tests", "Unpopulated", "time", datetime.time(1, 2, 3))
        loading.set_setting_value(
            "dbsettings.tests", "Unpopulated", "datetime", datetime.datetime(1912, 6, 23, 1, 2, 3)
        )

        self.assertEqual(Unpopulated.settings.boolean, True)
        self.assertEqual(Unpopulated.settings.integer, 13)
        self.assertEqual(Unpopulated.settings.string, "Friday")
        self.assertEqual(Unpopulated.settings.list_semi_colon, ["*****@*****.**", "*****@*****.**"])
        self.assertEqual(Unpopulated.settings.list_comma, ["*****@*****.**", "*****@*****.**"])
        self.assertEqual(Unpopulated.settings.date, datetime.date(1912, 6, 23))
        self.assertEqual(Unpopulated.settings.time, datetime.time(1, 2, 3))
        self.assertEqual(Unpopulated.settings.datetime, datetime.datetime(1912, 6, 23, 1, 2, 3))

        # Updating settings with defaults
        loading.set_setting_value("dbsettings.tests", "Defaults", "boolean", False)
        self.assertEqual(Defaults.settings.boolean, False)
        loading.set_setting_value("dbsettings.tests", "Defaults", "boolean_false", True)
        self.assertEqual(Defaults.settings.boolean_false, True)

        # Updating blankable settings
        self.assertEqual(Blankable.settings.string, "")
        loading.set_setting_value("dbsettings.tests", "Blankable", "string", "Eli")
        self.assertEqual(Blankable.settings.string, "Eli")
        loading.set_setting_value("dbsettings.tests", "Blankable", "string", "")
        self.assertEqual(Blankable.settings.string, "")

        # And they can be modified in-place
        Unpopulated.settings.boolean = False
        Unpopulated.settings.integer = 42
        Unpopulated.settings.string = "Caturday"
        Unpopulated.settings.date = datetime.date(1939, 9, 1)
        Unpopulated.settings.time = "03:47:00"
        Unpopulated.settings.datetime = datetime.datetime(1939, 9, 1, 3, 47, 0)
        # Test correct stripping while we're at it.
        Unpopulated.settings.list_semi_colon = "[email protected]; [email protected]"
        Unpopulated.settings.list_comma = "[email protected] ,[email protected]"
        self.assertEqual(Unpopulated.settings.boolean, False)
        self.assertEqual(Unpopulated.settings.integer, 42)
        self.assertEqual(Unpopulated.settings.string, "Caturday")
        self.assertEqual(Unpopulated.settings.list_semi_colon, ["*****@*****.**", "*****@*****.**"])
        self.assertEqual(Unpopulated.settings.list_comma, ["*****@*****.**", "*****@*****.**"])
        self.assertEqual(Unpopulated.settings.date, datetime.date(1939, 9, 1))
        self.assertEqual(Unpopulated.settings.time, datetime.time(3, 47, 0))
        self.assertEqual(Unpopulated.settings.datetime, datetime.datetime(1939, 9, 1, 3, 47, 0))
Пример #23
0
 def setUp(self):
     # Standard test fixtures don't update the in-memory cache.
     # So we have to do it ourselves this time.
     loading.set_setting_value("dbsettings.tests", "Populated", "boolean", True)
     loading.set_setting_value("dbsettings.tests", "Populated", "integer", 42)
     loading.set_setting_value("dbsettings.tests", "Populated", "string", "Ni!")
     loading.set_setting_value("dbsettings.tests", "Populated", "list_semi_colon", "[email protected];[email protected];[email protected]")
     loading.set_setting_value("dbsettings.tests", "Populated", "list_comma", "[email protected],[email protected],[email protected]")
     loading.set_setting_value("dbsettings.tests", "Populated", "date", "2012-06-28")
     loading.set_setting_value("dbsettings.tests", "Populated", "time", "16:19:17")
     loading.set_setting_value("dbsettings.tests", "Populated", "datetime", "2012-06-28 16:19:17")
     loading.set_setting_value("dbsettings.tests", "", "boolean", False)
     loading.set_setting_value("dbsettings.tests", "", "integer", 14)
     loading.set_setting_value("dbsettings.tests", "", "string", "Module")
     loading.set_setting_value("dbsettings.tests", "", "list_semi_colon", "[email protected];[email protected];[email protected]")
     loading.set_setting_value("dbsettings.tests", "", "list_comma", "[email protected],[email protected],[email protected]")
     loading.set_setting_value("dbsettings.tests", "", "date", "2011-05-27")
     loading.set_setting_value("dbsettings.tests", "", "time", "15:18:16")
     loading.set_setting_value("dbsettings.tests", "", "datetime", "2011-05-27 15:18:16")
     loading.set_setting_value("dbsettings.tests", "Combined", "boolean", False)
     loading.set_setting_value("dbsettings.tests", "Combined", "integer", 1138)
     loading.set_setting_value("dbsettings.tests", "Combined", "string", "THX")
     loading.set_setting_value("dbsettings.tests", "Combined", "list_semi_colon", "[email protected];[email protected];[email protected]")
     loading.set_setting_value("dbsettings.tests", "Combined", "list_comma", "[email protected],[email protected],[email protected]")
     loading.set_setting_value("dbsettings.tests", "Combined", "date", "2010-04-26")
     loading.set_setting_value("dbsettings.tests", "Combined", "time", "14:17:15")
     loading.set_setting_value("dbsettings.tests", "Combined", "datetime", "2010-04-26 14:17:15")
     loading.set_setting_value("dbsettings.tests", "Combined", "enabled", True)