diff --git a/cypress/integration/nav_tabs.js b/cypress/integration/nav_tabs.js index 26c0014233..34e48c58f5 100644 --- a/cypress/integration/nav_tabs.js +++ b/cypress/integration/nav_tabs.js @@ -22,9 +22,9 @@ describe('Nav tabs properties/attachments', () => { cy.visit(href); }); cy.get("a#tab-properties").should('have.class', 'active'); - cy.get("a#tab-attachments-accessibility").should('not.have.class', 'active'); - cy.get("a#tab-attachments-accessibility").click(); - cy.get("a#tab-attachments-accessibility").should('have.class', 'active'); + cy.get("a#tab-related-objects").should('not.have.class', 'active'); + cy.get("a#tab-related-objects").click(); + cy.get("a#tab-related-objects").should('have.class', 'active'); cy.get("a#tab-properties").should('not.have.class', 'active'); }); }); diff --git a/docs/changelog.rst b/docs/changelog.rst index 87c8183fc6..19b737c071 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,12 +5,23 @@ CHANGELOG 2.111.0+dev (XXXX-XX-XX) ---------------------------- +**Performances** + +- Delay loading filter form in List Views (refs #2967) + +**UI/UX** + +- Move the related objects from the properties tab into their own tab, on objects details pages (refs #2967) +- Move Treks' accessibility pictures into the attached files tab (refs #2967) +- Removes the display of an object's structure in its properties tab title + **Documentation** - Update theme color - Fix typo in documentation - Update and homogenize README.rst + 2.111.0 (2024-12-05) ---------------------------- diff --git a/geotrek/authent/templates/authent/authent_propertiestab_fragment.html b/geotrek/authent/templates/authent/authent_propertiestab_fragment.html deleted file mode 100644 index 9bf0c109e6..0000000000 --- a/geotrek/authent/templates/authent/authent_propertiestab_fragment.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load i18n %} -{% if object.structure %} - {{ object.structure }} -{% endif %} \ No newline at end of file diff --git a/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po index 437d36b743..edaee0eb4f 100644 --- a/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po +++ b/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-20 12:48+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,10 +45,6 @@ msgstr "" msgid "Cirkwi POI categories" msgstr "" -#, python-brace-format -msgid "Failed to download {url}. HTTP status code {status_code}" -msgstr "" - #, python-brace-format msgid "" "{model} '{val}' did not exist in Geotrek-Admin and was automatically created" diff --git a/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po index 437d36b743..edaee0eb4f 100644 --- a/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po +++ b/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-20 12:48+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,10 +45,6 @@ msgstr "" msgid "Cirkwi POI categories" msgstr "" -#, python-brace-format -msgid "Failed to download {url}. HTTP status code {status_code}" -msgstr "" - #, python-brace-format msgid "" "{model} '{val}' did not exist in Geotrek-Admin and was automatically created" diff --git a/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po index 437d36b743..edaee0eb4f 100644 --- a/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po +++ b/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-20 12:48+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,10 +45,6 @@ msgstr "" msgid "Cirkwi POI categories" msgstr "" -#, python-brace-format -msgid "Failed to download {url}. HTTP status code {status_code}" -msgstr "" - #, python-brace-format msgid "" "{model} '{val}' did not exist in Geotrek-Admin and was automatically created" diff --git a/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po index 065a22ce90..224ed19959 100644 --- a/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-20 12:30+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,10 +44,6 @@ msgstr "Catégorie de POI Cirkwi" msgid "Cirkwi POI categories" msgstr "Catégories de POI Cirkwi" -#, python-brace-format -msgid "Failed to download {url}. HTTP status code {status_code}" -msgstr "Téléchargement impossible de {url}. Code d'erreur HTTP {status_code}" - #, python-brace-format msgid "" "{model} '{val}' did not exist in Geotrek-Admin and was automatically created" diff --git a/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po index 437d36b743..edaee0eb4f 100644 --- a/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po +++ b/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-20 12:48+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,10 +45,6 @@ msgstr "" msgid "Cirkwi POI categories" msgstr "" -#, python-brace-format -msgid "Failed to download {url}. HTTP status code {status_code}" -msgstr "" - #, python-brace-format msgid "" "{model} '{val}' did not exist in Geotrek-Admin and was automatically created" diff --git a/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po index 437d36b743..edaee0eb4f 100644 --- a/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-20 12:48+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,10 +45,6 @@ msgstr "" msgid "Cirkwi POI categories" msgstr "" -#, python-brace-format -msgid "Failed to download {url}. HTTP status code {status_code}" -msgstr "" - #, python-brace-format msgid "" "{model} '{val}' did not exist in Geotrek-Admin and was automatically created" diff --git a/geotrek/common/forms.py b/geotrek/common/forms.py index c163145f98..6ed0860623 100644 --- a/geotrek/common/forms.py +++ b/geotrek/common/forms.py @@ -388,7 +388,7 @@ def __init__(self, request, *args, **kwargs): self.helper.form_style = "default" self.helper.label_class = 'col-md-3' self.helper.field_class = 'col-md-9' - self.fields['next'].initial = f"{self._object.get_detail_url()}?tab=attachments-accessibility" + self.fields['next'].initial = f"{self._object.get_detail_url()}?tab=attachments" if not self.instance.pk: form_actions = [ @@ -423,7 +423,7 @@ class Meta: def success_url(self): obj = self._object - return f"{obj.get_detail_url()}?tab=attachments-accessibility" + return f"{obj.get_detail_url()}?tab=attachments" def clean_attachment_accessibility_file(self): uploaded_image = self.cleaned_data.get("attachment_accessibility_file", False) diff --git a/geotrek/common/locale/de/LC_MESSAGES/django.po b/geotrek/common/locale/de/LC_MESSAGES/django.po index 242d48b728..5993469057 100644 --- a/geotrek/common/locale/de/LC_MESSAGES/django.po +++ b/geotrek/common/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-06 08:26+0000\n" +"POT-Creation-Date: 2025-01-07 14:35+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -695,6 +695,16 @@ msgctxt "West" msgid "W" msgstr "" +msgid "" +"Feature geometry cannot be converted to a single continuous LineString " +"feature" +msgstr "" + +msgid "" +"Geometries from various features cannot be converted to a single continuous " +"LineString feature" +msgstr "" + msgid "Reports" msgstr "" diff --git a/geotrek/common/locale/en/LC_MESSAGES/django.po b/geotrek/common/locale/en/LC_MESSAGES/django.po index 242d48b728..5993469057 100644 --- a/geotrek/common/locale/en/LC_MESSAGES/django.po +++ b/geotrek/common/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-06 08:26+0000\n" +"POT-Creation-Date: 2025-01-07 14:35+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -695,6 +695,16 @@ msgctxt "West" msgid "W" msgstr "" +msgid "" +"Feature geometry cannot be converted to a single continuous LineString " +"feature" +msgstr "" + +msgid "" +"Geometries from various features cannot be converted to a single continuous " +"LineString feature" +msgstr "" + msgid "Reports" msgstr "" diff --git a/geotrek/common/locale/es/LC_MESSAGES/django.po b/geotrek/common/locale/es/LC_MESSAGES/django.po index cfdf07737a..bbbe3118bb 100644 --- a/geotrek/common/locale/es/LC_MESSAGES/django.po +++ b/geotrek/common/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-06 08:26+0000\n" +"POT-Creation-Date: 2025-01-07 14:35+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Olivia Duval \n" "Language-Team: LANGUAGE \n" @@ -695,6 +695,16 @@ msgctxt "West" msgid "W" msgstr "" +msgid "" +"Feature geometry cannot be converted to a single continuous LineString " +"feature" +msgstr "" + +msgid "" +"Geometries from various features cannot be converted to a single continuous " +"LineString feature" +msgstr "" + msgid "Reports" msgstr "" diff --git a/geotrek/common/locale/fr/LC_MESSAGES/django.po b/geotrek/common/locale/fr/LC_MESSAGES/django.po index b3f66c1095..4bbb275daa 100644 --- a/geotrek/common/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/common/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-06 08:26+0000\n" +"POT-Creation-Date: 2025-01-07 14:35+0000\n" "PO-Revision-Date: 2020-09-23 07:10+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" @@ -695,6 +695,16 @@ msgctxt "West" msgid "W" msgstr "" +msgid "" +"Feature geometry cannot be converted to a single continuous LineString " +"feature" +msgstr "" + +msgid "" +"Geometries from various features cannot be converted to a single continuous " +"LineString feature" +msgstr "" + msgid "Reports" msgstr "" diff --git a/geotrek/common/locale/nl/LC_MESSAGES/django.po b/geotrek/common/locale/nl/LC_MESSAGES/django.po index 242d48b728..5993469057 100644 --- a/geotrek/common/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/common/locale/nl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-06 08:26+0000\n" +"POT-Creation-Date: 2025-01-07 14:35+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -695,6 +695,16 @@ msgctxt "West" msgid "W" msgstr "" +msgid "" +"Feature geometry cannot be converted to a single continuous LineString " +"feature" +msgstr "" + +msgid "" +"Geometries from various features cannot be converted to a single continuous " +"LineString feature" +msgstr "" + msgid "Reports" msgstr "" diff --git a/geotrek/common/static/common/main.js b/geotrek/common/static/common/main.js deleted file mode 100644 index 5028853b65..0000000000 --- a/geotrek/common/static/common/main.js +++ /dev/null @@ -1,5 +0,0 @@ -$(window).on('entity:view:list', function () { - // Move all topology-filters to separate tab - $('#mainfilter .right-filter').parent('p') - .detach().appendTo('#mainfilter > .right'); -}); diff --git a/geotrek/common/templates/common/common_extrabody_fragment.html b/geotrek/common/templates/common/common_extrabody_fragment.html deleted file mode 100644 index ec8c160130..0000000000 --- a/geotrek/common/templates/common/common_extrabody_fragment.html +++ /dev/null @@ -1,2 +0,0 @@ -{% load static %} - diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 7f7a02b2ad..bdeebbd334 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -42,7 +42,6 @@

{{ object }}

{% block detailspanel %} -

{% trans "Attributes" %}

diff --git a/geotrek/common/tests/test_attachments.py b/geotrek/common/tests/test_attachments.py index db17c15482..7878a8091c 100644 --- a/geotrek/common/tests/test_attachments.py +++ b/geotrek/common/tests/test_attachments.py @@ -230,7 +230,7 @@ def attachmentPostData(self): 'legend': "A legend", 'attachment_accessibility_file': get_dummy_uploaded_image(name='face.png'), 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" } return data @@ -238,7 +238,7 @@ def test_upload_redirects_to_trek_detail_url(self): response = self.client.post(add_url_for_obj(self.object), data=self.attachmentPostData()) self.assertEqual(response.status_code, 302) - self.assertEqual(response['location'], f"{self.object.get_detail_url()}?tab=attachments-accessibility") + self.assertEqual(response['location'], f"{self.object.get_detail_url()}?tab=attachments") self.assertEqual(3, AccessibilityAttachment.objects.count()) self.client.force_login(user=self.user) @@ -278,7 +278,7 @@ def attachmentPostData(self): 'legend': "A legend", 'attachment_accessibility_file': get_dummy_uploaded_image(name='face.png'), 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" } return data @@ -300,7 +300,7 @@ def test_post_update_url(self): data=self.attachmentPostData(), ) self.assertEqual(response.status_code, 302) - self.assertEqual(response['location'], f"{self.object.get_detail_url()}?tab=attachments-accessibility") + self.assertEqual(response['location'], f"{self.object.get_detail_url()}?tab=attachments") self.attachment.refresh_from_db() self.assertEqual(self.attachment.legend, "A legend") self.client.force_login(user=self.user) @@ -318,7 +318,7 @@ def test_get_delete_with_perms_url(self): self.client.force_login(user=self.superuser) response = self.client.get(delete_url_for_obj(self.attachment)) self.assertEqual(response.status_code, 302) - self.assertEqual(response['location'], f"{self.object.get_detail_url()}?tab=attachments-accessibility") + self.assertEqual(response['location'], f"{self.object.get_detail_url()}?tab=attachments") self.assertEqual(1, AccessibilityAttachment.objects.count()) self.client.force_login(user=self.user) @@ -334,7 +334,7 @@ def user_perms(p, obj=None): self.client.force_login(user=self.user) response = self.client.get(delete_url_for_obj(self.attachment)) self.assertEqual(response.status_code, 302) - self.assertEqual(response['location'], f"{self.object.get_detail_url()}?tab=attachments-accessibility") + self.assertEqual(response['location'], f"{self.object.get_detail_url()}?tab=attachments") self.assertEqual(2, AccessibilityAttachment.objects.count()) response = self.client.get(delete_url_for_obj(self.attachment), follow=True) self.assertIn(b'You are not allowed to delete this attachment.', response.content) @@ -446,7 +446,7 @@ def test_attachment_is_larger_max_size(self): 'attachment_accessibility_file': SimpleUploadedFile(file.name, file.read(), content_type='image/png'), 'author': "newauthor", 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" } ) self.assertEqual(response.status_code, 302) @@ -462,7 +462,7 @@ def test_attachment_is_larger_max_size(self): 'attachment_accessibility_file': big_image, 'author': "newauthor", 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" }, follow=True ) @@ -488,7 +488,7 @@ def test_attachment_is_not_wide_enough(self): 'author': "newauthor", 'legend': "A legend", 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" } ) self.assertEqual(response.status_code, 302) @@ -508,7 +508,7 @@ def test_attachment_is_not_wide_enough(self): 'attachment_accessibility_file': SimpleUploadedFile(small_file.name, small_file.read(), content_type='image/png'), 'author': "newauthor", 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" }, follow=True ) @@ -535,7 +535,7 @@ def test_attachment_is_not_tall_enough(self): 'attachment_accessibility_file': SimpleUploadedFile(file.name, file.read(), content_type='image/png'), 'author': "newauthor", 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" } ) self.assertEqual(response.status_code, 302) @@ -555,7 +555,7 @@ def test_attachment_is_not_tall_enough(self): 'author': "newauthor", 'legend': "A legend", 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" }, follow=True ) @@ -577,7 +577,7 @@ def test_attachment_deleted(self): 'author': "newauthor", 'legend': "A legend", 'info_accessibility': 'slope', - 'next': f"{self.object.get_detail_url()}?tab=attachments-accessibility" + 'next': f"{self.object.get_detail_url()}?tab=attachments" } ) self.assertEqual(response.status_code, 302) diff --git a/geotrek/common/views.py b/geotrek/common/views.py index 2f2aab8edd..76824e0b9b 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -43,7 +43,7 @@ from mapentity import views as mapentity_views from mapentity.helpers import api_bbox from mapentity.registry import app_settings, registry -from mapentity.views import MapEntityList +from mapentity.views import MapEntityList, MapEntityFilter from paperclip import settings as settings_paperclip from paperclip.views import _handle_attachment_form from rest_framework import mixins, viewsets @@ -292,14 +292,19 @@ def import_update_json(request): class HDViewPointList(MapEntityList): queryset = HDViewPoint.objects.all() - filterform = HDViewPointFilterSet columns = ['id', 'title'] +class HDViewPointFilter(MapEntityFilter): + model = HDViewPoint + filterset_class = HDViewPointFilterSet + + class HDViewPointViewSet(GeotrekMapentityViewSet): model = HDViewPoint serializer_class = HDViewPointSerializer geojson_serializer_class = HDViewPointGeoJSONSerializer + filterset_class = HDViewPointFilterSet mapentity_list_class = HDViewPointList def get_queryset(self): @@ -482,7 +487,7 @@ def delete_attachment_accessibility(request, attachment_pk): else: error_msg = _('You are not allowed to delete this attachment.') messages.error(request, error_msg) - return HttpResponseRedirect(f"{obj.get_detail_url()}?tab=attachments-accessibility") + return HttpResponseRedirect(f"{obj.get_detail_url()}?tab=attachments") home = last_list diff --git a/geotrek/core/templates/core/path_detail_attributes.html b/geotrek/core/templates/core/path_detail_attributes.html index 6736e81e65..eecf9b27a6 100644 --- a/geotrek/core/templates/core/path_detail_attributes.html +++ b/geotrek/core/templates/core/path_detail_attributes.html @@ -3,7 +3,6 @@ {% block attributes %} -

{% trans "Attributes" %}

{{ object|verbose:"title" }}
diff --git a/geotrek/core/templates/core/trail_detail.html b/geotrek/core/templates/core/trail_detail.html index 4892505243..11d1fc3827 100644 --- a/geotrek/core/templates/core/trail_detail.html +++ b/geotrek/core/templates/core/trail_detail.html @@ -8,4 +8,4 @@
{% trans "GPX" %} {% trans "KML" %} -{% endblock download %} \ No newline at end of file +{% endblock download %} diff --git a/geotrek/core/templates/core/trail_detail_attributes.html b/geotrek/core/templates/core/trail_detail_attributes.html index 2b05d58d28..c5e9037ede 100644 --- a/geotrek/core/templates/core/trail_detail_attributes.html +++ b/geotrek/core/templates/core/trail_detail_attributes.html @@ -3,7 +3,6 @@ {% block attributes %} -

{% trans "Attributes" %}

{{ object|verbose:"name" }}
diff --git a/geotrek/core/views.py b/geotrek/core/views.py index 5154f27c85..cc92628638 100644 --- a/geotrek/core/views.py +++ b/geotrek/core/views.py @@ -19,7 +19,7 @@ from django.views.generic.detail import BaseDetailView from mapentity.serializers import GPXSerializer from mapentity.views import (MapEntityList, MapEntityDetail, MapEntityDocument, MapEntityCreate, MapEntityUpdate, - MapEntityDelete, MapEntityFormat, LastModifiedMixin) + MapEntityDelete, MapEntityFormat, LastModifiedMixin, MapEntityFilter) from rest_framework.decorators import action from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer from rest_framework.response import Response @@ -60,14 +60,19 @@ def get_initial(self): class PathList(CustomColumnsMixin, MapEntityList): queryset = Path.objects.all() - filterform = PathFilterSet mandatory_columns = ['id', 'checkbox', 'name', 'length'] default_extra_columns = ['length_2d'] unorderable_columns = ['checkbox'] searchable_columns = ['id', 'name'] +class PathFilter(MapEntityFilter): + model = Path + filterset_class = PathFilterSet + + class PathFormatList(MapEntityFormat, PathList): + filterset_class = PathFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'valid', 'visible', 'name', 'comments', 'departure', 'arrival', @@ -343,13 +348,18 @@ class CertificationTrailMixin(FormsetMixin): class TrailList(CustomColumnsMixin, MapEntityList): queryset = Trail.objects.existing() - filterform = TrailFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['departure', 'arrival', 'length'] searchable_columns = ['id', 'name', 'departure', 'arrival', ] +class TrailFilter(MapEntityFilter): + model = Trail + filterset_class = TrailFilterSet + + class TrailFormatList(MapEntityFormat, TrailList): + filterset_class = TrailFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'name', 'comments', diff --git a/geotrek/diving/templates/diving/dive_detail_attributes.html b/geotrek/diving/templates/diving/dive_detail_attributes.html index b9b3218f4d..cd61aff019 100644 --- a/geotrek/diving/templates/diving/dive_detail_attributes.html +++ b/geotrek/diving/templates/diving/dive_detail_attributes.html @@ -2,7 +2,6 @@ {% load i18n mapentity_tags %} {% block attributes %} -

{% trans "Attributes" %}

{{ trail|verbose:"structure" }}
diff --git a/geotrek/diving/views.py b/geotrek/diving/views.py index 9fcb84fa98..ffb9e3ffda 100644 --- a/geotrek/diving/views.py +++ b/geotrek/diving/views.py @@ -1,6 +1,6 @@ from django.conf import settings from django.contrib.gis.db.models.functions import Transform -from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityDetail, MapEntityMapImage, +from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityFilter, MapEntityDetail, MapEntityMapImage, MapEntityDocument, MapEntityCreate, MapEntityUpdate, MapEntityDelete) from geotrek.authent.decorators import same_structure_required @@ -15,7 +15,6 @@ class DiveList(CustomColumnsMixin, FlattenPicturesMixin, MapEntityList): - filterform = DiveFilterSet queryset = Dive.objects.existing() mandatory_columns = ['id', 'name'] default_extra_columns = ['levels', 'thumbnail'] @@ -23,7 +22,13 @@ class DiveList(CustomColumnsMixin, FlattenPicturesMixin, MapEntityList): searchable_columns = ['id', 'name'] +class DiveFilter(MapEntityFilter): + model = Dive + filterset_class = DiveFilterSet + + class DiveFormatList(MapEntityFormat, DiveList): + filterset_class = DiveFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'eid', 'structure', 'name', 'departure', diff --git a/geotrek/feedback/locale/de/LC_MESSAGES/django.po b/geotrek/feedback/locale/de/LC_MESSAGES/django.po index a65044cb84..f5d7486e88 100644 --- a/geotrek/feedback/locale/de/LC_MESSAGES/django.po +++ b/geotrek/feedback/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-04 15:20+0000\n" +"POT-Creation-Date: 2025-01-06 15:19+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,6 +266,12 @@ msgid "" "Some data could not be forwarded to Suricate yet - Please come back later" msgstr "" +msgid "Intervention" +msgstr "" + +msgid "Add a new intervention" +msgstr "" + msgid "Attributes" msgstr "" @@ -296,12 +302,6 @@ msgstr "" msgid "No" msgstr "" -msgid "Intervention" -msgstr "" - -msgid "Add a new intervention" -msgstr "" - msgid "Map" msgstr "" diff --git a/geotrek/feedback/locale/en/LC_MESSAGES/django.po b/geotrek/feedback/locale/en/LC_MESSAGES/django.po index a65044cb84..f5d7486e88 100644 --- a/geotrek/feedback/locale/en/LC_MESSAGES/django.po +++ b/geotrek/feedback/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-04 15:20+0000\n" +"POT-Creation-Date: 2025-01-06 15:19+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,6 +266,12 @@ msgid "" "Some data could not be forwarded to Suricate yet - Please come back later" msgstr "" +msgid "Intervention" +msgstr "" + +msgid "Add a new intervention" +msgstr "" + msgid "Attributes" msgstr "" @@ -296,12 +302,6 @@ msgstr "" msgid "No" msgstr "" -msgid "Intervention" -msgstr "" - -msgid "Add a new intervention" -msgstr "" - msgid "Map" msgstr "" diff --git a/geotrek/feedback/locale/es/LC_MESSAGES/django.po b/geotrek/feedback/locale/es/LC_MESSAGES/django.po index a65044cb84..f5d7486e88 100644 --- a/geotrek/feedback/locale/es/LC_MESSAGES/django.po +++ b/geotrek/feedback/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-04 15:20+0000\n" +"POT-Creation-Date: 2025-01-06 15:19+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,6 +266,12 @@ msgid "" "Some data could not be forwarded to Suricate yet - Please come back later" msgstr "" +msgid "Intervention" +msgstr "" + +msgid "Add a new intervention" +msgstr "" + msgid "Attributes" msgstr "" @@ -296,12 +302,6 @@ msgstr "" msgid "No" msgstr "" -msgid "Intervention" -msgstr "" - -msgid "Add a new intervention" -msgstr "" - msgid "Map" msgstr "" diff --git a/geotrek/feedback/locale/fr/LC_MESSAGES/django.po b/geotrek/feedback/locale/fr/LC_MESSAGES/django.po index 815161a0ff..0d1940c847 100644 --- a/geotrek/feedback/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/feedback/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-04 15:20+0000\n" +"POT-Creation-Date: 2025-01-06 15:19+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -136,7 +136,7 @@ msgid "to" msgstr "à" msgid "Follow-up message generated by Geotrek" -msgstr "" +msgstr "Message de suivi généré par Geotrek" msgid "New report to process" msgstr "Nouveau Signalement à traiter" @@ -148,19 +148,19 @@ msgid "Tag" msgstr "Clé" msgid "Label" -msgstr "" +msgstr "Label" msgid "Paths" -msgstr "" +msgstr "Tronçons" msgid "Treks" msgstr "Itinéraires" msgid "POIs" -msgstr "" +msgstr "POIs" msgid "Services" -msgstr "" +msgstr "Services" msgid "Interventions" msgstr "Interventions" @@ -178,7 +178,7 @@ msgid "Identifiant" msgstr "Identifiant" msgid "Color" -msgstr "" +msgstr "Couleur" msgid "Display in legend" msgstr "Afficher dans la légende" @@ -199,7 +199,7 @@ msgstr "" "comptes à rebours. La valeur 0 désactive les alertes" msgid "Suricate label" -msgstr "" +msgstr "Label Suricate" msgid "Problem magnitudes" msgstr "Amplitudes des problèmes" @@ -278,11 +278,17 @@ msgstr "" "Des informations n'ont pas encore pu être transmises à Suricate - Merci de " "vérifier plus tard" +msgid "Intervention" +msgstr "Intervention" + +msgid "Add a new intervention" +msgstr "Ajouter une nouvelle intervention" + msgid "Attributes" msgstr "Informations" msgid "None" -msgstr "" +msgstr "Aucun(e)" msgid "Districts" msgstr "Secteurs" @@ -303,19 +309,13 @@ msgid "Date" msgstr "Date" msgid "Yes" -msgstr "" +msgstr "Oui" msgid "No" -msgstr "" - -msgid "Intervention" -msgstr "Intervention" - -msgid "Add a new intervention" -msgstr "Ajouter une nouvelle intervention" +msgstr "Non" msgid "Map" -msgstr "" +msgstr "Carte" #, python-format msgid "%(email)s has sent a feedback." diff --git a/geotrek/feedback/locale/it/LC_MESSAGES/django.po b/geotrek/feedback/locale/it/LC_MESSAGES/django.po index a65044cb84..f5d7486e88 100644 --- a/geotrek/feedback/locale/it/LC_MESSAGES/django.po +++ b/geotrek/feedback/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-04 15:20+0000\n" +"POT-Creation-Date: 2025-01-06 15:19+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,6 +266,12 @@ msgid "" "Some data could not be forwarded to Suricate yet - Please come back later" msgstr "" +msgid "Intervention" +msgstr "" + +msgid "Add a new intervention" +msgstr "" + msgid "Attributes" msgstr "" @@ -296,12 +302,6 @@ msgstr "" msgid "No" msgstr "" -msgid "Intervention" -msgstr "" - -msgid "Add a new intervention" -msgstr "" - msgid "Map" msgstr "" diff --git a/geotrek/feedback/locale/nl/LC_MESSAGES/django.po b/geotrek/feedback/locale/nl/LC_MESSAGES/django.po index a65044cb84..f5d7486e88 100644 --- a/geotrek/feedback/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/feedback/locale/nl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-04 15:20+0000\n" +"POT-Creation-Date: 2025-01-06 15:19+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,6 +266,12 @@ msgid "" "Some data could not be forwarded to Suricate yet - Please come back later" msgstr "" +msgid "Intervention" +msgstr "" + +msgid "Add a new intervention" +msgstr "" + msgid "Attributes" msgstr "" @@ -296,12 +302,6 @@ msgstr "" msgid "No" msgstr "" -msgid "Intervention" -msgstr "" - -msgid "Add a new intervention" -msgstr "" - msgid "Map" msgstr "" diff --git a/geotrek/feedback/templates/feedback/report_detail.html b/geotrek/feedback/templates/feedback/report_detail.html index c2f9e9391c..0596f704b1 100644 --- a/geotrek/feedback/templates/feedback/report_detail.html +++ b/geotrek/feedback/templates/feedback/report_detail.html @@ -1,5 +1,5 @@ {% extends "common/common_detail.html" %} -{% load feedback_tags i18n %} +{% load feedback_tags i18n mapentity_tags %} {% block detailspanel %} @@ -19,3 +19,38 @@ {{ block.super }} {% endblock detailspanel %} + +{% block related_objects_tab_content %} + {% suricate_workflow_enabled as suricate_workflow_enabled %} +
{{ object|verbose:"structure" }}
+ + + {% endif %} + +
+ {% if perms.maintenance.add_intervention %} +

{% trans "Intervention" %}

+ {% with columns="name,status,stake,total_cost,begin_date,end_date" %} + {% valuetable report.interventions.all columns=columns %} + {% endwith %} + {% if not suricate_workflow_enabled %} +

+

+ + {% trans "Add a new intervention" %} +

+ {% elif suricate_workflow_enabled and report.interventions.all|length == 0 %} + {% if report.status.identifier == 'late_intervention' or report.status.identifier == 'waiting' %} +

+

+ + {% trans "Add a new intervention" %} +

+ {% endif %} + {% endif %} +
+
+{% endblock %} \ No newline at end of file diff --git a/geotrek/feedback/templates/feedback/report_detail_attributes.html b/geotrek/feedback/templates/feedback/report_detail_attributes.html index 7f46fa455f..b5cc2a68ea 100644 --- a/geotrek/feedback/templates/feedback/report_detail_attributes.html +++ b/geotrek/feedback/templates/feedback/report_detail_attributes.html @@ -5,7 +5,6 @@ {% block attributes %} {% suricate_workflow_enabled as suricate_workflow_enabled %} {% workflow_manager as workflow_manager %} -

{% trans "Attributes" %}

{% if not suricate_workflow_enabled or request.user.pk == workflow_manager or request.user.is_superuser%} @@ -125,35 +124,5 @@

{% trans "Attributes" %}

{% endif %} {% include "mapentity/trackinfo_fragment.html" %}
- - - - - {% endif %} - -
- {% if perms.maintenance.add_intervention %} -

{% trans "Intervention" %}

- {% with columns="name,status,stake,total_cost,begin_date,end_date" %} - {% valuetable report.interventions.all columns=columns %} - {% endwith %} - {% if not suricate_workflow_enabled %} -

-

- - {% trans "Add a new intervention" %} -

- {% elif suricate_workflow_enabled and report.interventions.all|length == 0 %} - {% if report.status.identifier == 'late_intervention' or report.status.identifier == 'waiting' %} -

-

- - {% trans "Add a new intervention" %} -

- {% endif %} - {% endif %} -
{% endblock attributes %} diff --git a/geotrek/feedback/tests/test_views.py b/geotrek/feedback/tests/test_views.py index a5651e77b1..22b1871cba 100644 --- a/geotrek/feedback/tests/test_views.py +++ b/geotrek/feedback/tests/test_views.py @@ -393,9 +393,30 @@ def test_csv_manager_sees_emails(self): column_names = list(dict_from_csv.keys()) self.assertIn("Email", column_names) + @test_for_workflow_mode + def test_filters_manager_sees_emails(self): + '''Test list FilterSet does contain emails for manager''' + self.client.force_login(user=self.workflow_manager_user) + response = self.client.get('/report/filter/') + self.assertContains(response, '{% trans "Attributes" %} diff --git a/geotrek/infrastructure/views.py b/geotrek/infrastructure/views.py index 452834ca0e..29e9896a11 100755 --- a/geotrek/infrastructure/views.py +++ b/geotrek/infrastructure/views.py @@ -8,6 +8,7 @@ MapEntityDocument, MapEntityFormat, MapEntityList, + MapEntityFilter, MapEntityUpdate, ) @@ -25,13 +26,18 @@ class InfrastructureList(CustomColumnsMixin, MapEntityList): queryset = Infrastructure.objects.existing() - filterform = InfrastructureFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['type', 'conditions', 'cities'] searchable_columns = ['id', 'name'] +class InfrastructureFilter(MapEntityFilter): + model = Infrastructure + filterset_class = InfrastructureFilterSet + + class InfrastructureFormatList(MapEntityFormat, InfrastructureList): + filterset_class = InfrastructureFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'id', 'name', 'type', 'conditions', 'description', 'accessibility', diff --git a/geotrek/land/views.py b/geotrek/land/views.py index c12103828c..3e28ac8fd0 100644 --- a/geotrek/land/views.py +++ b/geotrek/land/views.py @@ -1,6 +1,6 @@ from django.conf import settings from django.contrib.gis.db.models.functions import Transform -from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityDetail, MapEntityDocument, +from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityFilter, MapEntityDetail, MapEntityDocument, MapEntityCreate, MapEntityUpdate, MapEntityDelete) from geotrek.common.mixins.views import CustomColumnsMixin @@ -22,12 +22,17 @@ class PhysicalEdgeList(CustomColumnsMixin, CreateFromTopologyMixin, MapEntityList): queryset = PhysicalEdge.objects.existing() - filterform = PhysicalEdgeFilterSet mandatory_columns = ['id', 'physical_type'] default_extra_columns = ['length', 'length_2d'] +class PhysicalEdgeFilter(MapEntityFilter): + model = PhysicalEdge + filterset_class = PhysicalEdgeFilterSet + + class PhysicalEdgeFormatList(MapEntityFormat, PhysicalEdgeList): + filterset_class = PhysicalEdgeFilterSet mandatory_columns = ['id', 'physical_type'] default_extra_columns = [ 'date_insert', 'date_update', @@ -77,12 +82,17 @@ def get_queryset(self): class LandEdgeList(CustomColumnsMixin, MapEntityList): queryset = LandEdge.objects.existing() - filterform = LandEdgeFilterSet mandatory_columns = ['id', 'land_type'] default_extra_columns = ['length', 'length_2d'] +class LandEdgeFilter(MapEntityFilter): + model = LandEdge + filterset_class = LandEdgeFilterSet + + class LandEdgeFormatList(MapEntityFormat, LandEdgeList): + filterset_class = LandEdgeFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'land_type', 'owner', 'agreement', 'date_insert', 'date_update', @@ -130,12 +140,17 @@ def get_queryset(self): class CirculationEdgeList(CustomColumnsMixin, MapEntityList): queryset = CirculationEdge.objects.existing() - filterform = CirculationEdgeFilterSet mandatory_columns = ['id', 'circulation_type', 'authorization_type'] default_extra_columns = ['length', 'length_2d'] +class CirculationEdgeFilter(MapEntityFilter): + model = CirculationEdge + filterset_class = CirculationEdgeFilterSet + + class CirculationEdgeFormatList(MapEntityFormat, CirculationEdgeList): + filterset_class = CirculationEdgeFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'circulation_type', 'authorization_type', 'date_insert', 'date_update', @@ -183,12 +198,17 @@ def get_queryset(self): class CompetenceEdgeList(CustomColumnsMixin, MapEntityList): queryset = CompetenceEdge.objects.existing() - filterform = CompetenceEdgeFilterSet mandatory_columns = ['id', 'organization'] default_extra_columns = ['length', 'length_2d'] +class CompetenceEdgeFilter(MapEntityFilter): + model = CompetenceEdge + filterset_class = CompetenceEdgeFilterSet + + class CompetenceEdgeFormatList(MapEntityFormat, CompetenceEdgeList): + filterset_class = CompetenceEdgeFilterSet mandatory_columns = ['id', 'organization'] default_extra_columns = [ 'date_insert', 'date_update', @@ -236,12 +256,17 @@ def get_queryset(self): class WorkManagementEdgeList(CustomColumnsMixin, MapEntityList): queryset = WorkManagementEdge.objects.existing() - filterform = WorkManagementEdgeFilterSet mandatory_columns = ['id', 'organization'] default_extra_columns = ['length', 'length_2d'] +class WorkManagementEdgeFilter(MapEntityFilter): + model = WorkManagementEdge + filterset_class = WorkManagementEdgeFilterSet + + class WorkManagementEdgeFormatList(MapEntityFormat, WorkManagementEdgeList): + filterset_class = WorkManagementEdgeFilterSet mandatory_columns = ['id', 'organization'] default_extra_columns = [ 'date_insert', 'date_update', 'cities', 'districts', 'areas', 'uuid', 'length_2d' @@ -288,12 +313,17 @@ def get_queryset(self): class SignageManagementEdgeList(CustomColumnsMixin, MapEntityList): queryset = SignageManagementEdge.objects.existing() - filterform = SignageManagementEdgeFilterSet mandatory_columns = ['id', 'organization'] default_extra_columns = ['length', 'length_2d'] +class SignageManagementEdgeFilter(MapEntityFilter): + model = SignageManagementEdge + filterset_class = SignageManagementEdgeFilterSet + + class SignageManagementEdgeFormatList(MapEntityFormat, SignageManagementEdgeList): + filterset_class = SignageManagementEdgeFilterSet mandatory_columns = ['id', 'organization'] default_extra_columns = [ 'date_insert', 'date_update', 'cities', 'districts', 'areas', 'uuid', 'length_2d' diff --git a/geotrek/maintenance/static/maintenance/main.js b/geotrek/maintenance/static/maintenance/main.js index 29372bd072..df97ce7696 100644 --- a/geotrek/maintenance/static/maintenance/main.js +++ b/geotrek/maintenance/static/maintenance/main.js @@ -48,7 +48,7 @@ $(window).on('entity:view:add', function (e, data) { }; }); -$(window).on('entity:view:list', function (e, data) { +$(window).on('entity:view:filter', function (e, data) { if (data.modelname === "intervention"){ setDatePickerConfig('#id_begin_date_0, #id_begin_date_1, #id_end_date_0, #id_end_date_1'); }; diff --git a/geotrek/maintenance/views.py b/geotrek/maintenance/views.py index efc544b911..37128df704 100755 --- a/geotrek/maintenance/views.py +++ b/geotrek/maintenance/views.py @@ -5,7 +5,7 @@ from django.db.models import Subquery, OuterRef, Sum from django.db.models.expressions import Value from django.utils.translation import gettext_lazy as _ -from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityDetail, MapEntityDocument, +from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityFilter, MapEntityDetail, MapEntityDocument, MapEntityCreate, MapEntityUpdate, MapEntityDelete) from geotrek.altimetry.models import AltimetryMixin @@ -34,14 +34,19 @@ def _normalize_annotation_column_name(col_name): class InterventionList(CustomColumnsMixin, MapEntityList): queryset = Intervention.objects.existing() - filterform = InterventionFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['begin_date', 'end_date', 'type', 'target', 'status', 'stake'] searchable_columns = ['id', 'name'] unorderable_columns = ['target'] +class InterventionFilter(MapEntityFilter): + model = Intervention + filterset_class = InterventionFilterSet + + class InterventionFormatList(MapEntityFormat, InterventionList): + filterset_class = InterventionFilterSet @classmethod def build_cost_column_name(cls, job_name): @@ -190,14 +195,19 @@ def get_queryset(self): class ProjectList(CustomColumnsMixin, MapEntityList): queryset = Project.objects.existing() - filterform = ProjectFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['period', 'type', 'domain'] searchable_columns = ['id', 'name'] unorderable_columns = ['period', ] +class ProjectFilter(MapEntityFilter): + model = Project + filterset_class = ProjectFilterSet + + class ProjectFormatList(MapEntityFormat, ProjectList): + filterset_class = ProjectFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'name', 'period', 'type', 'domain', 'constraint', 'global_cost', diff --git a/geotrek/outdoor/templates/outdoor/course_detail_attributes.html b/geotrek/outdoor/templates/outdoor/course_detail_attributes.html index 092f126711..2fda024c8f 100644 --- a/geotrek/outdoor/templates/outdoor/course_detail_attributes.html +++ b/geotrek/outdoor/templates/outdoor/course_detail_attributes.html @@ -2,9 +2,8 @@ {% load i18n geotrek_tags mapentity_tags outdoor_tags %} {% block attributes %}

{% trans "Tree view" %}

- {% include "outdoor/recursive_courses_tree.html" with sites_at_level=course.all_hierarchy_roots original_course=object %} + {% include "outdoor/recursive_courses_tree.html" with sites_at_level=course.all_hierarchy_roots original_course=object %} -

{% trans "Attributes" %}

{{ object|verbose:"structure" }}
diff --git a/geotrek/outdoor/templates/outdoor/site_detail_attributes.html b/geotrek/outdoor/templates/outdoor/site_detail_attributes.html index 809bdecb0e..4132111c88 100644 --- a/geotrek/outdoor/templates/outdoor/site_detail_attributes.html +++ b/geotrek/outdoor/templates/outdoor/site_detail_attributes.html @@ -5,7 +5,6 @@

{% trans "Tree view" %}

{% site_as_list site.get_root as root_as_list %} {% include "outdoor/recursive_sites_tree.html" with sites_at_level=root_as_list original_site=object %} -

{% trans "Attributes" %}

{{ object|verbose:"structure" }}
@@ -114,7 +113,7 @@

{% trans "Attributes" %}

{{ object|verbose:"structure" }} {% for label in object.labels.all %} {% if label.published %} - + {% endif %} {{ label.name }}
{% endfor %} diff --git a/geotrek/outdoor/views.py b/geotrek/outdoor/views.py index d44c0c407f..1b2cf10816 100644 --- a/geotrek/outdoor/views.py +++ b/geotrek/outdoor/views.py @@ -3,7 +3,7 @@ from django.db.models import Prefetch from geotrek.common.models import HDViewPoint from mapentity.helpers import alphabet_enumeration -from mapentity.views import (MapEntityList, MapEntityDetail, MapEntityDocument, MapEntityCreate, +from mapentity.views import (MapEntityList, MapEntityFilter, MapEntityDetail, MapEntityDocument, MapEntityCreate, MapEntityUpdate, MapEntityDelete, MapEntityFormat) from geotrek.authent.decorators import same_structure_required @@ -18,12 +18,16 @@ class SiteList(CustomColumnsMixin, MapEntityList): queryset = Site.objects.all() - filterform = SiteFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['super_practices', 'date_update'] searchable_columns = ['id', 'name'] +class SiteFilter(MapEntityFilter): + model = Site + filterset_class = SiteFilterSet + + class SiteDetail(CompletenessMixin, MapEntityDetail): queryset = Site.objects.all().prefetch_related( Prefetch('view_points', @@ -104,6 +108,7 @@ class SiteMarkupPublic(SiteDocumentPublicMixin, MarkupPublic): class SiteFormatList(MapEntityFormat, SiteList): + filterset_class = SiteFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'name', 'practice', 'description', @@ -130,12 +135,16 @@ def get_queryset(self): class CourseList(CustomColumnsMixin, MapEntityList): queryset = Course.objects.select_related('type').prefetch_related('parent_sites').all() - filterform = CourseFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['parent_sites', 'date_update'] searchable_columns = ['id', 'name'] +class CourseFilter(MapEntityFilter): + model = Course + filterset_class = CourseFilterSet + + class CourseDetail(CompletenessMixin, MapEntityDetail): queryset = Course.objects.prefetch_related('type').all() @@ -208,6 +217,7 @@ class CourseMarkupPublic(CourseDocumentPublicMixin, MarkupPublic): class CourseFormatList(MapEntityFormat, CourseList): + filterset_class = CourseFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'name', 'parent_sites', 'description', 'advice', 'equipment', 'accessibility', diff --git a/geotrek/sensitivity/templates/sensitivity/sensitivearea_detail_attributes.html b/geotrek/sensitivity/templates/sensitivity/sensitivearea_detail_attributes.html index bbaaa39ab0..426e9a47a6 100644 --- a/geotrek/sensitivity/templates/sensitivity/sensitivearea_detail_attributes.html +++ b/geotrek/sensitivity/templates/sensitivity/sensitivearea_detail_attributes.html @@ -10,7 +10,6 @@ padding: 2px; } -

{% trans "Attributes" %}

diff --git a/geotrek/sensitivity/views.py b/geotrek/sensitivity/views.py index 959290bd75..c4460712ba 100644 --- a/geotrek/sensitivity/views.py +++ b/geotrek/sensitivity/views.py @@ -9,7 +9,7 @@ from django.views.generic import ListView from django.views.generic.detail import BaseDetailView from mapentity.views import (MapEntityCreate, MapEntityUpdate, MapEntityList, MapEntityDetail, - MapEntityDelete, MapEntityFormat, LastModifiedMixin) + MapEntityDelete, MapEntityFormat, LastModifiedMixin, MapEntityFilter) from geotrek.authent.decorators import same_structure_required from geotrek.common.mixins.views import CustomColumnsMixin @@ -26,12 +26,17 @@ class SensitiveAreaList(CustomColumnsMixin, MapEntityList): queryset = SensitiveArea.objects.existing() - filterform = SensitiveAreaFilterSet mandatory_columns = ['id', 'species'] default_extra_columns = ['category'] +class SensitiveAreaFilter(MapEntityFilter): + model = SensitiveArea + filterset_class = SensitiveAreaFilterSet + + class SensitiveAreaFormatList(MapEntityFormat, SensitiveAreaList): + filterset_class = SensitiveAreaFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'species', 'published', 'description', 'contact', 'radius', 'pretty_period', 'pretty_practices', diff --git a/geotrek/signage/views.py b/geotrek/signage/views.py index 68e5e9420f..2ebed3f769 100755 --- a/geotrek/signage/views.py +++ b/geotrek/signage/views.py @@ -4,7 +4,7 @@ from django.contrib.gis.db.models.functions import Transform from django.http import HttpResponse from django.utils.functional import classproperty -from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityDetail, +from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityDetail, MapEntityFilter, MapEntityDocument, MapEntityCreate, MapEntityUpdate, MapEntityDelete) from geotrek.authent.decorators import same_structure_required @@ -28,13 +28,18 @@ class LineMixin(FormsetMixin): class SignageList(CustomColumnsMixin, MapEntityList): queryset = Signage.objects.existing() - filterform = SignageFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['code', 'type', 'conditions'] searchable_columns = ['id', 'name', 'code'] +class SignageFilter(MapEntityFilter): + model = Signage + filterset_class = SignageFilterSet + + class SignageFormatList(MapEntityFormat, SignageList): + filterset_class = SignageFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'name', 'code', 'type', 'conditions', 'description', @@ -161,7 +166,6 @@ def get_success_url(self): class BladeList(CustomColumnsMixin, MapEntityList): queryset = Blade.objects.existing() - filterform = BladeFilterSet mandatory_columns = ['id', 'number'] default_extra_columns = ['type', 'color', 'direction'] searchable_columns = ['id', 'number'] @@ -180,7 +184,13 @@ def columns(cls): return columns +class BladeFilter(MapEntityFilter): + model = Blade + filterset_class = BladeFilterSet + + class BladeFormatList(MapEntityFormat, BladeList): + filterset_class = BladeFilterSet mandatory_columns = ['id'] default_extra_columns = ['city', 'signage', 'printedelevation', 'bladecode', 'type', 'color', 'direction', 'conditions', 'coordinates'] diff --git a/geotrek/tourism/static/tourism/main.js b/geotrek/tourism/static/tourism/main.js index 73f4020252..54d6ff0215 100644 --- a/geotrek/tourism/static/tourism/main.js +++ b/geotrek/tourism/static/tourism/main.js @@ -87,7 +87,7 @@ $(window).on('entity:map', function (e, data) { }); -$(window).on('entity:view:list', function (e, data) { +$(window).on('entity:view:filter', function (e, data) { // Date picker $('#id_before, #id_after').datepicker({ diff --git a/geotrek/tourism/templates/tourism/touristiccontent_detail_attributes.html b/geotrek/tourism/templates/tourism/touristiccontent_detail_attributes.html index 48b510e9de..deaf0a42e7 100644 --- a/geotrek/tourism/templates/tourism/touristiccontent_detail_attributes.html +++ b/geotrek/tourism/templates/tourism/touristiccontent_detail_attributes.html @@ -2,7 +2,6 @@ {% load i18n mapentity_tags %} {% block attributes %} -

{% trans "Attributes" %}

{{ sensitivearea|verbose:"structure" }}
diff --git a/geotrek/tourism/templates/tourism/touristicevent_detail_attributes.html b/geotrek/tourism/templates/tourism/touristicevent_detail_attributes.html index abbbbb8985..9ac7920c8d 100644 --- a/geotrek/tourism/templates/tourism/touristicevent_detail_attributes.html +++ b/geotrek/tourism/templates/tourism/touristicevent_detail_attributes.html @@ -2,7 +2,6 @@ {% load i18n mapentity_tags %} {% block attributes %} -

{% trans "Attributes" %}

{{ object|verbose:"structure" }}
diff --git a/geotrek/tourism/tests/test_views.py b/geotrek/tourism/tests/test_views.py index 0f95bdc5b1..9b03124a80 100644 --- a/geotrek/tourism/tests/test_views.py +++ b/geotrek/tourism/tests/test_views.py @@ -88,7 +88,7 @@ def tearDown(self): self.client.logout() def test_only_used_categories_are_shown(self): - url = "/touristiccontent/list/" + url = "/touristiccontent/filter/" response = self.client.get(url) self.assertContains(response, 'title="Category"') self.assertNotContains(response, 'title="Another category"') diff --git a/geotrek/tourism/views.py b/geotrek/tourism/views.py index 693d06a4c4..cf349fdc96 100644 --- a/geotrek/tourism/views.py +++ b/geotrek/tourism/views.py @@ -10,7 +10,7 @@ from django.utils.decorators import method_decorator from django.utils.html import escape from django.views.generic import CreateView -from mapentity.views import (MapEntityCreate, MapEntityUpdate, MapEntityList, MapEntityDetail, +from mapentity.views import (MapEntityCreate, MapEntityUpdate, MapEntityList, MapEntityDetail, MapEntityFilter, MapEntityDelete, MapEntityFormat, MapEntityDocument) from rest_framework import permissions as rest_permissions, viewsets @@ -34,7 +34,6 @@ class TouristicContentList(CustomColumnsMixin, MapEntityList): queryset = TouristicContent.objects.existing() - filterform = TouristicContentFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['category'] searchable_columns = ['id', 'name'] @@ -45,7 +44,13 @@ def categories_list(self): return TouristicContentCategory.objects.filter(pk__in=used) +class TouristicContentFilter(MapEntityFilter): + model = TouristicContent + filterset_class = TouristicContentFilterSet + + class TouristicContentFormatList(MapEntityFormat, TouristicContentList): + filterset_class = TouristicContentFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'eid', 'name', 'category', 'type1', 'type2', 'description_teaser', @@ -158,13 +163,18 @@ def get_queryset(self): class TouristicEventList(CustomColumnsMixin, MapEntityList): queryset = TouristicEvent.objects.existing() - filterform = TouristicEventFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['type', 'begin_date', 'end_date'] searchable_columns = ['id', 'name'] +class TouristicEventFilter(MapEntityFilter): + model = TouristicEvent + filterset_class = TouristicEventFilterSet + + class TouristicEventFormatList(MapEntityFormat, TouristicEventList): + filterset_class = TouristicEventFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'eid', 'name', 'type', 'description_teaser', 'description', 'themes', diff --git a/geotrek/trekking/locale/de/LC_MESSAGES/django.po b/geotrek/trekking/locale/de/LC_MESSAGES/django.po index ed5d526102..bd964fb551 100644 --- a/geotrek/trekking/locale/de/LC_MESSAGES/django.po +++ b/geotrek/trekking/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-08 16:23+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: 2015-10-21 11:16+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -484,16 +484,6 @@ msgstr "" msgid "APIDAE Trek #%(eid_val)s at line %(line)s" msgstr "" -msgid "" -"Feature geometry cannot be converted to a single continuous LineString " -"feature" -msgstr "" - -msgid "" -"Geometries from various features cannot be converted to a single continuous " -"LineString feature" -msgstr "" - msgid "Trek geometry is None" msgstr "" @@ -559,9 +549,6 @@ msgstr "" msgid "Print booklet" msgstr "" -msgid "Photos accessibility" -msgstr "" - msgid "Itinerancy" msgstr "Roaming" diff --git a/geotrek/trekking/locale/en/LC_MESSAGES/django.po b/geotrek/trekking/locale/en/LC_MESSAGES/django.po index 65b7dbe881..f4eeb7af72 100644 --- a/geotrek/trekking/locale/en/LC_MESSAGES/django.po +++ b/geotrek/trekking/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-08 16:23+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -469,16 +469,6 @@ msgstr "" msgid "APIDAE Trek #%(eid_val)s at line %(line)s" msgstr "" -msgid "" -"Feature geometry cannot be converted to a single continuous LineString " -"feature" -msgstr "" - -msgid "" -"Geometries from various features cannot be converted to a single continuous " -"LineString feature" -msgstr "" - msgid "Trek geometry is None" msgstr "" @@ -542,9 +532,6 @@ msgstr "" msgid "Print booklet" msgstr "" -msgid "Photos accessibility" -msgstr "" - msgid "Itinerancy" msgstr "" diff --git a/geotrek/trekking/locale/es/LC_MESSAGES/django.po b/geotrek/trekking/locale/es/LC_MESSAGES/django.po index 5f1ddf2b0d..cda5340c44 100644 --- a/geotrek/trekking/locale/es/LC_MESSAGES/django.po +++ b/geotrek/trekking/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-08 16:23+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: 2015-10-21 11:16+0200\n" "Last-Translator: jean-etienne.castagnede@makina-corpus.com\n" "Language-Team: \n" @@ -469,16 +469,6 @@ msgstr "" msgid "APIDAE Trek #%(eid_val)s at line %(line)s" msgstr "" -msgid "" -"Feature geometry cannot be converted to a single continuous LineString " -"feature" -msgstr "" - -msgid "" -"Geometries from various features cannot be converted to a single continuous " -"LineString feature" -msgstr "" - msgid "Trek geometry is None" msgstr "" @@ -542,9 +532,6 @@ msgstr "" msgid "Print booklet" msgstr "" -msgid "Photos accessibility" -msgstr "" - msgid "Itinerancy" msgstr "" diff --git a/geotrek/trekking/locale/fr/LC_MESSAGES/django.po b/geotrek/trekking/locale/fr/LC_MESSAGES/django.po index d96b44ad64..dac6d0f958 100644 --- a/geotrek/trekking/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/trekking/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-08 16:23+0000\n" +"POT-Creation-Date: 2025-01-06 15:41+0000\n" "PO-Revision-Date: 2020-09-22 15:57+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French {% trans "Attributes" %}
{{ object|verbose:"structure" }}
diff --git a/geotrek/trekking/templates/trekking/service_detail_attributes.html b/geotrek/trekking/templates/trekking/service_detail_attributes.html index fb0a448f12..a02e9fa7aa 100644 --- a/geotrek/trekking/templates/trekking/service_detail_attributes.html +++ b/geotrek/trekking/templates/trekking/service_detail_attributes.html @@ -2,7 +2,6 @@ {% load i18n mapentity_tags %} {% block attributes %} -

{% trans "Attributes" %}

diff --git a/geotrek/trekking/templates/trekking/trek_detail.html b/geotrek/trekking/templates/trekking/trek_detail.html index f61389344e..42af1762d2 100644 --- a/geotrek/trekking/templates/trekking/trek_detail.html +++ b/geotrek/trekking/templates/trekking/trek_detail.html @@ -12,19 +12,8 @@ {% trans "Print booklet" %} {% endblock download %} -{% block after_attachments_extra_tab_nav %} - {% is_photos_accessibilities_enabled as enabled %} - {% if enabled %} - - {% endif %} -{% endblock %} - - {% block attachments_extra_tab_nav %} - {% with attachments_count=object.attachments.count|add:object.view_points.count %} + {% with attachments_count=object.attachments.count|add:object.attachments_accessibility.count|add:object.view_points.count %}
@@ -38,7 +37,7 @@

{% trans "Attributes" %}

{{ trek|verbose:"structure" }} {% for label in trek.labels.all %} {% if label.published %} - + {% endif %} {{ label.name }}
{% endfor %} @@ -260,5 +259,6 @@

{% trans "Attributes" %}

+ {{ block.super }} {% endblock attributes %} diff --git a/geotrek/trekking/views.py b/geotrek/trekking/views.py index a50738da35..6c4bb821b2 100755 --- a/geotrek/trekking/views.py +++ b/geotrek/trekking/views.py @@ -10,7 +10,7 @@ from django.views.generic import CreateView from django.views.generic.detail import BaseDetailView from mapentity.helpers import alphabet_enumeration -from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityDetail, MapEntityMapImage, +from mapentity.views import (MapEntityList, MapEntityFormat, MapEntityDetail, MapEntityMapImage, MapEntityFilter, MapEntityDocument, MapEntityCreate, MapEntityUpdate, MapEntityDelete, LastModifiedMixin) from rest_framework import permissions as rest_permissions, viewsets @@ -52,7 +52,6 @@ def get_queryset(self): class TrekList(CustomColumnsMixin, FlattenPicturesMixin, MapEntityList): - filterform = TrekFilterSet queryset = Trek.objects.existing() mandatory_columns = ['id', 'name'] default_extra_columns = ['duration', 'difficulty', 'departure', 'thumbnail'] @@ -60,7 +59,13 @@ class TrekList(CustomColumnsMixin, FlattenPicturesMixin, MapEntityList): searchable_columns = ['id', 'name', 'departure', 'arrival'] +class TrekFilter(MapEntityFilter): + model = Trek + filterset_class = TrekFilterSet + + class TrekFormatList(MapEntityFormat, TrekList): + filterset_class = TrekFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = [ 'eid', 'eid2', 'structure', 'departure', 'arrival', 'duration', 'duration_pretty', 'description', @@ -229,14 +234,19 @@ def get_queryset(self): class POIList(CustomColumnsMixin, FlattenPicturesMixin, MapEntityList): queryset = POI.objects.existing() - filterform = POIFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = ['type', 'thumbnail'] unorderable_columns = ['thumbnail'] searchable_columns = ['id', 'name', ] +class POIFilter(MapEntityFilter): + model = POI + filterset_class = POIFilterSet + + class POIFormatList(MapEntityFormat, POIList): + filterset_class = POIFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'structure', 'eid', 'name', 'type', 'description', 'treks', @@ -386,13 +396,18 @@ def get_queryset(self): class ServiceList(CustomColumnsMixin, MapEntityList): queryset = Service.objects.existing() - filterform = ServiceFilterSet mandatory_columns = ['id', 'name'] default_extra_columns = [] searchable_columns = ['id'] +class ServiceFilter(MapEntityFilter): + model = Service + filterset_class = ServiceFilterSet + + class ServiceFormatList(MapEntityFormat, ServiceList): + filterset_class = ServiceFilterSet mandatory_columns = ['id'] default_extra_columns = [ 'id', 'eid', 'type', 'uuid', diff --git a/geotrek/zoning/static/zoning/main.js b/geotrek/zoning/static/zoning/main.js index 576c6da8e7..1ca622fb7b 100644 --- a/geotrek/zoning/static/zoning/main.js +++ b/geotrek/zoning/static/zoning/main.js @@ -58,9 +58,7 @@ function refresh_selector_with_areas($select, areas, selected) { $select.trigger('chosen:updated'); } -$(window).on('entity:view:list', function () { - // Move all topology-filters to separate tab - $('#mainfilter .right-filter').parent('p').detach().appendTo('#mainfilter > .right'); +$(window).on('entity:view:filter', function () { // Dynamic area filters $('#id_area_type').change(function () { // Parse area data diff --git a/requirements.txt b/requirements.txt index 21840472cc..df984f44b5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,12 +43,12 @@ celery==5.4.0 # via # django-celery-results # geotrek (setup.py) -certifi==2024.8.30 +certifi==2024.12.14 # via # fiona # requests # sentry-sdk -cffi==1.16.0 +cffi==1.17.1 # via # cairocffi # persistent @@ -58,7 +58,7 @@ chardet==5.2.0 # via # geotrek (setup.py) # reportlab -charset-normalizer==3.3.2 +charset-normalizer==3.4.0 # via requests click==8.1.3 # via @@ -220,7 +220,7 @@ inflection==0.5.1 # via drf-yasg itypes==1.2.0 # via coreapi -jinja2==3.1.4 +jinja2==3.1.5 # via coreschema kombu==5.4.2 # via celery @@ -236,7 +236,7 @@ lxml==4.9.3 # via # mapentity # svglib -mapentity==8.10.0 +mapentity==8.11.0 # via geotrek (setup.py) markdown==3.7 # via geotrek (setup.py) @@ -264,7 +264,7 @@ papersize==1.3.0 # via pdfimpose pdfimpose==1.1.0 # via geotrek (setup.py) -persistent==6.0 +persistent==6.1 # via # btrees # zodb @@ -311,7 +311,7 @@ pyvips==2.2.3 # via large-image-source-vips rcssmin==1.1.2 # via django-compressor -redis==5.2.0 +redis==5.2.1 # via geotrek (setup.py) reportlab==4.2.5 # via @@ -331,7 +331,7 @@ ruamel-yaml-clib==0.2.8 # via ruamel-yaml sentry-sdk==2.14.0 # via geotrek (setup.py) -shapely==2.0.4 +shapely==2.0.6 # via pyopenair simplekml==1.3.6 # via geotrek (setup.py) @@ -354,7 +354,7 @@ tinycss2==1.4.0 # cssselect2 # svglib # weasyprint -transaction==3.1.0 +transaction==5.0 # via zodb typing-extensions==4.12.2 # via @@ -403,7 +403,7 @@ zipp==3.20.2 # via importlib-metadata zodb==6.0 # via appy -zodbpickle==4.0 +zodbpickle==4.1.1 # via zodb zope-deferredimport==5.0 # via persistent