Coverage for gws-app/gws/plugin/model_validator/number_range/__init__.py: 0%

26 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1"""Validator for number ranges.""" 

2 

3from typing import Optional 

4 

5import gws 

6import gws.base.model.validator 

7 

8gws.ext.new.modelValidator('numberRange') 

9 

10 

11class Config(gws.base.model.validator.Config): 

12 """Validator for number ranges. (added in 8.1)""" 

13 min: Optional[gws.ext.config.modelValue] 

14 max: Optional[gws.ext.config.modelValue] 

15 

16 

17class Object(gws.base.model.validator.Object): 

18 minVal: Optional[gws.ModelValue] 

19 maxVal: Optional[gws.ModelValue] 

20 

21 def configure(self): 

22 self.minVal = self.create_child_if_configured(gws.ext.object.modelValue, self.cfg('min')) 

23 self.maxVal = self.create_child_if_configured(gws.ext.object.modelValue, self.cfg('max')) 

24 

25 def validate(self, field, feature, mc): 

26 val = feature.attributes.get(field.name) 

27 if not isinstance(val, (int, float)): 

28 return False 

29 

30 if self.minVal: 

31 v = self.minVal.compute(field, feature, mc) 

32 if val < v: 

33 return False 

34 

35 if self.maxVal: 

36 v = self.maxVal.compute(field, feature, mc) 

37 if val > v: 

38 return False 

39 

40 return True