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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1"""Validator for number ranges."""
3from typing import Optional
5import gws
6import gws.base.model.validator
8gws.ext.new.modelValidator('numberRange')
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]
17class Object(gws.base.model.validator.Object):
18 minVal: Optional[gws.ModelValue]
19 maxVal: Optional[gws.ModelValue]
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'))
25 def validate(self, field, feature, mc):
26 val = feature.attributes.get(field.name)
27 if not isinstance(val, (int, float)):
28 return False
30 if self.minVal:
31 v = self.minVal.compute(field, feature, mc)
32 if val < v:
33 return False
35 if self.maxVal:
36 v = self.maxVal.compute(field, feature, mc)
37 if val > v:
38 return False
40 return True