|
@@ -74,32 +74,23 @@ class Setting(db.Model):
|
|
|
for setting in group.settings:
|
|
|
field_validators = []
|
|
|
|
|
|
+ if setting.value_type in ("integer", "float"):
|
|
|
+ validator_class = validators.NumberRange
|
|
|
+ elif setting.value_type == "string":
|
|
|
+ validator_class = validators.Length
|
|
|
+
|
|
|
# generate the validators
|
|
|
if "min" in setting.extra:
|
|
|
# Min number validator
|
|
|
- if setting.value_type in ("integer", "float"):
|
|
|
- field_validators.append(
|
|
|
- validators.NumberRange(min=setting.extra["min"])
|
|
|
- )
|
|
|
-
|
|
|
- # Min text length validator
|
|
|
- elif setting.value_type in ("string"):
|
|
|
- field_validators.append(
|
|
|
- validators.Length(min=setting.extra["min"])
|
|
|
- )
|
|
|
+ field_validators.append(
|
|
|
+ validator_class(min=setting.extra["min"])
|
|
|
+ )
|
|
|
|
|
|
if "max" in setting.extra:
|
|
|
# Max number validator
|
|
|
- if setting.value_type in ("integer", "float"):
|
|
|
- field_validators.append(
|
|
|
- validators.NumberRange(max=setting.extra["max"])
|
|
|
- )
|
|
|
-
|
|
|
- # Max text length validator
|
|
|
- elif setting.value_type in ("string"):
|
|
|
- field_validators.append(
|
|
|
- validators.Length(max=setting.extra["max"])
|
|
|
- )
|
|
|
+ field_validators.append(
|
|
|
+ validator_class(max=setting.extra["max"])
|
|
|
+ )
|
|
|
|
|
|
# Generate the fields based on value_type
|
|
|
# IntegerField
|
|
@@ -118,7 +109,7 @@ class Setting(db.Model):
|
|
|
)
|
|
|
|
|
|
# TextField
|
|
|
- if setting.value_type == "string":
|
|
|
+ elif setting.value_type == "string":
|
|
|
setattr(
|
|
|
SettingsForm, setting.key,
|
|
|
TextField(setting.name, validators=field_validators,
|
|
@@ -126,7 +117,7 @@ class Setting(db.Model):
|
|
|
)
|
|
|
|
|
|
# SelectMultipleField
|
|
|
- if setting.value_type == "selectmultiple":
|
|
|
+ elif setting.value_type == "selectmultiple":
|
|
|
# if no coerce is found, it will fallback to unicode
|
|
|
if "coerce" in setting.extra:
|
|
|
coerce_to = setting.extra['coerce']
|
|
@@ -144,7 +135,7 @@ class Setting(db.Model):
|
|
|
)
|
|
|
|
|
|
# SelectField
|
|
|
- if setting.value_type == "select":
|
|
|
+ elif setting.value_type == "select":
|
|
|
# if no coerce is found, it will fallback to unicode
|
|
|
if "coerce" in setting.extra:
|
|
|
coerce_to = setting.extra['coerce']
|
|
@@ -161,7 +152,7 @@ class Setting(db.Model):
|
|
|
)
|
|
|
|
|
|
# BooleanField
|
|
|
- if setting.value_type == "boolean":
|
|
|
+ elif setting.value_type == "boolean":
|
|
|
setattr(
|
|
|
SettingsForm, setting.key,
|
|
|
BooleanField(setting.name, description=setting.description)
|