Coverage for gws-app/gws/base/model/default_model.py: 0%

39 statements  

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

1from typing import Optional, cast 

2 

3import gws 

4import gws.base.feature 

5import gws.base.shape 

6from . import core 

7 

8gws.ext.new.model('default') 

9 

10 

11class Config(core.Config): 

12 pass 

13 

14 

15class Object(core.Object): 

16 def configure(self): 

17 self.uidName = core.DEFAULT_UID_NAME 

18 self.geometryName = core.DEFAULT_GEOMETRY_NAME 

19 self.loadingStrategy = gws.FeatureLoadingStrategy.all 

20 

21 self.configure_fields() 

22 

23 def feature_from_props(self, props, mc): 

24 feature = super().feature_from_props(props, mc) 

25 feature.attributes = dict(props.attributes) 

26 

27 if self.geometryName: 

28 p = props.attributes.get(self.geometryName) 

29 if p: 

30 feature.attributes[self.geometryName] = gws.base.shape.from_props(p) 

31 

32 return feature 

33 

34 def feature_to_props(self, feature: gws.Feature, mc): 

35 props = super().feature_to_props(feature, mc) 

36 props.attributes = dict(feature.attributes) 

37 if feature.shape(): 

38 props.attributes[self.geometryName] = feature.shape().to_props() 

39 return props 

40 

41 def feature_from_record(self, record: gws.FeatureRecord, mc: gws.ModelContext) -> Optional[gws.Feature]: 

42 record = cast(gws.FeatureRecord, gws.u.to_data_object(record)) 

43 feature = gws.base.feature.new(model=self, record=record) 

44 feature.attributes = record.attributes 

45 if record.uid and self.uidName: 

46 feature.attributes[self.uidName] = record.uid 

47 if record.shape and self.geometryName: 

48 feature.attributes[self.geometryName] = record.shape 

49 if record.meta: 

50 feature.category = record.meta.get('layerName', '') 

51 return feature