Coverage for gws-app/gws/plugin/geojson/model.py: 100%

19 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-05 13:35 +0200

1"""The ``geojson`` model.""" 

2 

3from typing import Optional 

4 

5import gws.base.model 

6import gws.config.util 

7import gws.gis.source 

8 

9from . import provider 

10 

11 

12# @TODO generally, vector models should be converted to sqlite/gpkg in order to support search 

13 

14 

15@gws.ext.config.model('geojson') 

16class Config(gws.base.model.Config): 

17 """Model for features from a GeoJSON file.""" 

18 

19 provider: Optional[provider.Config] 

20 """GeoJSON file with the model features.""" 

21 

22 

23@gws.ext.object.model('geojson') 

24class Object(gws.base.model.default_model.Object): 

25 """GeoJSON model.""" 

26 

27 provider: provider.Object 

28 """The GeoJSON provider.""" 

29 

30 def configure(self): 

31 self.uidName = 'id' 

32 self.geometryName = 'geometry' 

33 self.configure_model() 

34 

35 def configure_provider(self): 

36 return gws.config.util.configure_provider_for(self, provider.Object) 

37 

38 def find_features(self, search, user, **kwargs): 

39 # fmt: off 

40 return [ 

41 self.feature_from_record(rec, user) 

42 for rec in self.provider.get_records(search) 

43 ] 

44 # fmt: on