Skip to content

Commit

Permalink
Merge manually specified resources with autodetected resources
Browse files Browse the repository at this point in the history
  • Loading branch information
manisandro committed Feb 13, 2025
1 parent c72e3a4 commit c538fee
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions src/config_generator/legend_service_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,29 @@ def config(self):
# collect resources from capabilities
resources['wms_services'] = self.wms_services()

# merge additional resources
for add_entry in self.additional_wms_services():
result = list(filter(lambda e: e['name'] == add_entry['name'], resources['wms_services']))
if result:
self.__merge_resources(result[0]["root_layer"], add_entry.get("root_layer", {}))

return config

def __merge_resources(self, base_entry, add_entry):
"""Recursively merge resources collected from capabilitites with additional resources.
"""
add_layers = {}
for add_layer in add_entry.get("layers", []):
add_layers[add_layer["name"]] = add_layer
if "layers" in base_entry:
base_entry["layers"] = list(map(
lambda layer: OrderedDict(
list(layer.items()) + list(filter(lambda item: item[0] != "layers", add_layers.get(layer["name"], {}).items()))
), base_entry["layers"]
))
for layer in base_entry.get("layers", {}):
self.__merge_resources(layer, add_layers.get(layer["name"], {}))

def permissions(self, role):
"""Return service permissions for a role.
Expand Down Expand Up @@ -133,3 +154,15 @@ def collect_wms_layers(self, layer, mapid):
wms_layer['layers'] = sublayers

return wms_layer

def additional_wms_services(self):
"""Collect additional WMS service resources from service config.
These are resources e.g. for external info layers, which cannot be
collected from capabilities.
"""
# additional service config
cfg_resources = self.service_config.get('resources', {})

# get WMS service resources directly from service config
return cfg_resources.get('wms_services', [])

0 comments on commit c538fee

Please sign in to comment.