From ac26caa81f5ffc7cbfdf5edd675b0f4013592f14 Mon Sep 17 00:00:00 2001 From: Emanuele Tajariol Date: Thu, 12 Oct 2023 16:32:11 +0200 Subject: [PATCH] [Fixes #11579] Use autocomplete API for editing linked resources (#11584) --- geonode/base/forms.py | 44 ++++++---- geonode/base/tests.py | 79 +++++++++++++----- geonode/base/urls.py | 6 ++ geonode/base/views.py | 22 +++++ .../documents/document_metadata.html | 16 ---- .../templates/layouts/doc_panels.html | 2 +- geonode/documents/tests.py | 12 +-- .../geoapps/templates/apps/app_metadata.html | 16 ---- .../geoapps/templates/layouts/app_panels.html | 2 +- .../templates/datasets/dataset_metadata.html | 16 ---- geonode/layers/templates/layouts/panels.html | 2 +- geonode/locale/it/LC_MESSAGES/django.mo | Bin 161121 -> 161218 bytes geonode/locale/it/LC_MESSAGES/django.po | 10 ++- .../maps/templates/layouts/map_panels.html | 2 +- geonode/maps/templates/maps/map_metadata.html | 16 ---- 15 files changed, 135 insertions(+), 110 deletions(-) diff --git a/geonode/base/forms.py b/geonode/base/forms.py index 69da9e6bf50..1c720aac2d0 100644 --- a/geonode/base/forms.py +++ b/geonode/base/forms.py @@ -20,9 +20,11 @@ import html import json import logging + from django.db.models.query import QuerySet from bootstrap3_datetime.widgets import DateTimePicker from dal import autocomplete +import dal.forward from django import forms from django.conf import settings from django.contrib.auth import get_user_model @@ -347,35 +349,45 @@ def _get_thesauro_title_label(item, lang): class LinkedResourceForm(forms.ModelForm): - linked_resources = forms.MultipleChoiceField(label=_("Link to"), required=False) + linked_resources = forms.ModelMultipleChoiceField( + label=_("Related resources"), + required=False, + queryset=None, + widget=autocomplete.ModelSelect2Multiple(url="autocomplete_linked_resource"), + ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields["linked_resources"].choices = self.generate_link_choices() - self.fields["linked_resources"].initial = LinkedResource.get_target_ids(self.instance) + + # this is used to automatically validate the POSTed back values + self.fields["linked_resources"].queryset = ResourceBase.objects.exclude(pk=self.instance.id) + # these are the LinkedResource already linked to this resource + self.fields["linked_resources"].initial = LinkedResource.get_target_ids(self.instance).all() + # this is used by the autocomplete view to exclude current resource + self.fields["linked_resources"].widget.forward.append( + dal.forward.Const( + self.instance.id, + "exclude", + ) + ) class Meta: model = ResourceBase fields = ["linked_resources"] - def generate_link_choices(self, resources=None): - if resources is None: - resources = ResourceBase.objects.exclude(pk=self.instance.id).order_by("title") - - return [[obj.id, f"{obj.title} ({obj.polymorphic_ctype.model})"] for obj in resources] - def save_linked_resources(self, links_field="linked_resources"): # create and fetch desired links target_ids = [] - for res_id in self.cleaned_data[links_field]: - linked, _ = LinkedResource.objects.get_or_create(source=self.instance, target_id=res_id, internal=False) - target_ids.append(res_id) + for res in self.cleaned_data[links_field]: + LinkedResource.objects.get_or_create(source=self.instance, target=res, internal=False) + target_ids.append(res.pk) # delete remaining links - # DocumentResourceLink.objects.filter(document_id=self.instance.id).exclude( - # pk__in=[i.pk for i in instances] - # ).delete() - (LinkedResource.objects.filter(source_id=self.instance.id).exclude(target_id__in=target_ids).delete()) + ( + LinkedResource.objects.filter(source_id=self.instance.id, internal=False) + .exclude(target_id__in=target_ids) + .delete() + ) class ResourceBaseDateTimePicker(DateTimePicker): diff --git a/geonode/base/tests.py b/geonode/base/tests.py index 4c11e59ee58..a217d78a0f4 100644 --- a/geonode/base/tests.py +++ b/geonode/base/tests.py @@ -17,20 +17,31 @@ # ######################################################################### +import json import logging import os -from django.db.utils import IntegrityError, OperationalError import requests - +from PIL import Image +from io import BytesIO from uuid import uuid4 from unittest.mock import patch, Mock +from guardian.shortcuts import assign_perm + +from django.db.utils import IntegrityError, OperationalError from django.core.exceptions import ObjectDoesNotExist +from django.conf import settings +from django.contrib.gis.geos import Polygon, GEOSGeometry +from django.template import Template, Context +from django.contrib.auth import get_user_model +from geonode.storage.manager import storage_manager +from django.test import Client, TestCase, override_settings, SimpleTestCase +from django.shortcuts import reverse +from django.utils import translation +from django.core.files import File +from django.core.management import call_command +from django.core.management.base import CommandError -from PIL import Image -from io import BytesIO -from guardian.shortcuts import assign_perm from geonode.base.populate_test_data import create_single_dataset - from geonode.maps.models import Map from geonode.resource.utils import KeywordHandler from geonode.thumbs import utils as thumb_utils @@ -54,15 +65,6 @@ ThesaurusKeyword, generate_thesaurus_reference, ) -from django.conf import settings -from django.contrib.gis.geos import Polygon, GEOSGeometry -from django.template import Template, Context -from django.contrib.auth import get_user_model -from geonode.storage.manager import storage_manager -from django.test import Client, TestCase, override_settings, SimpleTestCase -from django.shortcuts import reverse -from django.utils import translation - from geonode.base.middleware import ReadOnlyMiddleware, MaintenanceMiddleware from geonode.base.templatetags.base_tags import get_visibile_resources, facets from geonode.base.templatetags.thesaurus import ( @@ -76,10 +78,6 @@ from geonode.base.templatetags.user_messages import show_notification from geonode import geoserver from geonode.decorators import on_ogc_backend - -from django.core.files import File -from django.core.management import call_command -from django.core.management.base import CommandError from geonode.base.forms import ThesaurusAvailableForm, THESAURUS_RESULT_LIST_SEPERATOR from geonode.resource.manager import resource_manager @@ -1174,3 +1172,46 @@ def test_regions_are_assigned_if_handler_is_used(self): self.assertTrue(dataset.regions.exists()) self.assertEqual(1, dataset.regions.count()) self.assertEqual("Global", dataset.regions.first().name) + + +class LinkedResourcesTest(GeoNodeBaseTestSupport): + def test_autocomplete_linked_resource(self): + d = [] + try: + user, _ = get_user_model().objects.get_or_create(username="admin") + + for t in ("dataset1", "dataset2", "other"): + d.append(ResourceBase.objects.create(title=t, owner=user, is_approved=True, is_published=True)) + + web_client = Client() + web_client.force_login(user) + url_name = "autocomplete_linked_resource" + + # get all resources + response = web_client.get(reverse(url_name)) + rjson = response.json() + + self.assertEqual(response.status_code, 200, "Can not get autocomplete API") + self.assertIn("results", rjson, "Can not find results") + self.assertEqual(len(rjson["results"]), 3, "Unexpected results count") + + # filter by title + response = web_client.get( + reverse(url_name), + data={ + "q": "dataset", + }, + ) + rjson = response.json() + self.assertEqual(len(rjson["results"]), 2, "Unexpected results count") + + # filter by title, exclude + response = web_client.get( + reverse(url_name), data={"q": "dataset", "forward": json.dumps({"exclude": d[0].id})} + ) + rjson = response.json() + self.assertEqual(len(rjson["results"]), 1, "Unexpected results count") + + finally: + for _ in d: + _.delete() diff --git a/geonode/base/urls.py b/geonode/base/urls.py index 76a22d6138a..77e3d226b4e 100644 --- a/geonode/base/urls.py +++ b/geonode/base/urls.py @@ -27,6 +27,7 @@ ResourceBaseAutocomplete, HierarchicalKeywordAutocomplete, ThesaurusKeywordLabelAutocomplete, + LinkedResourcesAutocomplete, ) @@ -36,6 +37,11 @@ ResourceBaseAutocomplete.as_view(), name="autocomplete_base", ), + url( + r"^autocomplete_linked_resource/$", + LinkedResourcesAutocomplete.as_view(), + name="autocomplete_linked_resource", + ), url( r"^autocomplete_region/$", RegionAutocomplete.as_view(), diff --git a/geonode/base/views.py b/geonode/base/views.py index 7d5d08aa692..ab7359c8b3b 100644 --- a/geonode/base/views.py +++ b/geonode/base/views.py @@ -282,6 +282,28 @@ def get_queryset(self): )[:100] +class LinkedResourcesAutocomplete(autocomplete.Select2QuerySetView): + def get_queryset(self): + qs = ResourceBase.objects.order_by("title") + + if self.q: + qs = qs.filter(title__icontains=self.q) + + if self.forwarded and "exclude" in self.forwarded: + qs = qs.exclude(pk=self.forwarded["exclude"]) + + return get_visible_resources( + qs, + self.request.user if self.request else None, + admin_approval_required=settings.ADMIN_MODERATE_UPLOADS, + unpublished_not_visible=settings.RESOURCE_PUBLISHING, + private_groups_not_visibile=settings.GROUP_PRIVATE_RESOURCES, + ) + + def get_result_label(self, result): + return f"{result.title} [{_(result.polymorphic_ctype.model)}]" + + class RegionAutocomplete(SimpleSelect2View): model = Region filter_arg = "name__icontains" diff --git a/geonode/documents/templates/documents/document_metadata.html b/geonode/documents/templates/documents/document_metadata.html index a04a7323b50..80b553f9c35 100644 --- a/geonode/documents/templates/documents/document_metadata.html +++ b/geonode/documents/templates/documents/document_metadata.html @@ -84,19 +84,3 @@

{% trans "Metadata Provider" %}

{% endblock body_outer %} - -{% block extra_script %} -{{ block.super }} - - -{% endblock extra_script %} diff --git a/geonode/documents/templates/layouts/doc_panels.html b/geonode/documents/templates/layouts/doc_panels.html index 0cbef86d490..0c7c10667ba 100644 --- a/geonode/documents/templates/layouts/doc_panels.html +++ b/geonode/documents/templates/layouts/doc_panels.html @@ -315,7 +315,7 @@ {% endblock doc_title %} {% block doc_linked_resources %}
- + {{ document_form.linked_resources }}
{% endblock doc_linked_resources %} diff --git a/geonode/documents/tests.py b/geonode/documents/tests.py index 5f09441c3f9..164abe7d519 100644 --- a/geonode/documents/tests.py +++ b/geonode/documents/tests.py @@ -655,9 +655,9 @@ def test_create_document_with_links(self): mixin1 = LinkedResourceForm() mixin1.instance = d - mixin1.cleaned_data = dict( - linked_resources=[r.id for r in resources], - ) + mixin1.cleaned_data = { + "linked_resources": resources, + } mixin1.save_linked_resources() for resource in resources: @@ -668,9 +668,9 @@ def test_create_document_with_links(self): mixin2 = LinkedResourceForm() mixin2.instance = d - mixin2.cleaned_data = dict( - linked_resources=[r.id for r in layers], - ) + mixin2.cleaned_data = { + "linked_resources": layers, + } mixin2.save_linked_resources() for resource in layers: diff --git a/geonode/geoapps/templates/apps/app_metadata.html b/geonode/geoapps/templates/apps/app_metadata.html index 18769664be2..17b2de35a97 100644 --- a/geonode/geoapps/templates/apps/app_metadata.html +++ b/geonode/geoapps/templates/apps/app_metadata.html @@ -85,19 +85,3 @@

{% trans "Metadata Provider" %}

{{ block.super }} {% endblock body_outer %} - -{% block extra_script %} -{{ block.super }} - - -{% endblock extra_script %} \ No newline at end of file diff --git a/geonode/geoapps/templates/layouts/app_panels.html b/geonode/geoapps/templates/layouts/app_panels.html index 4763d7a1257..855c10b1429 100644 --- a/geonode/geoapps/templates/layouts/app_panels.html +++ b/geonode/geoapps/templates/layouts/app_panels.html @@ -299,7 +299,7 @@ {% endblock %} {% block geoapp_linked_resources %}
- + {{ geoapp_form.linked_resources }}
{% endblock geoapp_linked_resources %} diff --git a/geonode/layers/templates/datasets/dataset_metadata.html b/geonode/layers/templates/datasets/dataset_metadata.html index c01955351ff..cfb423709ac 100644 --- a/geonode/layers/templates/datasets/dataset_metadata.html +++ b/geonode/layers/templates/datasets/dataset_metadata.html @@ -109,19 +109,3 @@

{% trans "Metadata Provider" %}

{{ block.super }} {% endblock body_outer %} - -{% block extra_script %} -{{ block.super }} - - -{% endblock extra_script %} \ No newline at end of file diff --git a/geonode/layers/templates/layouts/panels.html b/geonode/layers/templates/layouts/panels.html index d49f35726b2..dfd9d14e40a 100644 --- a/geonode/layers/templates/layouts/panels.html +++ b/geonode/layers/templates/layouts/panels.html @@ -333,7 +333,7 @@ {% endblock dataset_title %} {% block dataset_linked_resources %}
- + {{ dataset_form.linked_resources }}
{% endblock dataset_linked_resources %} diff --git a/geonode/locale/it/LC_MESSAGES/django.mo b/geonode/locale/it/LC_MESSAGES/django.mo index ca8e5e1987454996ec2d980155ea22c053d2d976..1b322e2d5ac2449ce20b34988a68104c7eb05a20 100644 GIT binary patch delta 34171 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 QO`8Sg-n^!5V8Xcn55+gi!vFvP diff --git a/geonode/locale/it/LC_MESSAGES/django.po b/geonode/locale/it/LC_MESSAGES/django.po index 8791b1cfec4..7b4f071266c 100644 --- a/geonode/locale/it/LC_MESSAGES/django.po +++ b/geonode/locale/it/LC_MESSAGES/django.po @@ -39,7 +39,7 @@ msgstr "" "Project-Id-Version: GeoNode\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-07-08 09:02+0300\n" -"PO-Revision-Date: 2023-07-20 11:35+0200\n" +"PO-Revision-Date: 2023-10-11 11:47+0200\n" "Last-Translator: Julien Collaer \n" "Language-Team: Italian (http://www.transifex.com/geonode/geonode/language/it/)\n" "Language: it\n" @@ -947,6 +947,9 @@ msgstr "Classifica velocità" msgid "Link to" msgstr "Collegamento a" +msgid "Related resources" +msgstr "Risorse correlate" + msgid "File" msgstr "File" @@ -3283,6 +3286,11 @@ msgid_plural "Maps" msgstr[0] "Mappa" msgstr[1] "Mappe" +msgid "map" +msgid_plural "maps" +msgstr[0] "mappa" +msgstr[1] "mappe" + msgid "Map Layers" msgstr "Livelli della mappa" diff --git a/geonode/maps/templates/layouts/map_panels.html b/geonode/maps/templates/layouts/map_panels.html index 96b3892117c..1dc3deb8ff6 100644 --- a/geonode/maps/templates/layouts/map_panels.html +++ b/geonode/maps/templates/layouts/map_panels.html @@ -319,7 +319,7 @@ {% endblock map_title %} {% block map_linked_resources %}
- + {{ map_form.linked_resources }}
{% endblock map_linked_resources %} diff --git a/geonode/maps/templates/maps/map_metadata.html b/geonode/maps/templates/maps/map_metadata.html index 0fece0b382f..dcc99f734e7 100644 --- a/geonode/maps/templates/maps/map_metadata.html +++ b/geonode/maps/templates/maps/map_metadata.html @@ -87,19 +87,3 @@

{% trans "Metadata Provider" %}

{{ block.super }} {% endblock body_outer %} - -{% block extra_script %} -{{ block.super }} - - -{% endblock extra_script %}