Coverage for gws-app/gws/base/layer/ows.py: 0%

39 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1"""Layer OWS controller.""" 

2 

3from typing import Optional 

4 

5import gws 

6import gws.lib.xmlx 

7import gws.config.util 

8 

9 

10class Config(gws.Config): 

11 """Layer OWS configuration.""" 

12 

13 allowedServices: Optional[list[str]] 

14 """Service UIDs which can use this layer. (added in 8.1)""" 

15 deniedServices: Optional[list[str]] 

16 """Service UIDs which can not use this layer. (added in 8.1)""" 

17 featureName: str = '' 

18 """Name for features in this layer.""" 

19 geometryName: str = '' 

20 """Name for geometries in this layer.""" 

21 layerName: str = '' 

22 """Name for this layer in WMS services.""" 

23 xmlns: Optional[str] 

24 """XML namespace prefix. (added in 8.1)""" 

25 models: Optional[list[gws.ext.config.model]] 

26 """OWS-specific models. (added in 8.1)""" 

27 

28 

29class Object(gws.LayerOws): 

30 def configure(self): 

31 self.allowedServiceUids = self.cfg('allowedServices', default=[]) 

32 self.deniedServiceUids = self.cfg('deniedServices', default=[]) 

33 self.xmlNamespace = None 

34 

35 p = self.cfg('xmlns') 

36 if p: 

37 self.xmlNamespace, _ = gws.lib.xmlx.namespace.parse_name(p + ':test') 

38 

39 self.layerName = self._configure_name('layerName') or self.cfg('_defaultName') 

40 self.featureName = self._configure_name('featureName') or self.cfg('_defaultName') 

41 # NB geometryName might come from a model later on 

42 self.geometryName = self._configure_name('geometryName') or '' 

43 

44 gws.config.util.configure_models_for(self) 

45 

46 def _configure_name(self, key): 

47 p = self.cfg(key) 

48 if not p: 

49 return 

50 ns, pname = gws.lib.xmlx.namespace.parse_name(p) 

51 if ns: 

52 self.xmlNamespace = ns 

53 return pname