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

19 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-16 23:09 +0200

1"""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 

11gws.ext.new.model('geojson') 

12 

13 

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

15 

16 

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

18 """Configuration for GeoJSON model.""" 

19 

20 provider: Optional[provider.Config] 

21 """GeoJSON provider.""" 

22 

23 

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

25 """GeoJSON Model.""" 

26 

27 serviceProvider: provider.Object 

28 

29 def configure(self): 

30 self.uidName = 'id' 

31 self.geometryName = 'geometry' 

32 self.configure_model() 

33 

34 def configure_provider(self): 

35 return gws.config.util.configure_service_provider_for(self, provider.Object) 

36 

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

38 # fmt: off 

39 return [ 

40 self.feature_from_record(rec, user) 

41 for rec in self.serviceProvider.get_records(search) 

42 ] 

43 # fmt: on