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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1from typing import Optional, cast
3import gws
4import gws.base.feature
5import gws.base.shape
6from . import core
8gws.ext.new.model('default')
11class Config(core.Config):
12 pass
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
21 self.configure_fields()
23 def feature_from_props(self, props, mc):
24 feature = super().feature_from_props(props, mc)
25 feature.attributes = dict(props.attributes)
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)
32 return feature
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
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