Skip to content

Commit 3402cb0

Browse files
committed
Add edit_layers to ogc resources
1 parent a5abfed commit 3402cb0

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/config_generator/ogc_service_config.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)