new 'choices' attribute of BaseBackend.ConfigField
This commit is contained in:
parent
52cb3ea97c
commit
cf1da91308
1 changed files with 9 additions and 1 deletions
|
|
@ -87,11 +87,12 @@ class BaseBackend(object):
|
||||||
OBJECTS = {}
|
OBJECTS = {}
|
||||||
|
|
||||||
class ConfigField(object):
|
class ConfigField(object):
|
||||||
def __init__(self, default=None, is_masked=False, regexp=None, description=None):
|
def __init__(self, default=None, is_masked=False, regexp=None, description=None, choices=None):
|
||||||
self.default = default
|
self.default = default
|
||||||
self.is_masked = is_masked
|
self.is_masked = is_masked
|
||||||
self.regexp = regexp
|
self.regexp = regexp
|
||||||
self.description = description
|
self.description = description
|
||||||
|
self.choices=None
|
||||||
|
|
||||||
class ConfigError(Exception): pass
|
class ConfigError(Exception): pass
|
||||||
|
|
||||||
|
|
@ -130,6 +131,13 @@ class BaseBackend(object):
|
||||||
value = int(value)
|
value = int(value)
|
||||||
elif isinstance(field.default, float) and not isinstance(value, float):
|
elif isinstance(field.default, float) and not isinstance(value, float):
|
||||||
value = float(value)
|
value = float(value)
|
||||||
|
|
||||||
|
if field.choices:
|
||||||
|
if (isinstance(field.choices, (tuple,list)) and not value in field.choices) or \
|
||||||
|
(isinstance(field.choices, dict) and not value in field.choices.iterkeys()):
|
||||||
|
raise BaseBackend.ConfigError('Value of "%s" might be in this list: %s' %
|
||||||
|
', '.join([s for s in (field.choices.iterkeys() if isinstance(field.choices, dict)
|
||||||
|
else field.choices)]))
|
||||||
self.config[name] = value
|
self.config[name] = value
|
||||||
self.storage = BackendStorage(self.name, storage)
|
self.storage = BackendStorage(self.name, storage)
|
||||||
self.storage.load(self.STORAGE)
|
self.storage.load(self.STORAGE)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue