From 3e22f188831a5273b5ff8917ba21cd2d6c1b8ec4 Mon Sep 17 00:00:00 2001 From: afabiani Date: Tue, 27 Jul 2021 17:38:09 +0200 Subject: [PATCH 1/4] [Dependencies] Bump django-geonode-mapstore-client to version >=3.2.1,<4.0.0 --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 8637d8da12b..41545730796 100644 --- a/setup.cfg +++ b/setup.cfg @@ -113,7 +113,7 @@ install_requires = pinax-ratings==4.0.0 # GeoNode org maintained apps. - django-geonode-mapstore-client==3.2.1 + django-geonode-mapstore-client>=3.2.1,<4.0.0 geonode-avatar==5.0.7 geonode-oauth-toolkit==2.2.1 geonode-user-messages==2.0.2 From daa8639e5f40b1c17eef13f2b013efadf341bb04 Mon Sep 17 00:00:00 2001 From: afabiani Date: Tue, 27 Jul 2021 18:18:21 +0200 Subject: [PATCH 2/4] [Proxy] Send back to the client an error in case some exception occurs with the Request --- geonode/maps/models.py | 20 +++++++++++--------- geonode/proxy/views.py | 7 ++++++- geonode/utils.py | 9 +++++---- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/geonode/maps/models.py b/geonode/maps/models.py index af636d224eb..0116bb02fea 100644 --- a/geonode/maps/models.py +++ b/geonode/maps/models.py @@ -586,16 +586,18 @@ def get_legend(self): capability = layer_params.get('capability', {}) # Use '' to represent default layer style style_name = capability.get('style', '') + href = None layer_obj = Layer.objects.filter(alternate=self.name).first() - if ':' in style_name: - style_name = style_name.split(':')[1] - elif layer_obj.default_style: - style_name = layer_obj.default_style.name - href = layer_obj.get_legend_url(style_name=style_name) - style = Style.objects.filter(name=style_name).first() - if style: - # replace map-legend display name if style has a title - style_name = style.sld_title or style_name + if layer_obj: + if ':' in style_name: + style_name = style_name.split(':')[1] + elif layer_obj.default_style: + style_name = layer_obj.default_style.name + href = layer_obj.get_legend_url(style_name=style_name) + style = Style.objects.filter(name=style_name).first() + if style: + # replace map-legend display name if style has a title + style_name = style.sld_title or style_name return {style_name: href} except Exception as e: logger.exception(e) diff --git a/geonode/proxy/views.py b/geonode/proxy/views.py index 43345d465a1..4339a3dd21d 100644 --- a/geonode/proxy/views.py +++ b/geonode/proxy/views.py @@ -59,7 +59,7 @@ from geonode import geoserver # noqa from geonode.monitoring import register_event -TIMEOUT = 300 +TIMEOUT = 30 LINK_TYPES = [L for L in _LT if L.startswith("OGC:")] @@ -188,6 +188,11 @@ def proxy(request, url=None, response_callback=None, headers=headers, timeout=timeout, user=request.user) + if response is None: + return HttpResponse( + content=content, + reason=content, + status=500) content = response.content or response.reason status = response.status_code content_type = response.headers.get('Content-Type') diff --git a/geonode/utils.py b/geonode/utils.py index 4494935ce10..75c293f96a9 100755 --- a/geonode/utils.py +++ b/geonode/utils.py @@ -1473,13 +1473,14 @@ def request(self, url, method='GET', data=None, headers={}, stream=False, msg = f"Request exception [{e}] - TOUT [{_req_tout}] to URL: {url} - headers: {headers}" logger.exception(Exception(msg)) response = None + content = str(e) else: response = session.get(url, headers=headers, timeout=self.timeout) - try: - content = ensure_string(response.content) if not stream else response.raw - except Exception: - content = None + try: + content = ensure_string(response.content) if not stream else response.raw + except Exception: + content = None return (response, content) From 32af3d6a2820c82f875fd4b51f5928f89b38e4d0 Mon Sep 17 00:00:00 2001 From: afabiani Date: Wed, 28 Jul 2021 18:49:33 +0200 Subject: [PATCH 3/4] - Typo --- geonode/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/geonode/utils.py b/geonode/utils.py index 75c293f96a9..7076d499898 100755 --- a/geonode/utils.py +++ b/geonode/utils.py @@ -1477,10 +1477,11 @@ def request(self, url, method='GET', data=None, headers={}, stream=False, else: response = session.get(url, headers=headers, timeout=self.timeout) + if response: try: content = ensure_string(response.content) if not stream else response.raw - except Exception: - content = None + except Exception as e: + content = str(e) return (response, content) From f1ff696309b791fbfd660aa40cab6a2742f06be8 Mon Sep 17 00:00:00 2001 From: afabiani Date: Thu, 29 Jul 2021 08:59:39 +0200 Subject: [PATCH 4/4] Bump django-geonode-mapstore-client to source code 3.3.x --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fc3a989d796..4fa6fc4a0eb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -87,7 +87,8 @@ pinax-notifications==6.0.0 pinax-ratings==4.0.0 # GeoNode org maintained apps. -django-geonode-mapstore-client==3.2.1 +# django-geonode-mapstore-client==3.2.1,<4.0.0 +-e git+https://github.com/GeoNode/geonode-mapstore-client.git@3.3.x#egg=django_geonode_mapstore_client geonode-avatar==5.0.7 geonode-oauth-toolkit==2.2.1 geonode-user-messages==2.0.2