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

40 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-16 23:09 +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 """Configuration for the default model.""" 

13 

14 pass 

15 

16 

17class Object(core.Object): 

18 def configure(self): 

19 self.uidName = core.DEFAULT_UID_NAME 

20 self.geometryName = core.DEFAULT_GEOMETRY_NAME 

21 self.loadingStrategy = gws.FeatureLoadingStrategy.all 

22 

23 self.configure_fields() 

24 

25 def feature_from_props(self, props, mc): 

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

27 feature.attributes = dict(props.attributes) 

28 

29 if self.geometryName: 

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

31 if p: 

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

33 

34 return feature 

35 

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

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

38 props.attributes = dict(feature.attributes) 

39 s = feature.shape() 

40 if s is not None: 

41 props.attributes[self.geometryName] = s.to_props() 

42 return props 

43 

44 def feature_from_record(self, record: gws.FeatureRecord, mc: gws.ModelContext) -> gws.Feature: 

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

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

47 feature.attributes = record.attributes 

48 if record.uid and self.uidName: 

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

50 if record.shape and self.geometryName: 

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

52 if record.meta: 

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

54 return feature