From a3b682d1ba91b4e9bbf6aacfacca11dc8ae56d30 Mon Sep 17 00:00:00 2001 From: mattiagiupponi <51856725+mattiagiupponi@users.noreply.github.com> Date: Fri, 4 Feb 2022 16:28:58 +0100 Subject: [PATCH] [Fixes #8712] Improve/fix GEONODE_APPS_ENABLE handling (#8730) * [Fixes #8712] Improve/fix GEONODE_APPS_ENABLE handling * [Fixes #8712] Exclusion of geoapp from geonode urls if GEONODE_APPS_ENABLE is false --- geonode/api/resourcebase_api.py | 5 ++++- geonode/base/templatetags/base_tags.py | 31 +++++++++++++------------- geonode/geoapps/models.py | 6 ++++- geonode/geoapps/urls.py | 1 + geonode/urls.py | 6 ++--- geonode/utils.py | 2 ++ 6 files changed, 31 insertions(+), 20 deletions(-) diff --git a/geonode/api/resourcebase_api.py b/geonode/api/resourcebase_api.py index ce9cc9adf97..c5fcf3b00f0 100644 --- a/geonode/api/resourcebase_api.py +++ b/geonode/api/resourcebase_api.py @@ -50,7 +50,7 @@ from geonode.base.models import HierarchicalKeyword from geonode.base.bbox_utils import filter_bbox from geonode.groups.models import GroupProfile -from geonode.utils import check_ogc_backend, get_subclasses_by_model +from geonode.utils import check_ogc_backend, get_geoapps_models, get_subclasses_by_model from geonode.security.utils import get_visible_resources from .authentication import OAuthAuthentication from .authorization import GeoNodeAuthorization, GeonodeApiKeyAuthentication @@ -242,6 +242,9 @@ def apply_filters(self, request, applicable_filters): if keywords: filtered = self.filter_h_keywords(filtered, keywords) + if not settings.GEONODE_APPS_ENABLE: + geoapps_model = get_geoapps_models() + filtered = filtered.exclude(resource_type__in=[list(x.models.items())[0][0] for x in geoapps_model]) if metadata_filters: filtered = filtered.filter(**metadata_filters) diff --git a/geonode/base/templatetags/base_tags.py b/geonode/base/templatetags/base_tags.py index 6629ed76db8..79259b45f95 100644 --- a/geonode/base/templatetags/base_tags.py +++ b/geonode/base/templatetags/base_tags.py @@ -305,21 +305,22 @@ def facets(context): facets['layer'] = facets['raster'] + facets['vector'] + facets['remote'] + facets['wms'] - facet_geoapp = _facets_geoapps( - request, - title_filter, - abstract_filter, - purpose_filter, - category_filter, - regions_filter, - owner_filter, - date_gte_filter, - date_lte_filter, - date_range_filter, - extent_filter, - keywords_filter, - authorized - ) + if settings.GEONODE_APPS_ENABLE: + facet_geoapp = _facets_geoapps( + request, + title_filter, + abstract_filter, + purpose_filter, + category_filter, + regions_filter, + owner_filter, + date_gte_filter, + date_lte_filter, + date_range_filter, + extent_filter, + keywords_filter, + authorized + ) facets = { **facets, diff --git a/geonode/geoapps/models.py b/geonode/geoapps/models.py index f323f581c5c..abb006128fa 100644 --- a/geonode/geoapps/models.py +++ b/geonode/geoapps/models.py @@ -17,6 +17,7 @@ # ######################################################################### import logging +from django.conf import settings from django.db import models from django.urls import reverse @@ -124,7 +125,10 @@ def keywords_list(self): return [] def get_absolute_url(self): - return reverse('geoapp_detail', None, [str(self.id)]) + geoapp_view = ( + reverse("geoapp_detail", None, [str(self.id)]) if settings.GEONODE_APPS_ENABLE else reverse("home") + ) + return geoapp_view @property def embed_url(self): diff --git a/geonode/geoapps/urls.py b/geonode/geoapps/urls.py index a102afb843a..bbfa2243f56 100644 --- a/geonode/geoapps/urls.py +++ b/geonode/geoapps/urls.py @@ -29,6 +29,7 @@ apps_list = register_url_event()(TemplateView.as_view(template_name='apps/app_list.html')) + urlpatterns = [ # 'geonode.geoapps.views', url(r'^$', diff --git a/geonode/urls.py b/geonode/urls.py index 099cfb437b0..b10f9a54c06 100644 --- a/geonode/urls.py +++ b/geonode/urls.py @@ -106,9 +106,6 @@ # Documents views url(r'^documents/', include('geonode.documents.urls')), - # Apps views - url(r'^apps/', include('geonode.geoapps.urls')), - # Catalogue views url(r'^catalogue/', include('geonode.catalogue.urls')), @@ -183,6 +180,9 @@ url(r'^tinymce/', include('tinymce.urls')), ] +if settings.GEONODE_APPS_ENABLE: + urlpatterns += [url(r'^apps/', include('geonode.geoapps.urls'))] + urlpatterns += i18n_patterns( url(r'^grappelli/', include('grappelli.urls')), url(r'^admin/', admin.site.urls, name="admin"), diff --git a/geonode/utils.py b/geonode/utils.py index e7e35183497..b7b328dc717 100755 --- a/geonode/utils.py +++ b/geonode/utils.py @@ -2104,6 +2104,8 @@ def verify_image(stream): def get_subclasses_by_model(model: str): + if not settings.GEONODE_APPS_ENABLE: + return [] from django.apps import apps _app_subclasses = [] for _model in apps.get_models():