Skip to content

Commit df1ab7a

Browse files
authored
add IntegerRangeSettingField
1 parent e0383e6 commit df1ab7a

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

dynamic_setting/base/fields.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,30 @@ def validate(self, value):
5353
return validated_value
5454

5555

56+
class IntegerRangeSettingField(SettingField):
57+
def __init__(self, min_value=None, max_value=None, **kwargs):
58+
self.min_value = min_value
59+
self.max_value = max_value
60+
super().__init__(**kwargs)
61+
62+
def validate(self, value):
63+
try:
64+
parts = value.split(",")
65+
minv = int(parts[0])
66+
maxv = int(parts[1])
67+
except ValueError:
68+
raise SettingValueInvalid(f'This setting must be a integer')
69+
70+
if minv > maxv:
71+
raise SettingValueInvalid(f'This setting must have min value <= max value')
72+
73+
if self.min_value and minv < self.min_value:
74+
raise SettingValueInvalid(f'This setting must have minimum value is {self.min_value}')
75+
if self.max_value and maxv > self.max_value:
76+
raise SettingValueInvalid(f'This setting must have maximum value is {self.max_value}')
77+
return minv, maxv
78+
79+
5680
class BooleanSettingField(SettingField):
5781
def __init__(self, **kwargs):
5882
super().__init__(**kwargs)

0 commit comments

Comments
 (0)