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 22:59 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +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 """Configuration for the default model."""
14 pass
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
23 self.configure_fields()
25 def feature_from_props(self, props, mc):
26 feature = super().feature_from_props(props, mc)
27 feature.attributes = dict(props.attributes)
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)
34 return feature
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
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