diff --git a/mapstore2_adapter/plugins/geonode.py b/mapstore2_adapter/plugins/geonode.py index 0e8b72e..329130e 100644 --- a/mapstore2_adapter/plugins/geonode.py +++ b/mapstore2_adapter/plugins/geonode.py @@ -46,8 +46,11 @@ def convert(self, viewer, request): viewer_obj = json.loads(viewer) map_id = None - if 'id' in viewer_obj: - map_id = int(viewer_obj['id']) + if 'id' in viewer_obj and viewer_obj['id']: + try: + map_id = int(viewer_obj['id']) + except BaseException: + pass data = {} data['version'] = 2 @@ -98,7 +101,7 @@ def convert(self, viewer, request): # Overlays overlays, selected = self.get_overlays(viewer) - if selected and not map_id: + if selected and selected['name'] and not map_id: # We are generating a Layer Details View center, zoom = self.get_center_and_zoom(viewer_obj['map'], selected) ms2_map['center'] = center @@ -153,7 +156,8 @@ def convert(self, viewer, request): logger.error(tb) for overlay in overlays: - ms2_map['layers'].append(overlay) + if 'name' in overlay and overlay['name']: + ms2_map['layers'].append(overlay) data['map'] = ms2_map except BaseException: @@ -285,6 +289,9 @@ def get_overlays(self, viewer): featureInfo['template'] = _template overlay['featureInfo'] = featureInfo + if 'extraParams' in layer and layer['extraParams']: + overlay['extraParams'] = layer['extraParams'] + overlays.append(overlay) if not selected or ('selected' in layer and layer['selected']): selected = overlay diff --git a/mapstore2_adapter/plugins/serializers.py b/mapstore2_adapter/plugins/serializers.py index 93a751f..543b636 100644 --- a/mapstore2_adapter/plugins/serializers.py +++ b/mapstore2_adapter/plugins/serializers.py @@ -152,6 +152,7 @@ def decode_base64(data): for _lyr in _map_obj['layers']: _lyr_context = None try: + # Retrieve the Layer Params back from GeoNode _gn_layer = layer_detail( caller.request, _lyr['name']) @@ -166,6 +167,15 @@ def decode_base64(data): tb = traceback.format_exc() logger.error(tb) + # Store the Widget ID into the Layer Params of GeoNode + if 'widgetsConfig' in data and 'widgets' in data['widgetsConfig']: + for _widget in data['widgetsConfig']['widgets']: + if 'layer' in _widget and 'name' in _widget['layer']: + if _widget['layer']['name'] == _lyr['name']: + if 'id' in _widget['layer']: + _lyr['extraParams'] = {"msId": _widget['layer']['id']} + + # Store the Capabilities Document into the Layer Params of GeoNode if _lyr_context: if 'capability' in _lyr_context: _lyr['capability'] = _lyr_context['capability']