@@ -104,6 +104,7 @@ def wms_services(self):
104104 if not cap or not 'name' in cap :
105105 continue
106106 project_metadata = self .themes_reader .project_metadata (service_name )
107+ layer_metadata = project_metadata ['layer_metadata' ]
107108
108109 # NOTE: use ordered keys
109110 wms_service = OrderedDict ()
@@ -119,13 +120,15 @@ def wms_services(self):
119120 # NOTE: use ordered keys
120121 online_resources = OrderedDict ()
121122 for key , url in cfg_wms_services ['online_resources' ].items ():
122- url = url .rstrip ('/' ) + '/'
123+ url = url .rstrip ('/' )
124+ if not url .endswith ('=' ):
125+ url += '/'
123126 online_resources [key ] = "%s%s" % (url , service_name )
124127 wms_service ['online_resources' ] = online_resources
125128
126129 # collect WMS layers
127130 wms_service ['root_layer' ] = self .collect_wms_layers (
128- cap ['root_layer' ]
131+ cap ['root_layer' ], layer_metadata
129132 )
130133
131134 wms_service ['print_templates' ] = [
@@ -139,14 +142,15 @@ def wms_services(self):
139142
140143 return wms_services
141144
142- def collect_wms_layers (self , layer ):
145+ def collect_wms_layers (self , layer , layer_metadata , parent_edit_layers = [] ):
143146 """Recursively collect WMS layer info for layer subtree from
144147 capabilities and return nested WMS layers.
145148
146149 :param obj layer: Layer or group layer
147150 """
148151 # NOTE: use ordered keys
149152 wms_layer = OrderedDict ()
153+ edit_layers = []
150154
151155 wms_layer ['name' ] = layer ['name' ]
152156 if 'title' in layer :
@@ -157,7 +161,7 @@ def collect_wms_layers(self, layer):
157161 sublayers = []
158162 for sublayer in layer ['layers' ]:
159163 # recursively collect sub layer
160- sublayers .append (self .collect_wms_layers (sublayer ))
164+ sublayers .append (self .collect_wms_layers (sublayer , layer_metadata , edit_layers ))
161165
162166 wms_layer ['layers' ] = sublayers
163167 else :
@@ -167,6 +171,12 @@ def collect_wms_layers(self, layer):
167171
168172 wms_layer ['queryable' ] = layer .get ('queryable' , False )
169173
174+ if layer_metadata .get (layer ['name' ], {}).get ('editable' ) == True :
175+ edit_layers .append (layer ['name' ])
176+
177+ wms_layer ['edit_layers' ] = edit_layers
178+ parent_edit_layers += edit_layers
179+
170180 return wms_layer
171181
172182 def wfs_services (self ):
0 commit comments