Make CONSTANCE_ADDITIONAL_FIELDS more flexible

Allow the field config to be a tuple, and allow the config dict to be omitted
This commit is contained in:
John Carter 2016-03-13 00:05:16 +13:00
parent 468daf5eea
commit 8101d7cc84
3 changed files with 15 additions and 2 deletions

View file

@ -47,7 +47,10 @@ FIELDS = {
def parse_additional_fields(fields):
for key in fields:
field = fields[key]
field = list(fields[key])
if len(field) == 1:
field.append({})
field[0] = import_string(field[0])
@ -58,6 +61,8 @@ def parse_additional_fields(fields):
if 'widget_kwargs' in field[1]:
del field[1]['widget_kwargs']
fields[key] = field
return fields

View file

@ -57,7 +57,9 @@ CONSTANCE_ADDITIONAL_FIELDS = {
'widget': 'django.forms.Select',
'choices': (("-----", None), ("yes", "Yes"), ("no", "No"))
}],
}
# note this intentionally uses a tuple so that we can test immutable
'email': ('django.forms.fields.EmailField',),
}
CONSTANCE_CONFIG = {
'INT_VALUE': (1, 'some int'),
@ -73,6 +75,7 @@ CONSTANCE_CONFIG = {
'TIME_VALUE': (time(23, 59, 59), 'And happy New Year'),
'CHOICE_VALUE': ('yes', 'select yes or no', 'yes_no_null_select'),
'LINEBREAK_VALUE': ('Spam spam', 'eggs\neggs'),
'EMAIL_VALUE': ('test@example.com', 'An email', 'email'),
}
DEBUG = True

View file

@ -28,6 +28,8 @@ class StorageTestsMixin(object):
self.assertEqual(self.config.DATE_VALUE, date(2010, 12, 24))
self.assertEqual(self.config.TIME_VALUE, time(23, 59, 59))
self.assertEqual(self.config.CHOICE_VALUE, 'yes')
self.assertEqual(self.config.EMAIL_VALUE, 'test@example.com')
# set values
self.config.INT_VALUE = 100
@ -41,6 +43,7 @@ class StorageTestsMixin(object):
self.config.DATE_VALUE = date(2001, 12, 20)
self.config.TIME_VALUE = time(1, 59, 0)
self.config.CHOICE_VALUE = 'no'
self.config.EMAIL_VALUE = 'foo@bar.com'
# read again
self.assertEqual(self.config.INT_VALUE, 100)
@ -54,6 +57,8 @@ class StorageTestsMixin(object):
self.assertEqual(self.config.DATE_VALUE, date(2001, 12, 20))
self.assertEqual(self.config.TIME_VALUE, time(1, 59, 0))
self.assertEqual(self.config.CHOICE_VALUE, 'no')
self.assertEqual(self.config.EMAIL_VALUE, 'foo@bar.com')
def test_nonexistent(self):
try: