From f423337704e16814ba0da3763d9183a675846666 Mon Sep 17 00:00:00 2001 From: giohappy Date: Thu, 24 Jan 2019 18:12:14 +0100 Subject: [PATCH 1/3] show OGC links inside layers list from the API --- geonode/api/resourcebase_api.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/geonode/api/resourcebase_api.py b/geonode/api/resourcebase_api.py index e7b48e6435f..c15bc263e28 100644 --- a/geonode/api/resourcebase_api.py +++ b/geonode/api/resourcebase_api.py @@ -744,12 +744,11 @@ def format_objects(self, objects): formatted_obj['default_style'] = self.default_style.dehydrate( bundle, for_list=True) - if self.links.use_in == 'all' or self.links.use_in == 'list': - formatted_obj['links'] = self.dehydrate_links( - bundle) # Add resource uri formatted_obj['resource_uri'] = self.get_resource_uri(bundle) + formatted_obj['links'] = self.dehydrate_ogc_links(bundle) + if 'site_url' not in formatted_obj or len(formatted_obj['site_url']) == 0: formatted_obj['site_url'] = settings.SITEURL @@ -770,7 +769,8 @@ def format_objects(self, objects): formatted_objects.append(formatted_obj) return formatted_objects - def dehydrate_links(self, bundle): + + def _dehydrate_links(self, bundle, link_types = None): """Dehydrate links field.""" dehydrated = [] @@ -782,12 +782,22 @@ def dehydrate_links(self, bundle): 'mime', 'url' ] - for l in obj.link_set.all(): + + links = obj.link_set.all() + if link_types: + links = links.filter(link_type__in=link_types) + for l in links: formatted_link = model_to_dict(l, fields=link_fields) dehydrated.append(formatted_link) return dehydrated + def dehydrate_links(self, bundle): + return self._dehydrate_links(bundle) + + def dehydrate_ogc_links(self, bundle): + return self._dehydrate_links(bundle, ['OGC:WMS', 'OGC:WFS', 'OGC:WCS']) + def dehydrate_gtype(self, bundle): return bundle.obj.gtype From 094e7a1f0847194ae21132a8c792442f8ec6ba96 Mon Sep 17 00:00:00 2001 From: giohappy Date: Thu, 24 Jan 2019 18:17:46 +0100 Subject: [PATCH 2/3] make flake happy --- geonode/api/resourcebase_api.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/geonode/api/resourcebase_api.py b/geonode/api/resourcebase_api.py index c15bc263e28..c0db2111fae 100644 --- a/geonode/api/resourcebase_api.py +++ b/geonode/api/resourcebase_api.py @@ -769,8 +769,7 @@ def format_objects(self, objects): formatted_objects.append(formatted_obj) return formatted_objects - - def _dehydrate_links(self, bundle, link_types = None): + def _dehydrate_links(self, bundle, link_types=None): """Dehydrate links field.""" dehydrated = [] From 3101ce04038a53d14bdf3a9f82abb91f54d5a514 Mon Sep 17 00:00:00 2001 From: giohappy Date: Thu, 24 Jan 2019 23:01:12 +0100 Subject: [PATCH 3/3] removed test on links in layers list output --- geonode/tests/integration.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/geonode/tests/integration.py b/geonode/tests/integration.py index a4527700dfe..0bb5c92d228 100644 --- a/geonode/tests/integration.py +++ b/geonode/tests/integration.py @@ -1582,8 +1582,6 @@ def test_layer_interaction(self): objects = self.deserialize(resp)['objects'] self.assertEqual(len(objects), 1) obj = objects[0] - # Should not have links - self.assertFalse('links' in obj) # Should not have styles self.assertTrue('styles' not in obj) # Should have default_style