From 77f217c202e7d3f5d182c295b98bb12b29c8130a Mon Sep 17 00:00:00 2001 From: mattiagiupponi <51856725+mattiagiupponi@users.noreply.github.com> Date: Thu, 29 Jul 2021 09:01:54 +0200 Subject: [PATCH] [Backport 3.3.x][Fixes #7764] Implement GeoApp for Dashboards (#7879) * Dashboard skeleton (#1) Skeleton for dashboards integrations * Fix req * Update requirements.txt * Update requirements * Fix setupcfg for build * Fix flake8 issues * [Fixes #7764] Fix broken tests on geonode.layers.tests.LayersTest Co-authored-by: Alessio Fabiani --- geonode/context_processors.py | 2 ++ geonode/layers/tests.py | 2 +- geonode/settings.py | 1 + geonode/utils.py | 10 ++++++++++ requirements.txt | 2 +- setup.cfg | 2 +- 6 files changed, 16 insertions(+), 3 deletions(-) diff --git a/geonode/context_processors.py b/geonode/context_processors.py index 77bab1c041d..c702929509d 100644 --- a/geonode/context_processors.py +++ b/geonode/context_processors.py @@ -18,6 +18,7 @@ # ######################################################################### +from geonode.utils import get_subclasses_by_model import warnings from django.conf import settings from geonode import get_version @@ -201,5 +202,6 @@ def resource_urls(request): ], ADVANCED_EDIT_EXCLUDE_FIELD=getattr(settings, "ADVANCED_EDIT_EXCLUDE_FIELD", []), PROFILE_EDIT_EXCLUDE_FIELD=getattr(settings, "PROFILE_EDIT_EXCLUDE_FIELD", []), + GEONODE_APPS_INSTALLED=get_subclasses_by_model('GeoApp') ) return defaults diff --git a/geonode/layers/tests.py b/geonode/layers/tests.py index 4359eefa8c0..b5250f940d4 100644 --- a/geonode/layers/tests.py +++ b/geonode/layers/tests.py @@ -349,7 +349,7 @@ def test_layer_save(self): self.assertEqual(response.status_code, 200) from geonode.base.models import HierarchicalKeyword as hk - keywords = hk.resource_keywords_tree(get_user_model().objects.get(username='admin'), type='layer') + keywords = hk.resource_keywords_tree(get_user_model().objects.get(username='admin'), resource_type='layer') self.assertEqual(len(keywords), 13) diff --git a/geonode/settings.py b/geonode/settings.py index 92c44e5ae9e..a51c4ee7370 100644 --- a/geonode/settings.py +++ b/geonode/settings.py @@ -1514,6 +1514,7 @@ 'mapstore2_adapter', 'mapstore2_adapter.geoapps', 'mapstore2_adapter.geoapps.geostories', + 'mapstore2_adapter.geoapps.dashboards', 'geonode_mapstore_client',) def get_geonode_catalogue_service(): diff --git a/geonode/utils.py b/geonode/utils.py index 7076d499898..3f1e2338c40 100755 --- a/geonode/utils.py +++ b/geonode/utils.py @@ -2125,6 +2125,16 @@ def verify_image(stream): return False +def get_subclasses_by_model(model: str): + from django.apps import apps + _app_subclasses = [] + for _model in apps.get_models(): + if _model.__name__ == model: + for _geoapp in _model.__subclasses__(): + _app_subclasses.append(_geoapp.__name__) + return _app_subclasses + + def find_by_attr(lst, val, attr="id"): """ Returns an object if the id matches in any list of objects """ for item in lst: diff --git a/requirements.txt b/requirements.txt index 4fa6fc4a0eb..2861735df52 100644 --- a/requirements.txt +++ b/requirements.txt @@ -87,7 +87,7 @@ pinax-notifications==6.0.0 pinax-ratings==4.0.0 # GeoNode org maintained apps. -# django-geonode-mapstore-client==3.2.1,<4.0.0 +# django-geonode-mapstore-client>=3.3.0,<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 diff --git a/setup.cfg b/setup.cfg index 41545730796..bcb27b39149 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,<4.0.0 + django-geonode-mapstore-client>=3.3.0,<4.0.0 geonode-avatar==5.0.7 geonode-oauth-toolkit==2.2.1 geonode-user-messages==2.0.2