Coverage for gws-app/gws/plugin/ows_client/wfs/flatlayer.py: 0%

61 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-24 12:46 +0200

1from typing import Optional 

2 

3import gws 

4import gws.base.layer 

5import gws.base.legend 

6import gws.base.model 

7import gws.base.search 

8import gws.base.template 

9import gws.config.util 

10import gws.base.metadata 

11import gws.lib.crs 

12import gws.gis.source 

13import gws.gis.zoom 

14import gws.lib.bounds 

15import gws.lib.extent 

16 

17 

18from . import provider 

19 

20gws.ext.new.layer('wfsflat') 

21 

22 

23class Config(gws.base.layer.Config): 

24 """Flat WFS layer.""" 

25 

26 provider: Optional[provider.Config] 

27 """WFS provider.""" 

28 sourceLayers: Optional[gws.gis.source.LayerFilter] 

29 """Source layers to use.""" 

30 

31 

32class Object(gws.base.layer.vector.Object): 

33 serviceProvider: provider.Object 

34 sourceLayers: list[gws.SourceLayer] 

35 sourceCrs: gws.Crs 

36 

37 def configure(self): 

38 self.configure_layer() 

39 if len(self.sourceLayers) != 1: 

40 raise gws.Error(f'wfsflat requires a single source layer') 

41 

42 def configure_provider(self): 

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

44 

45 def configure_sources(self): 

46 if super().configure_sources(): 

47 return True 

48 

49 gws.u.require(self.serviceProvider, 'failed to configure service provider') 

50 

51 self.configure_source_layers() 

52 return True 

53 

54 def configure_source_layers(self): 

55 return gws.config.util.configure_source_layers_for(self, self.serviceProvider.sourceLayers) 

56 

57 def configure_models(self): 

58 return gws.config.util.configure_models_for(self, with_default=True) 

59 

60 def create_model(self, cfg): 

61 return self.create_child( 

62 gws.ext.object.model, 

63 cfg, 

64 type='wfs', 

65 _defaultProvider=self.serviceProvider, 

66 _defaultSourceLayers=self.sourceLayers 

67 ) 

68 

69 def configure_bounds(self): 

70 if super().configure_bounds(): 

71 return True 

72 self.bounds = gws.gis.source.combined_bounds(self.sourceLayers, self.mapCrs) or self.mapCrs.bounds 

73 return True 

74 

75 def configure_metadata(self): 

76 if super().configure_metadata(): 

77 return True 

78 if len(self.sourceLayers) == 1: 

79 self.metadata = self.sourceLayers[0].metadata 

80 return True 

81 

82 def configure_search(self): 

83 if super().configure_search(): 

84 return True 

85 self.finders.append(self.create_finder(None)) 

86 return True 

87 

88 def create_finder(self, cfg): 

89 return self.create_child( 

90 gws.ext.object.finder, 

91 cfg, 

92 type='wfs', 

93 _defaultProvider=self.serviceProvider, 

94 _defaultSourceLayers=self.sourceLayers 

95 )