From 9587c7631866528339d85cf4d402ea8ee0226ed4 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 17 Oct 2022 10:57:56 +0200 Subject: [PATCH 001/103] Support python 3.8 and use django-large-image --- .github/workflows/doc.yml | 2 +- .github/workflows/lint.yml | 4 ++-- .github/workflows/test.yml | 2 +- requirements.txt | 27 ++++++--------------------- setup.py | 1 + 5 files changed, 11 insertions(+), 25 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 58156ac860..36e4cb8e7f 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -21,7 +21,7 @@ jobs: name: Documentation runs-on: ubuntu-latest container: - image: python:3.6 + image: python:3.8 env: LANG: C.UTF-8 steps: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1cad9f9904..f449146871 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -13,10 +13,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up Python 3.6 + - name: Set up Python 3.8 uses: actions/setup-python@v2 with: - python-version: 3.6 # lint with minimal version supported (3.6 in 18.04) + python-version: 3.8 # lint with minimal version supported (3.8 in 18.04) - name: Install dependencies run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 57b636c313..7cffa19264 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,7 +40,7 @@ jobs: tests-env: ['tests', 'tests_nds'] include: - os: ubuntu-18.04 - python-version: 3.6 # default python version in 18.04 + python-version: 3.8 # default python version in 18.04 - os: ubuntu-20.04 python-version: 3.8 # default python version in 20.04 diff --git a/requirements.txt b/requirements.txt index 32699a1645..53bbd68e78 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with python 3.6 +# This file is autogenerated by pip-compile with python 3.8 # To update, run: # # pip-compile @@ -20,8 +20,6 @@ billiard==3.6.4.0 # via celery btrees==4.10.0 # via zodb -cached-property==1.5.2 - # via kombu cairocffi==0.9.0 # via # cairosvg @@ -189,10 +187,6 @@ html5lib==1.1 # via weasyprint idna==3.3 # via requests -importlib-metadata==4.8.3 - # via - # kombu - # redis inflection==0.5.1 # via drf-yasg itypes==1.2.0 @@ -279,10 +273,10 @@ requests==2.27.1 # mapentity rjsmin==1.2.0 # via django-compressor -ruamel.yaml==0.17.21 +ruamel-yaml==0.17.21 # via drf-yasg -ruamel.yaml.clib==0.2.6 - # via ruamel.yaml +ruamel-yaml-clib==0.2.6 + # via ruamel-yaml sentry-sdk==1.5.9 # via geotrek (setup.py) simplekml==1.3.6 @@ -313,13 +307,6 @@ tinycss2==1.1.1 # weasyprint transaction==3.0.1 # via zodb -typing-extensions==4.1.1 - # via - # asgiref - # async-timeout - # faker - # importlib-metadata - # redis uritemplate==4.1.1 # via # coreapi @@ -353,17 +340,15 @@ xlrd==2.0.1 # via geotrek (setup.py) xmltodict==0.12.0 # via tif2geojson -zc.lockfile==2.0 +zc-lockfile==2.0 # via zodb zconfig==3.6.0 # via zodb -zipp==3.6.0 - # via importlib-metadata zodb==5.7.0 # via appy zodbpickle==2.2.0 # via zodb -zope.interface==5.4.0 +zope-interface==5.4.0 # via # btrees # datetime diff --git a/setup.py b/setup.py index 11e4742343..a65994b6bf 100644 --- a/setup.py +++ b/setup.py @@ -55,6 +55,7 @@ def run(self): 'drf-yasg', 'xlrd', 'landez', + 'django-large-image', 'celery[redis]', 'django-celery-results==2.2.*', # Latest version supporting python3.6 'drf-extensions', From 83796caaf20959dbcde410580ddfb3d417275754 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 17 Oct 2022 11:34:21 +0200 Subject: [PATCH 002/103] CI - Install python 3.8 on bionic --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7cffa19264..262a4748cd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -176,7 +176,9 @@ jobs: - name: Install build dependencies run: | apt-get -q update - apt-get -q -y install dpkg-dev debhelper dh-virtualenv git python3 python3-venv python3-dev libffi-dev libxml2-dev libxslt1-dev libgdal-dev + apt-get -q -y install dpkg-dev debhelper dh-virtualenv git python3 python3-venv python3-dev libffi-dev libxml2-dev libxslt1-dev libgdal-dev software-properties-common + add-apt-repository --yes ppa:deadsnakes/ppa + apt install python3.8 - name: Building package debian 18.04 run: | dpkg-buildpackage -uc -us -b From 3f6cd3976a66e0996c7b281fb759bba3aba3ef42 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 17 Oct 2022 11:48:36 +0200 Subject: [PATCH 003/103] CI - Install python 3.8 on bionic --- .github/workflows/test.yml | 4 +++- debian/control | 6 +++--- debian/rules | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 262a4748cd..e4bea0d313 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -178,7 +178,7 @@ jobs: apt-get -q update apt-get -q -y install dpkg-dev debhelper dh-virtualenv git python3 python3-venv python3-dev libffi-dev libxml2-dev libxslt1-dev libgdal-dev software-properties-common add-apt-repository --yes ppa:deadsnakes/ppa - apt install python3.8 + apt-get -q -y install python3.8 python3.8-venv python3.8-dev - name: Building package debian 18.04 run: | dpkg-buildpackage -uc -us -b @@ -325,6 +325,8 @@ jobs: echo "deb [arch=amd64] https://packages.geotrek.fr/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/geotrek.list wget -O- "https://packages.geotrek.fr/geotrek.gpg.key" | sudo apt-key add - sudo apt-get -q update + sudo add-apt-repository --yes ppa:deadsnakes/ppa + sudo apt-get -q -y install python3.8 python3.8-venv python3.8-dev echo "geotrek-admin geotrek-admin/LANGUAGES string en fr" >> .debian_settings echo "geotrek-admin geotrek-admin/POSTGRES_USER string $POSTGRES_USER" >> .debian_settings echo "geotrek-admin geotrek-admin/POSTGRES_DB string $POSTGRES_DB" >> .debian_settings diff --git a/debian/control b/debian/control index 5805c704b6..01a0c4a404 100644 --- a/debian/control +++ b/debian/control @@ -7,9 +7,9 @@ Build-Depends: debhelper (>= 9), dh-virtualenv (>= 1.0), git, - python3 (>= 3.6), - python3-venv (>= 3.6), - python3-dev (>= 3.6), + python3.8 (>= 3.8), + python3.8-venv (>= 3.8), + python3.8-dev (>= 3.8), libgdal-dev (>= 2.2), libffi-dev (>= 3), libxml2-dev (>= 2.9.2), diff --git a/debian/rules b/debian/rules index 44d6f78661..dee45dd46b 100755 --- a/debian/rules +++ b/debian/rules @@ -7,7 +7,7 @@ export DH_VIRTUALENV_INSTALL_ROOT=/opt override_dh_virtualenv: dh_virtualenv \ - --python /usr/bin/python3 \ + --python /usr/bin/python3.8 \ --upgrade-pip \ --builtin-venv \ --extra-pip-arg --no-cache-dir \ From b6c388e649c1bb50d1374543d3ef6c38323e0cc5 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 18 Oct 2022 14:31:26 +0200 Subject: [PATCH 004/103] Remove PPA deadsnake from CI --- .github/workflows/test.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e4bea0d313..ccf668325f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -176,9 +176,7 @@ jobs: - name: Install build dependencies run: | apt-get -q update - apt-get -q -y install dpkg-dev debhelper dh-virtualenv git python3 python3-venv python3-dev libffi-dev libxml2-dev libxslt1-dev libgdal-dev software-properties-common - add-apt-repository --yes ppa:deadsnakes/ppa - apt-get -q -y install python3.8 python3.8-venv python3.8-dev + apt-get -q -y install dpkg-dev debhelper dh-virtualenv git python3 python3-venv python3-dev libffi-dev libxml2-dev libxslt1-dev libgdal-dev software-properties-common python3.8 python3.8-venv python3.8-dev - name: Building package debian 18.04 run: | dpkg-buildpackage -uc -us -b @@ -325,7 +323,6 @@ jobs: echo "deb [arch=amd64] https://packages.geotrek.fr/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/geotrek.list wget -O- "https://packages.geotrek.fr/geotrek.gpg.key" | sudo apt-key add - sudo apt-get -q update - sudo add-apt-repository --yes ppa:deadsnakes/ppa sudo apt-get -q -y install python3.8 python3.8-venv python3.8-dev echo "geotrek-admin geotrek-admin/LANGUAGES string en fr" >> .debian_settings echo "geotrek-admin geotrek-admin/POSTGRES_USER string $POSTGRES_USER" >> .debian_settings From 2e3a38139b759c71d1e5bd151fa2fde179148234 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 19 Oct 2022 13:20:03 +0200 Subject: [PATCH 005/103] Add HD View Point model --- geotrek/common/migrations/0026_hdviewpoint.py | 42 ++++++ geotrek/common/models.py | 121 +++++++++++++++++- 2 files changed, 160 insertions(+), 3 deletions(-) create mode 100644 geotrek/common/migrations/0026_hdviewpoint.py diff --git a/geotrek/common/migrations/0026_hdviewpoint.py b/geotrek/common/migrations/0026_hdviewpoint.py new file mode 100644 index 0000000000..47de8192bc --- /dev/null +++ b/geotrek/common/migrations/0026_hdviewpoint.py @@ -0,0 +1,42 @@ +# Generated by Django 3.2.15 on 2022-10-19 10:18 + +from django.conf import settings +import django.contrib.gis.db.models.fields +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('common', '0025_auto_20220425_1550'), + ] + + operations = [ + migrations.CreateModel( + name='HDViewPoint', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date_insert', models.DateTimeField(auto_now_add=True, verbose_name='Insertion date')), + ('date_update', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Update date')), + ('picture', models.FileField(upload_to='', verbose_name='Picture')), + ('geom', django.contrib.gis.db.models.fields.PointField(srid=2154, verbose_name='Location')), + ('object_id', models.PositiveIntegerField()), + ('annotations', models.JSONField(blank=True, null=True, verbose_name='Annotations')), + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('author', models.CharField(blank=True, default='', help_text='Original creator', max_length=128, verbose_name='Author')), + ('title', models.CharField(help_text='Title for this view point', max_length=1024, verbose_name='Title')), + ('legend', models.CharField(blank=True, default='', help_text='Details about this view', max_length=1024, verbose_name='Legend')), + ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ('creator', models.ForeignKey(help_text='User that uploaded', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_hdviewpoints', to=settings.AUTH_USER_MODEL, verbose_name='Creator')), + ('license', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='common.license', verbose_name='License')), + ], + options={ + 'verbose_name': 'HD View', + 'verbose_name_plural': 'HD Views', + }, + ), + ] diff --git a/geotrek/common/models.py b/geotrek/common/models.py index a02dc4a72c..bb311bdd45 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -2,18 +2,26 @@ import uuid from colorfield.fields import ColorField -from PIL import Image from django.conf import settings +from django.contrib import auth from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType +from django.contrib.gis.db import models as gis_models from django.db import models from django.db.models import Q +from django.db.utils import OperationalError from django.template.defaultfilters import slugify +from django.urls import reverse from django.utils.translation import gettext_lazy as _ -from paperclip.models import Attachment as BaseAttachment, FileType as BaseFileType, License as BaseLicense +from paperclip.models import Attachment as BaseAttachment +from paperclip.models import FileType as BaseFileType +from paperclip.models import License as BaseLicense +from PIL import Image from geotrek.authent.models import StructureOrNoneRelated -from geotrek.common.mixins.models import OptionalPictogramMixin, PictogramMixin +from geotrek.common.mixins.models import (OptionalPictogramMixin, + PictogramMixin, + TimeStampedModelMixin) class AccessibilityAttachmentManager(models.Manager): @@ -270,3 +278,110 @@ def __str__(self): class Meta: abstract = True + + +class HDViewPoint(TimeStampedModelMixin): + picture = models.FileField(verbose_name=_("Picture")) + geom = gis_models.PointField(verbose_name=_("Location"), + srid=settings.SRID) + object_id = models.PositiveIntegerField() + content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) + content_object = GenericForeignKey('content_type', 'object_id') + annotations = models.JSONField(null=True, verbose_name=_("Annotations"), blank=True) + uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + author = models.CharField(blank=True, default='', max_length=128, + verbose_name=_('Author'), + help_text=_("Original creator")) + title = models.CharField(max_length=1024, + verbose_name=_("Title"), + help_text=_("Title for this view point")) + legend = models.CharField(blank=True, default='', max_length=1024, + verbose_name=_("Legend"), + help_text=_("Details about this view")) + license = models.ForeignKey(settings.PAPERCLIP_LICENSE_MODEL, + verbose_name=_("License"), + null=True, blank=True, + on_delete=models.SET_NULL) + creator = models.ForeignKey(settings.AUTH_USER_MODEL, + related_name="created_hdviewpoints", + verbose_name=_('Creator'), + null=True, help_text=_("User that uploaded"), + on_delete=models.SET_NULL) + + class Meta: + verbose_name = _("HD View") + verbose_name_plural = _("HD Views") + + def __str__(self): + return self.title + + @property + def structure(self): + return self.content_object.structure + + def same_structure(self, structure): + return self.structure == structure + + def get_add_url(self): + return reverse('common:hdviewpoint_add') + + @classmethod + def get_list_url(cls): + # TODO + return reverse('common:hdviewpoint_add') + + def get_update_url(self): + return reverse('admin:hdviewpoint_change', args=[self.pk]) + + def get_delete_url(self): + return reverse('admin:hdviewpoint_delete', args=[self.pk]) + + def get_permission_codename(self, *args): + return + + @classmethod + def get_content_type_id(cls): + try: + return ContentType.objects.get_for_model(cls).pk + except OperationalError: # table is not yet created + return None + + @classmethod + def get_permission_codename(cls, entity_kind): + operations = { + 'ENTITY_CREATE': 'add', + 'ENTITY_UPDATE': 'change', + 'ENfTITY_UPDATE_GEOM': 'change_geom', + 'ENTITY_DELETE': 'delete', + 'ENTITY_DETAIL': 'read', + 'ENTITY_LAYER': 'read', + #ENTITY_LIST: 'read', # TODO + 'ENTITY_DATATABLE_LIST': 'read', + 'ENTITY_MARKUP': 'read', + } + perm = operations.get(entity_kind, entity_kind) + opts = cls._meta + appname = opts.app_label.lower() + if opts.proxy: + proxied = opts.proxy_for_model._meta + appname = proxied.app_label.lower() if proxied.app_label.lower() != "admin" else appname + return '%s.%s' % (appname, auth.get_permission_codename(perm, opts)) + + def get_geom(self): + return self.geom + + def get_map_image_extent(self, srid=settings.API_SRID): + obj = self.geom + obj.transform(srid) + return obj.extent + + @property + def full_url(self): + return reverse('common:hdviewpoint_detail', kwargs={'pk': self.pk}) + + def get_absolute_url(self): + return self.full_url + + @classmethod + def get_create_label(cls): + return _("Add a new HD view") From 76d1593bada3ea11dd18c54cf0f7d7e5fa50a9b0 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 19 Oct 2022 13:21:43 +0200 Subject: [PATCH 006/103] Implement HDViewPoint creation and detail view --- geotrek/common/forms.py | 19 ++- .../templates/common/hdviewpoint_detail.html | 131 ++++++++++++++++++ .../common/hdviewpoint_detail_fragment.html | 18 +++ .../templates/common/hdviewpoint_form.html | 1 + geotrek/common/urls.py | 4 +- geotrek/common/views.py | 78 ++++++++--- 6 files changed, 233 insertions(+), 18 deletions(-) create mode 100644 geotrek/common/templates/common/hdviewpoint_detail.html create mode 100644 geotrek/common/templates/common/hdviewpoint_detail_fragment.html create mode 100644 geotrek/common/templates/common/hdviewpoint_form.html diff --git a/geotrek/common/forms.py b/geotrek/common/forms.py index 8721b8a1eb..67f7aeff0a 100644 --- a/geotrek/common/forms.py +++ b/geotrek/common/forms.py @@ -2,6 +2,7 @@ from django import forms from django.conf import settings +from django.contrib.contenttypes.models import ContentType from django.core.checks.messages import Error from django.core.files.images import get_image_dimensions from django.db.models import Q @@ -16,7 +17,7 @@ from mapentity.forms import MapEntityForm from geotrek.authent.models import default_structure, StructureRelated, StructureOrNoneRelated -from geotrek.common.models import AccessibilityAttachment +from geotrek.common.models import AccessibilityAttachment, HDViewPoint from geotrek.common.mixins.models import PublishableMixin from geotrek.common.utils.translation import get_translated_fields @@ -463,3 +464,19 @@ def save(self, request, *args, **kwargs): self.instance.creator = request.user self.instance.content_object = obj return super().save(*args, **kwargs) + + +class HDViewPointForm(MapEntityForm): + geomfields = ['geom'] + + def __init__(self, *args, content_type, object_id, **kwargs): + super().__init__(*args, **kwargs) + ct = ContentType.objects.get_for_id(content_type) + self.instance.content_type = ct + self.instance.content_object = ct.get_object_for_this_type(id=object_id) + self.instance.object_id = object_id + self.helper.form_action += f"?object_id={object_id}&content_type={content_type}" + + class Meta: + model = HDViewPoint + fields = ('picture', 'geom', 'author', 'title', 'license', 'legend') diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html new file mode 100644 index 0000000000..501e9223fb --- /dev/null +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -0,0 +1,131 @@ +{% extends "mapentity/base_site.html" %} +{% load i18n static mapentity_tags leaflet_tags %} + +{% block title %}{{ object }} | {{ block.super }}{% endblock title %} + +{% block mainpanel %} +
+

{{ object }}

+ +
+ +
+ +
+ {% block detailspanel %} + +

{% trans "Attributes" %}

+ + + + + + + + + + + + + + + + + + + + + +
{{ object|verbose:"title" }}{% if object.title %}{{ object.title|safe }} + {% else %}{% trans "None" %}{% endif %} +
{{ object|verbose:"legend" }}{% if object.legend %}{{ object.legend|safe }} + {% else %}{% trans "None" %}{% endif %} +
{{ object|verbose:"license" }}{% if object.license %}{{ object.license|safe }} + {% else %}{% trans "None" %}{% endif %} +
{{ object|verbose:"author" }}{% if object.author %}{{ object.author|safe }} + {% else %}{% trans "None" %}{% endif %} +
{% trans "Related to" %}{% if object.content_object %}{{ object.content_object|safe }} + {% else %}{% trans "None" %}{% endif %} +
+ +

{% trans "Image" %}

+ + {% endblock detailspanel %} +
+ {% if ACTION_HISTORY_ENABLED %} +
+ + + + + + + + + + {% for logentry in logentries %} + + + + + + {% empty %} + + + + {% endfor %} + {% if logentries_hellip %} + + + + + + {% endif %} + +
{% trans "Date" %}{% trans "User" %}{% trans "Action" %}
{{ logentry.action_time }} ({{ logentry.action_time|timesince }}){{ logentry.user }}{{ logentry.action_flag_display }}{% if logentry.change_message %} - {{ logentry.change_message }}{% endif %}
{% trans "None" %}
+ {% if 'mapentity.read_logentry' in perms %} + + {% trans "Full history" %} + + {% endif %} +
+ {% endif %} +
+
+
+ +
+ +
+ {% block mappanel %} + {% if object.get_geom %} + {% include "mapentity/mapgeometry_fragment.html" with mapname="detailmap" %} + {% else %} +

{{ empty_map_message }}

+ {% endif %} + {% endblock mappanel %} +
+ +{% endblock mainpanel %} +{% block extrabody %} + {{ block.super}} + +{% endblock %} diff --git a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html new file mode 100644 index 0000000000..5c7800d258 --- /dev/null +++ b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html @@ -0,0 +1,18 @@ +{% load i18n mapentity_tags %} + +

{% trans "HD Views" %}

+ + + + + +
{% trans "HD Views" %} +

+

+ {% if perms.maintenance.add_hdviewpoints %} + + {% trans "Add a new HD view" %} +

+ {% endif %} + {% valuelist object.view_points.all field='title' %} +
diff --git a/geotrek/common/templates/common/hdviewpoint_form.html b/geotrek/common/templates/common/hdviewpoint_form.html new file mode 100644 index 0000000000..9d688169b8 --- /dev/null +++ b/geotrek/common/templates/common/hdviewpoint_form.html @@ -0,0 +1 @@ +{% extends "mapentity/mapentity_form.html" %} diff --git a/geotrek/common/urls.py b/geotrek/common/urls.py index 3b3bb2bd48..ca244f3934 100644 --- a/geotrek/common/urls.py +++ b/geotrek/common/urls.py @@ -1,7 +1,7 @@ from django.urls import path, converters, register_converter from mapentity.registry import MapEntityOptions -from .views import (JSSettings, admin_check_extents, DocumentPublic, DocumentBookletPublic, import_view, import_update_json, +from .views import (HDViewPointCreate, HDViewPointDetail, JSSettings, admin_check_extents, DocumentPublic, DocumentBookletPublic, import_view, import_update_json, ThemeViewSet, MarkupPublic, sync_view, sync_update_json, SyncRandoRedirect) @@ -21,6 +21,8 @@ class LangConverter(converters.StringConverter): path('commands/syncview', sync_view, name='sync_randos_view'), path('commands/statesync/', sync_update_json, name='sync_randos_state'), path('api//themes.json', ThemeViewSet.as_view({'get': 'list'}), name="themes_json"), + path('hdviewpoint/add', HDViewPointCreate.as_view(), name="hdviewpoint_add"), + path('hdviewpoint/', HDViewPointDetail.as_view(), name="hdviewpoint_detail"), ] diff --git a/geotrek/common/views.py b/geotrek/common/views.py index 27a498a582..08647afeee 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -4,48 +4,54 @@ import os import re from datetime import timedelta -from zipfile import is_zipfile, ZipFile +from zipfile import ZipFile, is_zipfile import redis from django.apps import apps from django.conf import settings from django.contrib import messages -from django.contrib.admin.models import LogEntry, CHANGE -from django.contrib.auth.decorators import login_required, user_passes_test -from django.contrib.auth.decorators import permission_required +from django.contrib.admin.models import CHANGE, LogEntry +from django.contrib.auth.decorators import (login_required, + permission_required, + user_passes_test) from django.core.exceptions import PermissionDenied from django.db.models import Q -from django.http import JsonResponse, Http404, HttpResponse, HttpResponseRedirect -from django.shortcuts import get_object_or_404, render, redirect +from django.http import (Http404, HttpResponse, HttpResponseRedirect, + JsonResponse) +from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse from django.utils import timezone, translation from django.utils.decorators import method_decorator from django.utils.encoding import force_str from django.utils.translation import gettext as _ from django.views import static -from django.views.decorators.http import require_POST, require_http_methods -from django.views.generic import RedirectView, View -from django.views.generic import TemplateView +from django.views.decorators.http import require_http_methods, require_POST +from django.views.generic import CreateView, RedirectView, TemplateView, View from django_celery_results.models import TaskResult from mapentity import views as mapentity_views from mapentity.helpers import api_bbox -from mapentity.registry import registry, app_settings +from mapentity.registry import app_settings, registry from paperclip import settings as settings_paperclip from paperclip.views import _handle_attachment_form -from rest_framework import permissions as rest_permissions, viewsets +from rest_framework import permissions as rest_permissions +from rest_framework import viewsets from geotrek import __version__ from geotrek.celery import app as celery_app from geotrek.feedback.parsers import SuricateParser -from .forms import AttachmentAccessibilityForm, ImportDatasetForm, ImportSuricateForm, ImportDatasetFormWithFile, \ - SyncRandoForm -from .mixins.views import MetaMixin, DocumentPortalMixin, DocumentPublicMixin, BookletMixin -from .models import TargetPortal, AccessibilityAttachment, Theme + +from .forms import (AttachmentAccessibilityForm, HDViewPointForm, + ImportDatasetForm, ImportDatasetFormWithFile, + ImportSuricateForm, SyncRandoForm) +from .mixins.views import (BookletMixin, CompletenessMixin, DocumentPortalMixin, + DocumentPublicMixin, MetaMixin) +from .models import AccessibilityAttachment, HDViewPoint, TargetPortal, Theme from .permissions import PublicOrReadPermMixin from .serializers import ThemeSerializer from .tasks import import_datas, import_datas_from_web, launch_sync_rando from .utils import sql_extent -from .utils.import_celery import create_tmp_destination, discover_available_parsers +from .utils.import_celery import (create_tmp_destination, + discover_available_parsers) class Meta(MetaMixin, TemplateView): @@ -315,6 +321,46 @@ def get(request, *args, **kwargs): return JsonResponse(response) +# class HDViewPointList(CustomColumnsMixin, MapEntityList): +# queryset = HDViewPoint.objects.all() +# TODO IN ADMIN +# filterform = HDViewPointFilterSet +# mandatory_columns = ['id', 'name'] +# default_extra_columns = ['super_practices', 'date_update'] +# searchable_columns = ['id', 'name'] + + +class HDViewPointDetail(CompletenessMixin, mapentity_views.MapEntityDetail): + model = HDViewPoint + queryset = HDViewPoint.objects.all() + + def get_context_data(self, *args, **kwargs): + context = super().get_context_data(*args, **kwargs) + # TODO + context['can_edit'] = self.get_object().same_structure(self.request.user) + return context + + +class HDViewPointCreate(mapentity_views.MapEntityCreate): + model = HDViewPoint + form_class = HDViewPointForm + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs['content_type'] = self.request.GET.get('content_type') + kwargs['object_id'] = self.request.GET.get('object_id') + return kwargs + + +class HDViewPointUpdate(mapentity_views.MapEntityUpdate): + queryset = HDViewPoint.objects.all() + form_class = HDViewPointForm + + +class HDViewPointDelete(mapentity_views.MapEntityDelete): + model = HDViewPoint + + @login_required def last_list(request): last = request.session.get('last_list') # set in MapEntityList From 68ada0244b3ffb461a574da0963efd3e751d7f18 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 19 Oct 2022 13:22:43 +0200 Subject: [PATCH 007/103] Link HD View Point with Trek --- geotrek/trekking/models.py | 1 + geotrek/trekking/templates/trekking/trek_detail.html | 3 +++ 2 files changed, 4 insertions(+) diff --git a/geotrek/trekking/models.py b/geotrek/trekking/models.py index 8d6f06a1d8..f167c5ff74 100755 --- a/geotrek/trekking/models.py +++ b/geotrek/trekking/models.py @@ -218,6 +218,7 @@ class Trek(Topology, StructureRelated, PicturesMixin, PublishableMixin, MapEntit reservation_id = models.CharField(verbose_name=_("Reservation ID"), max_length=1024, blank=True) attachments_accessibility = GenericRelation('common.AccessibilityAttachment') + view_points = GenericRelation('common.HDViewPoint') capture_map_image_waitfor = '.poi_enum_loaded.services_loaded.info_desks_loaded.ref_points_loaded' diff --git a/geotrek/trekking/templates/trekking/trek_detail.html b/geotrek/trekking/templates/trekking/trek_detail.html index 2feabeea99..2492036c8c 100644 --- a/geotrek/trekking/templates/trekking/trek_detail.html +++ b/geotrek/trekking/templates/trekking/trek_detail.html @@ -36,6 +36,9 @@ {% block attachmentspanel %} {% include "trekking/ratio_info_fragment.html" %} {{ block.super }} +
+
+ {% include "common/hdviewpoint_detail_fragment.html" %} {% endblock attachmentspanel %} {% block detailspanel %} From 11df5318500e4aaad7bd76816e7000aa97c19fc0 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 19 Oct 2022 18:33:23 +0200 Subject: [PATCH 008/103] Implement Update, Delete, and Detail views for HD View Points --- geotrek/common/forms.py | 13 +++++++------ geotrek/common/models.py | 34 +++++++++++++++++++++++----------- geotrek/common/serializers.py | 25 ++++++++++++++++++++++--- geotrek/common/urls.py | 13 ++++++++++++- geotrek/common/views.py | 15 ++++++++++++--- 5 files changed, 76 insertions(+), 24 deletions(-) diff --git a/geotrek/common/forms.py b/geotrek/common/forms.py index 67f7aeff0a..6e83969a4d 100644 --- a/geotrek/common/forms.py +++ b/geotrek/common/forms.py @@ -469,13 +469,14 @@ def save(self, request, *args, **kwargs): class HDViewPointForm(MapEntityForm): geomfields = ['geom'] - def __init__(self, *args, content_type, object_id, **kwargs): + def __init__(self, *args, content_type=None, object_id=None, **kwargs): super().__init__(*args, **kwargs) - ct = ContentType.objects.get_for_id(content_type) - self.instance.content_type = ct - self.instance.content_object = ct.get_object_for_this_type(id=object_id) - self.instance.object_id = object_id - self.helper.form_action += f"?object_id={object_id}&content_type={content_type}" + if content_type and object_id: + ct = ContentType.objects.get_for_id(content_type) + self.instance.content_type = ct + self.instance.content_object = ct.get_object_for_this_type(id=object_id) + self.instance.object_id = object_id + self.helper.form_action += f"?object_id={object_id}&content_type={content_type}" class Meta: model = HDViewPoint diff --git a/geotrek/common/models.py b/geotrek/common/models.py index bb311bdd45..c0db4ac56b 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -319,8 +319,19 @@ def __str__(self): def structure(self): return self.content_object.structure - def same_structure(self, structure): - return self.structure == structure + def same_structure(self, user): + """ Returns True if the user is in the same structure or has + bypass_structure permission, False otherwise. """ + return (user.profile.structure == self.structure + or user.is_superuser + or user.has_perm('authent.can_bypass_structure')) + + @property + def full_url(self): + return reverse('common:hdviewpoint_detail', kwargs={'pk': self.pk}) + + def get_absolute_url(self): + return self.full_url def get_add_url(self): return reverse('common:hdviewpoint_add') @@ -330,11 +341,19 @@ def get_list_url(cls): # TODO return reverse('common:hdviewpoint_add') + def get_layer_detail_url(self): + return reverse("{app_name}:{model_name}-drf-detail".format(app_name=self._meta.app_label.lower(), + model_name=self._meta.model_name.lower()), + kwargs={"format": "geojson", "pk": self.pk}) + + def get_detail_url(self): + return reverse('common:hdviewpoint_detail', args=[self.pk]) + def get_update_url(self): - return reverse('admin:hdviewpoint_change', args=[self.pk]) + return reverse('common:hdviewpoint_change', args=[self.pk]) def get_delete_url(self): - return reverse('admin:hdviewpoint_delete', args=[self.pk]) + return reverse('common:hdviewpoint_delete', args=[self.pk]) def get_permission_codename(self, *args): return @@ -375,13 +394,6 @@ def get_map_image_extent(self, srid=settings.API_SRID): obj.transform(srid) return obj.extent - @property - def full_url(self): - return reverse('common:hdviewpoint_detail', kwargs={'pk': self.pk}) - - def get_absolute_url(self): - return self.full_url - @classmethod def get_create_label(cls): return _("Add a new HD view") diff --git a/geotrek/common/serializers.py b/geotrek/common/serializers.py index dd76f5f963..c24fc00eb4 100644 --- a/geotrek/common/serializers.py +++ b/geotrek/common/serializers.py @@ -3,11 +3,11 @@ from django.db import models as django_db_models from django.shortcuts import get_object_or_404 from django.utils.translation import get_language - from rest_framework import serializers as rest_serializers -from rest_framework import serializers as rest_fields +from rest_framework_gis.fields import GeometryField +from rest_framework_gis.serializers import GeoFeatureModelSerializer -from .models import Theme, RecordSource, TargetPortal, FileType, Attachment, Label +from .models import HDViewPoint, Theme, RecordSource, TargetPortal, FileType, Attachment, Label class TranslatedModelSerializer(rest_serializers.ModelSerializer): @@ -92,3 +92,22 @@ class LabelSerializer(PictogramSerializerMixin, TranslatedModelSerializer): class Meta: model = Label fields = ('id', 'pictogram', 'name', 'advice', 'filter_rando') + + +class HDViewPointAPISerializer(TranslatedModelSerializer): + #picture TODO : link to tileserver + + class Meta: + model = HDViewPoint + fields = ( + 'id', 'uuid', 'author', 'title', 'legend', 'license' + ) + + +class HDViewPointAPIGeoJSONSerializer(GeoFeatureModelSerializer, HDViewPointAPISerializer): + # Annotated geom field with API_SRID + api_geom = GeometryField(read_only=True, precision=7) + + class Meta(HDViewPointAPISerializer.Meta): + geo_field = 'api_geom' + fields = HDViewPointAPISerializer.Meta.fields + ('api_geom', ) diff --git a/geotrek/common/urls.py b/geotrek/common/urls.py index ca244f3934..ed27e74118 100644 --- a/geotrek/common/urls.py +++ b/geotrek/common/urls.py @@ -1,7 +1,9 @@ from django.urls import path, converters, register_converter +from geotrek.common.models import HDViewPoint from mapentity.registry import MapEntityOptions +from rest_framework.routers import DefaultRouter -from .views import (HDViewPointCreate, HDViewPointDetail, JSSettings, admin_check_extents, DocumentPublic, DocumentBookletPublic, import_view, import_update_json, +from .views import (HDViewPointAPIViewSet, HDViewPointCreate, HDViewPointDetail, HDViewPointUpdate, HDViewPointDelete, JSSettings, admin_check_extents, DocumentPublic, DocumentBookletPublic, import_view, import_update_json, ThemeViewSet, MarkupPublic, sync_view, sync_update_json, SyncRandoRedirect) @@ -12,6 +14,8 @@ class LangConverter(converters.StringConverter): register_converter(LangConverter, 'lang') app_name = 'common' + + urlpatterns = [ path('api/settings.json', JSSettings.as_view(), name='settings_json'), path('tools/extents/', admin_check_extents, name='check_extents'), @@ -23,8 +27,15 @@ class LangConverter(converters.StringConverter): path('api//themes.json', ThemeViewSet.as_view({'get': 'list'}), name="themes_json"), path('hdviewpoint/add', HDViewPointCreate.as_view(), name="hdviewpoint_add"), path('hdviewpoint/', HDViewPointDetail.as_view(), name="hdviewpoint_detail"), + path('hdviewpoint/edit/', HDViewPointUpdate.as_view(), name="hdviewpoint_change"), + path('hdviewpoint/delete/', HDViewPointDelete.as_view(), name="hdviewpoint_delete"), ] +rest_router = DefaultRouter(trailing_slash=False) +rest_router.register(r'api/' + HDViewPoint._meta.model_name + '/drf/' + HDViewPoint._meta.model_name + 's', + HDViewPointAPIViewSet, basename=f"{HDViewPoint._meta.model_name}-drf") +urlpatterns += rest_router.urls + class PublishableEntityOptions(MapEntityOptions): document_public_view = DocumentPublic diff --git a/geotrek/common/views.py b/geotrek/common/views.py index 08647afeee..a3bf0a62df 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -14,6 +14,7 @@ from django.contrib.auth.decorators import (login_required, permission_required, user_passes_test) +from django.contrib.gis.db.models.functions import Transform from django.core.exceptions import PermissionDenied from django.db.models import Q from django.http import (Http404, HttpResponse, HttpResponseRedirect, @@ -26,8 +27,9 @@ from django.utils.translation import gettext as _ from django.views import static from django.views.decorators.http import require_http_methods, require_POST -from django.views.generic import CreateView, RedirectView, TemplateView, View +from django.views.generic import RedirectView, TemplateView, View from django_celery_results.models import TaskResult +from geotrek.common.mixins.api import APIViewSet from mapentity import views as mapentity_views from mapentity.helpers import api_bbox from mapentity.registry import app_settings, registry @@ -47,7 +49,7 @@ DocumentPublicMixin, MetaMixin) from .models import AccessibilityAttachment, HDViewPoint, TargetPortal, Theme from .permissions import PublicOrReadPermMixin -from .serializers import ThemeSerializer +from .serializers import HDViewPointAPIGeoJSONSerializer, HDViewPointAPISerializer, ThemeSerializer from .tasks import import_datas, import_datas_from_web, launch_sync_rando from .utils import sql_extent from .utils.import_celery import (create_tmp_destination, @@ -329,6 +331,14 @@ def get(request, *args, **kwargs): # default_extra_columns = ['super_practices', 'date_update'] # searchable_columns = ['id', 'name'] +class HDViewPointAPIViewSet(APIViewSet): + model = HDViewPoint + serializer_class = HDViewPointAPISerializer + geojson_serializer_class = HDViewPointAPIGeoJSONSerializer + + def get_queryset(self): + return HDViewPoint.objects.annotate(api_geom=Transform("geom", settings.API_SRID)) + class HDViewPointDetail(CompletenessMixin, mapentity_views.MapEntityDetail): model = HDViewPoint @@ -336,7 +346,6 @@ class HDViewPointDetail(CompletenessMixin, mapentity_views.MapEntityDetail): def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) - # TODO context['can_edit'] = self.get_object().same_structure(self.request.user) return context From 0c95feeebf2ba1f80331188881010e79115dc78e Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 20 Oct 2022 12:33:33 +0200 Subject: [PATCH 009/103] Enable django-large-image --- geotrek/settings/base.py | 1 + requirements.txt | 25 ++++++++++++++++++++++++- setup.py | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/geotrek/settings/base.py b/geotrek/settings/base.py index c479011860..1408059e5a 100644 --- a/geotrek/settings/base.py +++ b/geotrek/settings/base.py @@ -294,6 +294,7 @@ def api_bbox(bbox, buffer): 'rest_framework_gis', 'embed_video', 'django_celery_results', + 'django_large_image', 'colorfield', 'mptt', ) diff --git a/requirements.txt b/requirements.txt index 53bbd68e78..3033643c1b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,6 +20,8 @@ billiard==3.6.4.0 # via celery btrees==4.10.0 # via zodb +cachetools==5.2.0 + # via large-image cairocffi==0.9.0 # via # cairosvg @@ -91,6 +93,7 @@ django==3.2.15 # django-extensions # django-filter # django-js-asset + # django-large-image # django-leaflet # django-modeltranslation # django-weasyprint @@ -126,6 +129,8 @@ django-filter==21.1 # via mapentity django-js-asset==2.0.0 # via django-mptt +django-large-image==0.8.1 + # via geotrek (setup.py) django-leaflet==0.19.post9 # via mapentity django-modelcluster==5.3 @@ -142,6 +147,7 @@ django-weasyprint==1.1.0.post2 # mapentity djangorestframework==3.13.1 # via + # django-large-image # djangorestframework-datatables # djangorestframework-gis # drf-extensions @@ -158,7 +164,9 @@ drf-dynamic-fields==0.4.0 drf-extensions==0.7.1 # via geotrek (setup.py) drf-yasg==1.20.0 - # via geotrek (setup.py) + # via + # django-large-image + # geotrek (setup.py) easy-thumbnails==2.7 # via # mapentity @@ -169,6 +177,8 @@ factory-boy==3.2.1 # via geotrek (setup.py) faker==13.3.4 # via factory-boy +filelock==3.8.0 + # via django-large-image fiona==1.8.21 # via # geotrek (setup.py) @@ -197,6 +207,12 @@ kombu==5.1.0 # via celery landez==2.5.0 # via geotrek (setup.py) +large-image==1.17.1 + # via + # django-large-image + # large-image-source-pil +large-image-source-pil==1.17.1 + # via geotrek (setup.py) lxml==4.8.0 # via mapentity mapentity==8.2.1 @@ -209,10 +225,14 @@ munch==2.5.0 # via fiona netifaces==0.11.0 # via mapentity +numpy==1.23.4 + # via large-image packaging==21.3 # via # drf-yasg # redis +palettable==3.3.0 + # via large-image paperclip==2.6.1 # via # geotrek (setup.py) @@ -231,10 +251,13 @@ pillow==8.4.0 # django-colorfield # easy-thumbnails # geotrek (setup.py) + # large-image # paperclip # weasyprint prompt-toolkit==3.0.30 # via click-repl +psutil==5.9.3 + # via large-image psycopg2==2.9.3 # via geotrek (setup.py) pycparser==2.21 diff --git a/setup.py b/setup.py index a65994b6bf..e3f2996607 100644 --- a/setup.py +++ b/setup.py @@ -55,6 +55,7 @@ def run(self): 'drf-yasg', 'xlrd', 'landez', + 'large-image-source-pil', 'django-large-image', 'celery[redis]', 'django-celery-results==2.2.*', # Latest version supporting python3.6 From 84db9c7fa5c4a87bf0913522370a3f1464bf8f87 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 20 Oct 2022 12:34:04 +0200 Subject: [PATCH 010/103] Display tiled image in HDViewPoint detail view --- geotrek/common/models.py | 3 +++ geotrek/common/static/common/style.css | 10 +++++++++- .../templates/common/hdviewpoint_detail.html | 13 ++++++++++++- geotrek/common/urls.py | 3 ++- geotrek/common/views.py | 18 ++++++++++++++---- 5 files changed, 40 insertions(+), 7 deletions(-) diff --git a/geotrek/common/models.py b/geotrek/common/models.py index c0db4ac56b..90621588ec 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -341,6 +341,9 @@ def get_list_url(cls): # TODO return reverse('common:hdviewpoint_add') + def get_picture_tile_url(self, x, y, z): + return reverse("common:hdviewpoint-tile", kwargs={'pk': self.pk, 'x': x, 'y': y, 'z': z, 'fmt': 'png'}) + def get_layer_detail_url(self): return reverse("{app_name}:{model_name}-drf-detail".format(app_name=self._meta.app_label.lower(), model_name=self._meta.model_name.lower()), diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index b993942020..61e5a486ab 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -17,4 +17,12 @@ fieldset { margin-left: 80px; -} \ No newline at end of file +} + +#hdviewpoint-map { + width: 100%; + height: 600px; + padding: 0; + margin: 0; + overflow: hidden; +} diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 501e9223fb..65272010aa 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -67,7 +67,18 @@

{% trans "Attributes" %}

{% trans "Image" %}

- + {% url 'common:hdviewpoint-drf-detail' object.pk as base_tile_url %} +
+ + {% endblock detailspanel %} {% if ACTION_HISTORY_ENABLED %} diff --git a/geotrek/common/urls.py b/geotrek/common/urls.py index ed27e74118..28d27e81ab 100644 --- a/geotrek/common/urls.py +++ b/geotrek/common/urls.py @@ -3,7 +3,7 @@ from mapentity.registry import MapEntityOptions from rest_framework.routers import DefaultRouter -from .views import (HDViewPointAPIViewSet, HDViewPointCreate, HDViewPointDetail, HDViewPointUpdate, HDViewPointDelete, JSSettings, admin_check_extents, DocumentPublic, DocumentBookletPublic, import_view, import_update_json, +from .views import (HDViewPointAPIViewSet, HDViewPointCreate, HDViewPointDetail, HDViewPointUpdate, HDViewPointDelete, JSSettings, TiledHDViewPointViewSet, admin_check_extents, DocumentPublic, DocumentBookletPublic, import_view, import_update_json, ThemeViewSet, MarkupPublic, sync_view, sync_update_json, SyncRandoRedirect) @@ -34,6 +34,7 @@ class LangConverter(converters.StringConverter): rest_router = DefaultRouter(trailing_slash=False) rest_router.register(r'api/' + HDViewPoint._meta.model_name + '/drf/' + HDViewPoint._meta.model_name + 's', HDViewPointAPIViewSet, basename=f"{HDViewPoint._meta.model_name}-drf") +rest_router.register(r'api/' + HDViewPoint._meta.model_name + '/drf/' + HDViewPoint._meta.model_name + 's', TiledHDViewPointViewSet) urlpatterns += rest_router.urls diff --git a/geotrek/common/views.py b/geotrek/common/views.py index a3bf0a62df..b3c5dd30d6 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -29,27 +29,30 @@ from django.views.decorators.http import require_http_methods, require_POST from django.views.generic import RedirectView, TemplateView, View from django_celery_results.models import TaskResult -from geotrek.common.mixins.api import APIViewSet +from django_large_image.rest import LargeImageFileDetailMixin from mapentity import views as mapentity_views from mapentity.helpers import api_bbox from mapentity.registry import app_settings, registry from paperclip import settings as settings_paperclip from paperclip.views import _handle_attachment_form +from rest_framework import mixins from rest_framework import permissions as rest_permissions from rest_framework import viewsets from geotrek import __version__ from geotrek.celery import app as celery_app +from geotrek.common.mixins.api import APIViewSet from geotrek.feedback.parsers import SuricateParser from .forms import (AttachmentAccessibilityForm, HDViewPointForm, ImportDatasetForm, ImportDatasetFormWithFile, ImportSuricateForm, SyncRandoForm) -from .mixins.views import (BookletMixin, CompletenessMixin, DocumentPortalMixin, - DocumentPublicMixin, MetaMixin) +from .mixins.views import (BookletMixin, CompletenessMixin, + DocumentPortalMixin, DocumentPublicMixin, MetaMixin) from .models import AccessibilityAttachment, HDViewPoint, TargetPortal, Theme from .permissions import PublicOrReadPermMixin -from .serializers import HDViewPointAPIGeoJSONSerializer, HDViewPointAPISerializer, ThemeSerializer +from .serializers import (HDViewPointAPIGeoJSONSerializer, + HDViewPointAPISerializer, ThemeSerializer) from .tasks import import_datas, import_datas_from_web, launch_sync_rando from .utils import sql_extent from .utils.import_celery import (create_tmp_destination, @@ -370,6 +373,13 @@ class HDViewPointDelete(mapentity_views.MapEntityDelete): model = HDViewPoint +class TiledHDViewPointViewSet(mixins.ListModelMixin, viewsets.GenericViewSet, LargeImageFileDetailMixin): + queryset = HDViewPoint.objects.all() + serializer_class = HDViewPointAPISerializer + # for `django-large-image`: the name of the image FileField on your model + FILE_FIELD_NAME = 'picture' + + @login_required def last_list(request): last = request.session.get('last_list') # set in MapEntityList From 41eaa07bf09db7abc86d61a8398075b2e4acbfce Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 20 Oct 2022 14:30:03 +0200 Subject: [PATCH 011/103] Rename GeoJS viewer --- geotrek/common/templates/common/hdviewpoint_detail.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 65272010aa..5705a1123b 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -71,8 +71,10 @@

{% trans "Image" %}

diff --git a/geotrek/trekking/models.py b/geotrek/trekking/models.py index f167c5ff74..3c3159d4bc 100755 --- a/geotrek/trekking/models.py +++ b/geotrek/trekking/models.py @@ -218,7 +218,7 @@ class Trek(Topology, StructureRelated, PicturesMixin, PublishableMixin, MapEntit reservation_id = models.CharField(verbose_name=_("Reservation ID"), max_length=1024, blank=True) attachments_accessibility = GenericRelation('common.AccessibilityAttachment') - view_points = GenericRelation('common.HDViewPoint') + view_points = GenericRelation('common.HDViewPoint', related_query_name='trek') capture_map_image_waitfor = '.poi_enum_loaded.services_loaded.info_desks_loaded.ref_points_loaded' From 44a7aefba183ee695127ea1e25c49b03e359dd60 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 9 Nov 2022 17:17:04 +0100 Subject: [PATCH 017/103] Schedule viewer load after map and add spinner --- geotrek/common/static/common/style.css | 26 +++++++++++++++++++ .../templates/common/hdviewpoint_detail.html | 21 ++++++++------- geotrek/common/views.py | 2 +- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index 61e5a486ab..d4a986e93f 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -26,3 +26,29 @@ fieldset { margin: 0; overflow: hidden; } + +.loader-wrapper { + display: table; + margin: 0 auto; +} + +.loader { + width: 48px; + height: 48px; + border: 5px solid green; + border-bottom-color: transparent; + border-radius: 50%; + display: inline-block; + box-sizing: border-box; + animation: rotation 1s linear infinite; +} + +@keyframes rotation { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 2753d7057a..27838b4264 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -78,18 +78,21 @@

{% trans "Attributes" %}

{% trans "Image" %}

{% url 'common:hdviewpoint-drf-detail' object.pk as base_tile_url %} -
+
{% endblock detailspanel %} diff --git a/geotrek/common/views.py b/geotrek/common/views.py index b3c5dd30d6..6a4b6fb3ff 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -345,7 +345,7 @@ def get_queryset(self): class HDViewPointDetail(CompletenessMixin, mapentity_views.MapEntityDetail): model = HDViewPoint - queryset = HDViewPoint.objects.all() + queryset = HDViewPoint.objects.all().select_related('content_type', 'license') def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) From 32c9436493c98cc87b61e34ed508887988a2aebf Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 21 Nov 2022 17:32:45 +0100 Subject: [PATCH 018/103] Improve HDViewPoint viewer --- .../templates/common/hdviewpoint_detail.html | 48 +++++++++++++++---- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 27838b4264..e486525ee9 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -82,16 +82,44 @@

{% trans "Image" %}

{% endblock detailspanel %} From ca1dddb462c40c44f88eaf62e40b0f50fed3652d Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 22 Nov 2022 10:36:13 +0100 Subject: [PATCH 019/103] Use display name for related object in HD View Point detail page --- geotrek/common/templates/common/hdviewpoint_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index e486525ee9..076acad373 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -60,7 +60,7 @@

{% trans "Attributes" %}

{% trans "Related to" %} - {% if object.content_object %}{{ object.content_object|safe }} + {% if object.content_object %}{{ object.content_object.name_display|safe }} {% else %}{% trans "None" %}{% endif %} From 07551febe933502a5662a5eca6f9efe1d74c4bcc Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 22 Nov 2022 11:50:08 +0100 Subject: [PATCH 020/103] Fix merge --- ...0026_hdviewpoint.py => 0028_hdviewpoint.py} | 2 +- .../0029_alter_hdviewpoint_picture.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) rename geotrek/common/migrations/{0026_hdviewpoint.py => 0028_hdviewpoint.py} (97%) create mode 100644 geotrek/common/migrations/0029_alter_hdviewpoint_picture.py diff --git a/geotrek/common/migrations/0026_hdviewpoint.py b/geotrek/common/migrations/0028_hdviewpoint.py similarity index 97% rename from geotrek/common/migrations/0026_hdviewpoint.py rename to geotrek/common/migrations/0028_hdviewpoint.py index ca40496f06..dada2b9d94 100644 --- a/geotrek/common/migrations/0026_hdviewpoint.py +++ b/geotrek/common/migrations/0028_hdviewpoint.py @@ -10,7 +10,7 @@ class Migration(migrations.Migration): dependencies = [ ('contenttypes', '0002_remove_content_type_name'), - ('common', '0025_auto_20220425_1550'), + ('common', '0027_flush_cache_1234'), ] operations = [ diff --git a/geotrek/common/migrations/0029_alter_hdviewpoint_picture.py b/geotrek/common/migrations/0029_alter_hdviewpoint_picture.py new file mode 100644 index 0000000000..aa4495b831 --- /dev/null +++ b/geotrek/common/migrations/0029_alter_hdviewpoint_picture.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.15 on 2022-11-07 09:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0028_hdviewpoint'), + ] + + operations = [ + migrations.AlterField( + model_name='hdviewpoint', + name='picture', + field=models.FileField(upload_to='hdviewpoints/', verbose_name='Picture'), + ), + ] From 66efcb0a4841c0fe942b9730217536085f953d10 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 22 Nov 2022 12:22:21 +0100 Subject: [PATCH 021/103] Fix error 500 on metadata --- geotrek/common/templates/common/hdviewpoint_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 076acad373..b29c679307 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -85,7 +85,7 @@

{% trans "Image" %}

const containerRef = document.getElementById('hdviewpoint-map') var tileUrl = "{{base_tile_url}}" + `/tiles/{z}/{x}/{y}.png?source=vips`; - var metadataUrl = "{{base_tile_url}}" + "/info/metadata"; + var metadataUrl = "{{base_tile_url}}" + "/info/metadata?source=vips"; var viewer; fetch(metadataUrl) From ca291a14b43cf0341b5b76b38b4ec821fa57d0fa Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 22 Nov 2022 16:32:02 +0100 Subject: [PATCH 022/103] Draft for annotations widget --- .../common/static/common/js/annotations.js | 484 ++++++++++++++++++ geotrek/common/static/common/style.css | 121 +++++ .../templates/common/annotations_widget.html | 173 +++++++ .../templates/common/hdviewpoint_detail.html | 4 + 4 files changed, 782 insertions(+) create mode 100644 geotrek/common/static/common/js/annotations.js create mode 100644 geotrek/common/templates/common/annotations_widget.html diff --git a/geotrek/common/static/common/js/annotations.js b/geotrek/common/static/common/js/annotations.js new file mode 100644 index 0000000000..90d9fd52c3 --- /dev/null +++ b/geotrek/common/static/common/js/annotations.js @@ -0,0 +1,484 @@ +/* Decode query components into a dictionary of values. + * + * @returns {object}: the query parameters as a dictionary. + */ +function getQuery() { + var query = document.location.search.replace(/(^\?)/, '').split( + '&').map(function (n) { + n = n.split('='); + if (n[0]) { + this[decodeURIComponent(n[0].replace(/\+/g, '%20'))] = decodeURIComponent(n[1].replace(/\+/g, '%20')); + } + return this; + }.bind({}))[0]; + return query; +} + +/* Encode a dictionary of parameters to the query string, setting the window + * location and history. This will also remove undefined values from the + * set properites of params. + * + * @param {object} params: the query parameters as a dictionary. + */ +function setQuery(params) { + $.each(params, function (key, value) { + if (value === undefined) { + delete params[key]; + } + }); + var newurl = window.location.protocol + '//' + window.location.host + + window.location.pathname + '?' + $.param(params); + window.history.replaceState(params, '', newurl); +} + +var query = getQuery(); + +$('#showLabels').prop('checked', query.labels !== 'false'); +if (query.lastannotation && query.clickmode !== 'brush') { + $('.annotationtype button').removeClass('lastused'); + $('.annotationtype button#' + query.lastannotation).addClass('lastused'); +} + +function initAnnotations(map) { + + var annotationDebug = {}; + + var layer, fromButtonSelect, fromGeojsonUpdate; + + var initialGeoJSON = query.geojson; + + $('#controls').on('change', change_controls); + $('#geojson[type=textarea]').on('input propertychange', change_geojson); + $('#controls').on('click', 'a', select_control); + $('.annotationtype button').on('click', select_annotation); + + $('#controls').toggleClass('no-controls', query.controls === 'false'); + + layer = map.createLayer('annotation', { + renderer: query.renderer ? (query.renderer === 'html' ? null : query.renderer) : undefined, + annotations: query.renderer ? undefined : geo.listAnnotations(), + showLabels: query.labels !== 'false', + clickToEdit: !query.clickmode || query.clickmode === 'edit' + }); + + + layer.geoOn(geo.event.mouseclick, mouseClickToStart); + layer.geoOn(geo.event.annotation.mode, handleModeChange); + layer.geoOn(geo.event.annotation.add, handleAnnotationChange); + layer.geoOn(geo.event.annotation.update, handleAnnotationChange); + layer.geoOn(geo.event.annotation.remove, handleAnnotationChange); + layer.geoOn(geo.event.annotation.state, handleAnnotationChange); + + let brushLayer; + + map.draw(); + + if (query.lastused || query.active) { + if (query.active && query.clickmode !== 'brush') { + layer.mode(query.active); + } else { + $('.annotationtype button').removeClass('lastused active'); + $('.annotationtype button#' + (query.lastused || query.active)).addClass('lastused'); + } + } + + if (initialGeoJSON) { + layer.geojson(initialGeoJSON, true); + } + + // if (query.clickmode === 'brush') { + // setBrushMode(); + // } + + annotationDebug.map = map; + annotationDebug.layer = layer; + annotationDebug.query = query; + + /** + * When the mouse is clicked, switch to adding an annotation if appropriate. + * + * @param {geo.event} evt geojs event. + */ + function mouseClickToStart(evt) { + if (evt.handled || query.clickmode !== 'add') { + return; + } + if (evt.buttonsDown.left) { + if ($('.annotationtype button.lastused').hasClass('active')) { + return; + } + select_button('.annotationtype button.lastused'); + } else if (evt.buttonsDown.right) { + select_button('.annotationtype button#' + + $('.annotationtype button.lastused').attr('next')); + } + } + + /** + * Handle a click or drag with a brush. + * + * @param {object} evt The event with the activity. + * */ + let lastState; + function brushAction(evt) { + let source; + if (evt.event === geo.event.annotation.cursor_action) { + if (evt.operation && evt.operation !== 'union' && evt.operation !== 'difference') { + return; + } + + + if (lastState && lastState.stateId && lastState.stateId === evt.evt.state.stateId) { + const size = parseInt($('#brushsize').val()); + source = brushLayer.toPolygonList(); + const bbox1 = brushLayer.annotations()[0]._coordinates(); + const bbox2 = lastState.bbox; + if (bbox1[0].x !== bbox2[0].x || bbox1[0].y !== bbox2[0].y) { + const order = (bbox1[0].x - bbox2[0].x) * (bbox1[0].y - bbox2[0].y) < 0 ? 0 : 1; + source.push([[ + [bbox1[order].x, bbox1[order].y], + [bbox1[order + 2].x, bbox1[order + 2].y], + [bbox2[order + 2].x, bbox2[order + 2].y], + [bbox2[order].x, bbox2[order].y] + ]]); + } + } + lastState = evt.evt.state; + lastState.bbox = brushLayer.annotations()[0]._coordinates(); + } else { + lastState = null; + } + geo.util.polyops[evt.operation || 'union'](layer, source || brushLayer, { correspond: {}, keepAnnotations: 'exact', style: layer }); + } + + /** + * If the brush mode ends but we are supposed to be in brush mode, reset it. + */ + var inUpdateBrushMode; + function updateBrushMode() { + if (query.clickmode !== 'brush') { + return; + } + if (!inUpdateBrushMode) { + inUpdateBrushMode = true; + window.setTimeout(() => { + setBrushMode(); + inUpdateBrushMode = false; + }, 1); + } + } + + /** + * If we are switching to brush mode, create an annotation that will be used + * and hook to annotation cursor events. If switching away, remove such an + * annotation. + */ + function setBrushMode(mode) { + if (brushLayer) { + brushLayer.mode(null); + brushLayer.removeAllAnnotations(); + } + if (query.clickmode !== 'brush') { + return; + } + layer.mode(null); + if (!brushLayer) { + brushLayer = map.createLayer('annotation', { + renderer: query.renderer ? (query.renderer === 'html' ? null : query.renderer) : undefined, + showLabels: false + }); + brushLayer.geoOn(geo.event.annotation.cursor_click, brushAction); + brushLayer.geoOn(geo.event.annotation.cursor_action, brushAction); + brushLayer.geoOn(geo.event.annotation.mode, updateBrushMode); + brushLayer.geoOn(geo.event.annotation.state, updateBrushMode); + } + annotationDebug.brushLayer = brushLayer; + const size = parseInt($('#brushsize').val()); + console.log(size); + const annot = geo.registries.annotations['square'].func({ layer: layer }); + brushLayer.addAnnotation(annot); + annot._coordinates([{ x: 0, y: 0 }, { x: size, y: 0 }, { x: size, y: size }, { y: size, x: 0 }]); + brushLayer.mode(brushLayer.modes.cursor, annot); + map.draw(); + } + + /** + * Handle changes to our controls. + * + * @param evt jquery evt that triggered this call. + */ + function change_controls(evt) { + var ctl = $(evt.target), + param = ctl.attr('param-name'), + value = ctl.val(); + if (ctl.is('[type="checkbox"]')) { + value = ctl.is(':checked') ? 'true' : 'false'; + } + if (value === '' && ctl.attr('placeholder')) { + value = ctl.attr('placeholder'); + } + if (!param || value === query[param]) { + return; + } + switch (param) { + case 'labels': + layer.options('showLabels', '' + value !== 'false'); + layer.draw(); + break; + case 'clickmode': + layer.options('clickToEdit', value === 'edit'); + layer.draw(); + if (value === 'brush') { + $('.annotationtype button').removeClass('lastused active'); + query.lastused = query.active ? query.active : query.lastused; + query.active = undefined; + } + break; + } + query[param] = value; + if (value === '' || (ctl.attr('placeholder') && + value === ctl.attr('placeholder'))) { + delete query[param]; + } + + setQuery(query); + if (['clickmode'].indexOf(param) >= 0) { + setBrushMode(); + } + } + + /** + * Handle changes to the geojson. + * + * @param evt jquery evt that triggered this call. + */ + function change_geojson(evt) { + var ctl = $(evt.target), + value = ctl.val(); + + + fromGeojsonUpdate = true; + var result = layer.geojson(value, 'update'); + if (query.save && result !== undefined) { + var geojson = layer.geojson(); + query.geojson = geojson ? JSON.stringify(geojson) : undefined; + setQuery(query); + } + fromGeojsonUpdate = false; + } + + /** + * Handle selecting an annotation button. + * + * @param evt jquery evt that triggered this call. + */ + function select_annotation(evt) { + select_button(evt.target); + } + + /** + * Select an annotation button by jquery selector. + * + * @param {object} ctl a jquery selector or element. + */ + function select_button(ctl) { + ctl = $(ctl); + if (query.clickmode === 'brush') { + query.clickmode = 'edit'; + layer.options('clickToEdit', true); + $('#clickmode').val(query.clickmode); + setQuery(query); + setBrushMode(); + } + var wasactive = ctl.hasClass('active'), + id = ctl.attr('id'); + fromButtonSelect = true; + layer.mode(wasactive ? null : id); + fromButtonSelect = false; + } + + /** + * When the annotation mode changes, update the controls to reflect it. + * + * @param {geo.event} evt a geojs mode change event. + */ + function handleModeChange(evt) { + + + var mode = layer.mode(); + $('.annotationtype button').removeClass('active'); + if (mode) { + $('.annotationtype button').removeClass('lastused active'); + $('.annotationtype button#' + mode).addClass('lastused active'); + } + $('#instructions').attr( + 'annotation', $('.annotationtype button.active').attr('id') || 'none'); + query.active = $('.annotationtype button.active').attr('id') || undefined; + query.lastused = query.active ? undefined : $('.annotationtype button.lastused').attr('id'); + setQuery(query); + + if (!mode && !fromButtonSelect && query.clickmode !== 'brush') { + layer.mode($('.annotationtype button.lastused').attr('id')); + } + } + + /** + * When an annotation is created or removed, update our list of annotations. + * + * @param {geo.event} evt a geojs mode change event. + */ + function handleAnnotationChange(evt) { + var annotations = layer.annotations(); + var ids = annotations.map(function (annotation) { + return annotation.id(); + }); + var present = []; + $('#annotationlist .entry').each(function () { + var entry = $(this); + if (entry.attr('id') === 'sample') { + return; + } + var id = entry.attr('annotation-id'); + + + if ($.inArray(id, ids) < 0) { + entry.remove(); + return; + } + present.push(id); + + + entry.find('.entry-name').text(layer.annotationById(id).name()); + }); + + + $.each(ids, function (idx, id) { + if ($.inArray(id, present) >= 0) { + return; + } + var annotation = layer.annotationById(id); + if (annotation.state() === geo.annotation.state.create) { + return; + } + var entry = $('#annotationlist .entry#sample').clone(); + entry.attr({ id: '', 'annotation-id': id }); + entry.find('.entry-name').text(annotation.name()); + $('#annotationlist').append(entry); + }); + $('#annotationheader').css( + 'display', $('#annotationlist .entry').length <= 1 ? 'none' : 'block'); + if (!fromGeojsonUpdate) { + + + var geojson = layer.geojson(); + $('#geojson').val(geojson ? JSON.stringify(geojson, undefined, 2) : ''); + if (query.save) { + query.geojson = geojson ? JSON.stringify(geojson) : undefined; + setQuery(query); + } + } + } + + /** + * Handle selecting a control. + * + * @param evt jquery evt that triggered this call. + */ + function select_control(evt) { + var mode, + ctl = $(evt.target), + action = ctl.attr('action'), + id = ctl.closest('.entry').attr('annotation-id'), + annotation = layer.annotationById(id); + switch (action) { + case 'adjust': + layer.mode(layer.modes.edit, annotation); + layer.draw(); + break; + case 'edit': + show_edit_dialog(id); + break; + case 'remove': + layer.removeAnnotation(annotation); + break; + case 'remove-all': + fromButtonSelect = true; + mode = layer.mode(); + layer.mode(null); + layer.removeAllAnnotations(); + layer.mode(mode); + fromButtonSelect = false; + break; + } + } + + /** + * Show the edit dialog for a particular annotation. + * + * @param {number} id the annotation id to edit. + */ + function show_edit_dialog(id) { + var annotation = layer.annotationById(id), + type = annotation.type(), + typeMatch = new RegExp('(^| )(' + type + '|all)( |$)'), + opt = annotation.options(), + dlg = $('#editdialog'); + + $('#edit-validation-error', dlg).text(''); + dlg.attr('annotation-id', id); + dlg.attr('annotation-type', type); + $('[option="name"]', dlg).val(annotation.name()); + $('[option="label"]', dlg).val(annotation.label(undefined, true)); + $('[option="description"]', dlg).val(annotation.description()); + + + $('.form-group[annotation-types]').each(function () { + var ctl = $(this), + key = $('[option]', ctl).attr('option'), + format = $('[option]', ctl).attr('format'), + value; + if (!ctl.attr('annotation-types').match(typeMatch)) { + + + ctl.hide(); + return; + } + ctl.show(); + switch ($('[option]', ctl).attr('optiontype')) { + case 'option': + value = opt[key]; + break; + case 'label': + value = (opt.labelStyle || {})[key]; + break; + default: + value = opt.style[key]; + break; + } + switch (format) { + case 'angle': + if (value !== undefined && value !== null && value !== '') { + value = '' + +(+value * 180.0 / Math.PI).toFixed(4) + ' deg'; + } + break; + case 'color': + + + value = geo.util.convertColorToHex(value || { r: 0, g: 0, b: 0 }, 'needed'); + break; + case 'coordinate2': + if (value !== undefined && value !== null && value !== '') { + value = '' + value.x + ', ' + value.y; + } + } + if ((value === undefined || value === '' || value === null) && $('[option]', ctl).is('select')) { + value = $('[option] option', ctl).eq(0).val(); + } + $('[option]', ctl).val(value === undefined ? '' : '' + value); + }); + dlg.one('shown.bs.modal', function () { + $('[option="name"]', dlg).focus(); + }); + dlg.modal(); + } +} diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index d4a986e93f..9d8e44357c 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -52,3 +52,124 @@ fieldset { transform: rotate(360deg); } } + +#controls { + overflow-x: hidden; + overflow-y: auto; + position: absolute; + left: 10px; + top: 80px; + z-index: 1000; + border-radius: 5px; + border: 1px solid grey; + box-shadow: 1px 1px 3px black; + opacity: 0.5; + transition: opacity 250ms ease; + background: #CCC; + color: black; + padding: 4px; + font-size: 14px; + max-height: calc(100% - 100px); + min-width: 310px; +} +#controls:hover { + opacity: 1; +} +#controls .form-group { + margin-bottom: 0; +} +#controls label { + min-width: 160px; +} +#controls.no-controls { + display: none; +} +.annotationtype button.lastused { + color: #373a3c; + background-color: #e6e6e6; + border-color: #adadad; +} +.annotationtype button.active { + color: white; + background-color: #025aa5; + border-color: #01549b; +} +.shortlabel { + margin-bottom: 5px; + font-weight: bold; + display: inline-block; +} +#instructions .annotation { + display: none; + max-width: 300px; + font-size: 12px; + line-height: 1.42857em; + min-height: 2.85714em; +} +#instructions[annotation="polygon"] .annotation.polygon, +#instructions[annotation="rectangle"] .annotation.rectangle, +#instructions[annotation="square"] .annotation.square, +#instructions[annotation="ellipse"] .annotation.ellipse, +#instructions[annotation="circle"] .annotation.circle, +#instructions[annotation="point"] .annotation.point, +#instructions[annotation="line"] .annotation.line, +#instructions[annotation="none"] .annotation.none { + display: block; +} +#controls a { + color: #333; + cursor: pointer; +} +#controls .form-group.compact label { + min-width: 0px; + padding-right: 5px; +} +#controls .form-group.compact select { + padding-right: 10px; +} +#controls .form-group.compact input[type="range"] { + width: 120px; + display: inline-block; + vertical-align: middle; +} + +.entry span, .entry a { + display: inline-block; +} +.entry .entry-name { + width: 82%; +} +.entry a { + width: 6%; + text-align: right; +} +.entry .entry-edit { + font-weight: bold; +} +.entry-remove-all { + float: right; +} +#annotationheader, .entry#sample { + display: none; +} +#editdialog { + font-size: 14px; +} +#editdialog .form-group { + margin-bottom: 0px; +} +#editdialog #edit-update { + float: right; + margin-left: 10px; +} +#editdialog label { + min-width: 105px; +} +#editdialog #edit-validation-error { + color: red; + font-weight: bold; +} +#geojson { + width: 100%; + resize: vertical; +} diff --git a/geotrek/common/templates/common/annotations_widget.html b/geotrek/common/templates/common/annotations_widget.html new file mode 100644 index 0000000000..3d712151e7 --- /dev/null +++ b/geotrek/common/templates/common/annotations_widget.html @@ -0,0 +1,173 @@ +
+
+
+
Add
+ +
+ {% comment %}
+
+
+
Left-click points in the polygon. Double click, right click, or click the starting point to close the polygon.
+
Left click-and-drag or left click opposite corners to draw a rectangle.
+
Left click-and-drag or left click opposite corners to draw a square.
+
Left click-and-drag or left click opposite corners to draw an ellipse.
+
Left click-and-drag or left click opposite corners to draw a circle.
+
Left click to create a point.
+
Left-click points in the line. Double click, right click, or click the starting point to end the line.
+
+
{% endcomment %} + {% comment %}
+ + +
{% endcomment %} + {% comment %}
+ + + +
+
{% endcomment %} +
+
+
Created Annotations
+ +
+
+
+
Sample
+
+
+
+
+ {% comment %} {% endcomment %} +
+ \ No newline at end of file diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index b29c679307..12317fbeb9 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -79,6 +79,7 @@

{% trans "Attributes" %}

{% trans "Image" %}

{% url 'common:hdviewpoint-drf-detail' object.pk as base_tile_url %}
+ {% include "common/annotations_widget.html" %} + {% endblock %} From e67bff94bc1e33b59f7975fe412b32834c648a8e Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 23 Nov 2022 10:15:03 +0100 Subject: [PATCH 023/103] Clean annotations widget script --- .../common/static/common/js/annotations.js | 215 +----------------- .../templates/common/annotations_widget.html | 155 +------------ .../templates/common/hdviewpoint_detail.html | 3 +- 3 files changed, 11 insertions(+), 362 deletions(-) diff --git a/geotrek/common/static/common/js/annotations.js b/geotrek/common/static/common/js/annotations.js index 90d9fd52c3..1c9183e54a 100644 --- a/geotrek/common/static/common/js/annotations.js +++ b/geotrek/common/static/common/js/annotations.js @@ -34,7 +34,7 @@ function setQuery(params) { var query = getQuery(); $('#showLabels').prop('checked', query.labels !== 'false'); -if (query.lastannotation && query.clickmode !== 'brush') { +if (query.lastannotation) { $('.annotationtype button').removeClass('lastused'); $('.annotationtype button#' + query.lastannotation).addClass('lastused'); } @@ -58,10 +58,9 @@ function initAnnotations(map) { renderer: query.renderer ? (query.renderer === 'html' ? null : query.renderer) : undefined, annotations: query.renderer ? undefined : geo.listAnnotations(), showLabels: query.labels !== 'false', - clickToEdit: !query.clickmode || query.clickmode === 'edit' + clickToEdit: true }); - layer.geoOn(geo.event.mouseclick, mouseClickToStart); layer.geoOn(geo.event.annotation.mode, handleModeChange); layer.geoOn(geo.event.annotation.add, handleAnnotationChange); @@ -69,12 +68,10 @@ function initAnnotations(map) { layer.geoOn(geo.event.annotation.remove, handleAnnotationChange); layer.geoOn(geo.event.annotation.state, handleAnnotationChange); - let brushLayer; - map.draw(); if (query.lastused || query.active) { - if (query.active && query.clickmode !== 'brush') { + if (query.active) { layer.mode(query.active); } else { $('.annotationtype button').removeClass('lastused active'); @@ -86,10 +83,6 @@ function initAnnotations(map) { layer.geojson(initialGeoJSON, true); } - // if (query.clickmode === 'brush') { - // setBrushMode(); - // } - annotationDebug.map = map; annotationDebug.layer = layer; annotationDebug.query = query; @@ -100,7 +93,7 @@ function initAnnotations(map) { * @param {geo.event} evt geojs event. */ function mouseClickToStart(evt) { - if (evt.handled || query.clickmode !== 'add') { + if (evt.handled) { return; } if (evt.buttonsDown.left) { @@ -114,94 +107,6 @@ function initAnnotations(map) { } } - /** - * Handle a click or drag with a brush. - * - * @param {object} evt The event with the activity. - * */ - let lastState; - function brushAction(evt) { - let source; - if (evt.event === geo.event.annotation.cursor_action) { - if (evt.operation && evt.operation !== 'union' && evt.operation !== 'difference') { - return; - } - - - if (lastState && lastState.stateId && lastState.stateId === evt.evt.state.stateId) { - const size = parseInt($('#brushsize').val()); - source = brushLayer.toPolygonList(); - const bbox1 = brushLayer.annotations()[0]._coordinates(); - const bbox2 = lastState.bbox; - if (bbox1[0].x !== bbox2[0].x || bbox1[0].y !== bbox2[0].y) { - const order = (bbox1[0].x - bbox2[0].x) * (bbox1[0].y - bbox2[0].y) < 0 ? 0 : 1; - source.push([[ - [bbox1[order].x, bbox1[order].y], - [bbox1[order + 2].x, bbox1[order + 2].y], - [bbox2[order + 2].x, bbox2[order + 2].y], - [bbox2[order].x, bbox2[order].y] - ]]); - } - } - lastState = evt.evt.state; - lastState.bbox = brushLayer.annotations()[0]._coordinates(); - } else { - lastState = null; - } - geo.util.polyops[evt.operation || 'union'](layer, source || brushLayer, { correspond: {}, keepAnnotations: 'exact', style: layer }); - } - - /** - * If the brush mode ends but we are supposed to be in brush mode, reset it. - */ - var inUpdateBrushMode; - function updateBrushMode() { - if (query.clickmode !== 'brush') { - return; - } - if (!inUpdateBrushMode) { - inUpdateBrushMode = true; - window.setTimeout(() => { - setBrushMode(); - inUpdateBrushMode = false; - }, 1); - } - } - - /** - * If we are switching to brush mode, create an annotation that will be used - * and hook to annotation cursor events. If switching away, remove such an - * annotation. - */ - function setBrushMode(mode) { - if (brushLayer) { - brushLayer.mode(null); - brushLayer.removeAllAnnotations(); - } - if (query.clickmode !== 'brush') { - return; - } - layer.mode(null); - if (!brushLayer) { - brushLayer = map.createLayer('annotation', { - renderer: query.renderer ? (query.renderer === 'html' ? null : query.renderer) : undefined, - showLabels: false - }); - brushLayer.geoOn(geo.event.annotation.cursor_click, brushAction); - brushLayer.geoOn(geo.event.annotation.cursor_action, brushAction); - brushLayer.geoOn(geo.event.annotation.mode, updateBrushMode); - brushLayer.geoOn(geo.event.annotation.state, updateBrushMode); - } - annotationDebug.brushLayer = brushLayer; - const size = parseInt($('#brushsize').val()); - console.log(size); - const annot = geo.registries.annotations['square'].func({ layer: layer }); - brushLayer.addAnnotation(annot); - annot._coordinates([{ x: 0, y: 0 }, { x: size, y: 0 }, { x: size, y: size }, { y: size, x: 0 }]); - brushLayer.mode(brushLayer.modes.cursor, annot); - map.draw(); - } - /** * Handle changes to our controls. * @@ -220,31 +125,16 @@ function initAnnotations(map) { if (!param || value === query[param]) { return; } - switch (param) { - case 'labels': - layer.options('showLabels', '' + value !== 'false'); - layer.draw(); - break; - case 'clickmode': - layer.options('clickToEdit', value === 'edit'); - layer.draw(); - if (value === 'brush') { - $('.annotationtype button').removeClass('lastused active'); - query.lastused = query.active ? query.active : query.lastused; - query.active = undefined; - } - break; + if (param == 'labels') { + layer.options('showLabels', '' + value !== 'false'); + layer.draw(); } query[param] = value; if (value === '' || (ctl.attr('placeholder') && value === ctl.attr('placeholder'))) { delete query[param]; } - setQuery(query); - if (['clickmode'].indexOf(param) >= 0) { - setBrushMode(); - } } /** @@ -283,13 +173,6 @@ function initAnnotations(map) { */ function select_button(ctl) { ctl = $(ctl); - if (query.clickmode === 'brush') { - query.clickmode = 'edit'; - layer.options('clickToEdit', true); - $('#clickmode').val(query.clickmode); - setQuery(query); - setBrushMode(); - } var wasactive = ctl.hasClass('active'), id = ctl.attr('id'); fromButtonSelect = true; @@ -303,8 +186,6 @@ function initAnnotations(map) { * @param {geo.event} evt a geojs mode change event. */ function handleModeChange(evt) { - - var mode = layer.mode(); $('.annotationtype button').removeClass('active'); if (mode) { @@ -317,7 +198,7 @@ function initAnnotations(map) { query.lastused = query.active ? undefined : $('.annotationtype button.lastused').attr('id'); setQuery(query); - if (!mode && !fromButtonSelect && query.clickmode !== 'brush') { + if (!mode && !fromButtonSelect) { layer.mode($('.annotationtype button.lastused').attr('id')); } } @@ -339,19 +220,14 @@ function initAnnotations(map) { return; } var id = entry.attr('annotation-id'); - - if ($.inArray(id, ids) < 0) { entry.remove(); return; } present.push(id); - - entry.find('.entry-name').text(layer.annotationById(id).name()); }); - $.each(ids, function (idx, id) { if ($.inArray(id, present) >= 0) { return; @@ -368,8 +244,6 @@ function initAnnotations(map) { $('#annotationheader').css( 'display', $('#annotationlist .entry').length <= 1 ? 'none' : 'block'); if (!fromGeojsonUpdate) { - - var geojson = layer.geojson(); $('#geojson').val(geojson ? JSON.stringify(geojson, undefined, 2) : ''); if (query.save) { @@ -395,9 +269,6 @@ function initAnnotations(map) { layer.mode(layer.modes.edit, annotation); layer.draw(); break; - case 'edit': - show_edit_dialog(id); - break; case 'remove': layer.removeAnnotation(annotation); break; @@ -411,74 +282,4 @@ function initAnnotations(map) { break; } } - - /** - * Show the edit dialog for a particular annotation. - * - * @param {number} id the annotation id to edit. - */ - function show_edit_dialog(id) { - var annotation = layer.annotationById(id), - type = annotation.type(), - typeMatch = new RegExp('(^| )(' + type + '|all)( |$)'), - opt = annotation.options(), - dlg = $('#editdialog'); - - $('#edit-validation-error', dlg).text(''); - dlg.attr('annotation-id', id); - dlg.attr('annotation-type', type); - $('[option="name"]', dlg).val(annotation.name()); - $('[option="label"]', dlg).val(annotation.label(undefined, true)); - $('[option="description"]', dlg).val(annotation.description()); - - - $('.form-group[annotation-types]').each(function () { - var ctl = $(this), - key = $('[option]', ctl).attr('option'), - format = $('[option]', ctl).attr('format'), - value; - if (!ctl.attr('annotation-types').match(typeMatch)) { - - - ctl.hide(); - return; - } - ctl.show(); - switch ($('[option]', ctl).attr('optiontype')) { - case 'option': - value = opt[key]; - break; - case 'label': - value = (opt.labelStyle || {})[key]; - break; - default: - value = opt.style[key]; - break; - } - switch (format) { - case 'angle': - if (value !== undefined && value !== null && value !== '') { - value = '' + +(+value * 180.0 / Math.PI).toFixed(4) + ' deg'; - } - break; - case 'color': - - - value = geo.util.convertColorToHex(value || { r: 0, g: 0, b: 0 }, 'needed'); - break; - case 'coordinate2': - if (value !== undefined && value !== null && value !== '') { - value = '' + value.x + ', ' + value.y; - } - } - if ((value === undefined || value === '' || value === null) && $('[option]', ctl).is('select')) { - value = $('[option] option', ctl).eq(0).val(); - } - $('[option]', ctl).val(value === undefined ? '' : '' + value); - }); - dlg.one('shown.bs.modal', function () { - $('[option="name"]', dlg).focus(); - }); - dlg.modal(); - } } diff --git a/geotrek/common/templates/common/annotations_widget.html b/geotrek/common/templates/common/annotations_widget.html index 3d712151e7..e0ef38ceef 100644 --- a/geotrek/common/templates/common/annotations_widget.html +++ b/geotrek/common/templates/common/annotations_widget.html @@ -4,36 +4,6 @@
Add
- {% comment %}
-
-
-
Left-click points in the polygon. Double click, right click, or click the starting point to close the polygon.
-
Left click-and-drag or left click opposite corners to draw a rectangle.
-
Left click-and-drag or left click opposite corners to draw a square.
-
Left click-and-drag or left click opposite corners to draw an ellipse.
-
Left click-and-drag or left click opposite corners to draw a circle.
-
Left click to create a point.
-
Left-click points in the line. Double click, right click, or click the starting point to end the line.
-
-
{% endcomment %} - {% comment %}
- - -
{% endcomment %} - {% comment %}
- - - -
-
{% endcomment %}
Created Annotations
@@ -41,133 +11,10 @@
-
Sample
+
Sample✎
- {% comment %} {% endcomment %} \ No newline at end of file diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 12317fbeb9..087a650390 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -103,7 +103,7 @@

{% trans "Image" %}

}); viewer.createLayer('osm', params.layer); initAnnotations(viewer); - $(".loader-wrapper").remove() + // Change default interactor options const interactorOpts = viewer.interactor().options(); interactorOpts.zoomAnimation = { @@ -122,6 +122,7 @@

{% trans "Image" %}

top: 40 } }); + $(".loader-wrapper").remove() }); }); From 7acee209007179a3d31444ee08235de7f46e4ab7 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 23 Nov 2022 10:49:56 +0100 Subject: [PATCH 024/103] Align widget edit pictograms --- geotrek/common/templates/common/annotations_widget.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geotrek/common/templates/common/annotations_widget.html b/geotrek/common/templates/common/annotations_widget.html index e0ef38ceef..a20c0c93e3 100644 --- a/geotrek/common/templates/common/annotations_widget.html +++ b/geotrek/common/templates/common/annotations_widget.html @@ -11,7 +11,7 @@
-
Sample✎
+
Sample✎
From b93bfe1efc8c95259da46b6d77aa8e7c2f1e3e4d Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 23 Nov 2022 11:55:34 +0100 Subject: [PATCH 025/103] Displayed stored annotations on HD View Point viewer --- geotrek/common/static/common/js/annotations.js | 2 +- geotrek/common/templates/common/hdviewpoint_detail.html | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/geotrek/common/static/common/js/annotations.js b/geotrek/common/static/common/js/annotations.js index 1c9183e54a..4e9acdbaaa 100644 --- a/geotrek/common/static/common/js/annotations.js +++ b/geotrek/common/static/common/js/annotations.js @@ -39,7 +39,7 @@ if (query.lastannotation) { $('.annotationtype button#' + query.lastannotation).addClass('lastused'); } -function initAnnotations(map) { +function initAnnotationsWidget(map) { var annotationDebug = {}; diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 087a650390..26c1bc667a 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -78,6 +78,7 @@

{% trans "Attributes" %}

{% trans "Image" %}

{% url 'common:hdviewpoint-drf-detail' object.pk as base_tile_url %} + {{object.annotations|json_script:"geojson_annotations"}}
{% include "common/annotations_widget.html" %} @@ -102,7 +103,7 @@

{% trans "Image" %}

max: 12, }); viewer.createLayer('osm', params.layer); - initAnnotations(viewer); + initAnnotationsWidget(viewer); // Change default interactor options const interactorOpts = viewer.interactor().options(); @@ -122,7 +123,9 @@

{% trans "Image" %}

top: 40 } }); - $(".loader-wrapper").remove() + layer = viewer.createLayer('annotation'); + layer.geojson($('#geojson_annotations').text()); + $(".loader-wrapper").remove(); }); }); From 9fddf214d0b188f341b3c48034e0d24fb91a63e8 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 23 Nov 2022 15:38:07 +0100 Subject: [PATCH 026/103] Codestyle --- geotrek/api/v2/views/common.py | 2 +- geotrek/common/models.py | 6 +----- geotrek/common/serializers.py | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/geotrek/api/v2/views/common.py b/geotrek/api/v2/views/common.py index b5190e1428..809dfb8711 100644 --- a/geotrek/api/v2/views/common.py +++ b/geotrek/api/v2/views/common.py @@ -111,6 +111,6 @@ class FileTypeViewSet(api_viewsets.GeotrekViewSet): class HDViewPointViewSet(api_viewsets.GeotrekViewSet): serializer_class = api_serializers.HDViewPointSerializer - queryset = common_models.HDViewPoint.objects.all() # TODO .select_related('structure') + queryset = common_models.HDViewPoint.objects.all() # TODO .select_related('structure') filter_backends = api_viewsets.GeotrekViewSet.filter_backends + (api_filters.TrekAndSitRelatedPublishedNotDeletedByPortalFilter,) queryset = common_models.FileType.objects.all() diff --git a/geotrek/common/models.py b/geotrek/common/models.py index fb946f134c..e51c2df9df 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -1,7 +1,6 @@ import os import uuid -from PIL import Image from colorfield.fields import ColorField from django.conf import settings from django.contrib import auth @@ -354,9 +353,6 @@ def get_update_url(self): def get_delete_url(self): return reverse('common:hdviewpoint_delete', args=[self.pk]) - def get_permission_codename(self, *args): - return - @classmethod def get_content_type_id(cls): try: @@ -373,7 +369,7 @@ def get_permission_codename(cls, entity_kind): 'ENTITY_DELETE': 'delete', 'ENTITY_DETAIL': 'read', 'ENTITY_LAYER': 'read', - #ENTITY_LIST: 'read', # TODO + # ENTITY_LIST: 'read', # TODO 'ENTITY_DATATABLE_LIST': 'read', 'ENTITY_MARKUP': 'read', } diff --git a/geotrek/common/serializers.py b/geotrek/common/serializers.py index c24fc00eb4..e55a6cda7f 100644 --- a/geotrek/common/serializers.py +++ b/geotrek/common/serializers.py @@ -19,7 +19,7 @@ def get_field(self, model_field): if model_field.null: kwargs['allow_none'] = True kwargs['max_length'] = getattr(model_field, 'max_length') - return rest_fields.CharField(**kwargs) + return rest_serializers.CharField(**kwargs) return super().get_field(model_field) @@ -95,7 +95,7 @@ class Meta: class HDViewPointAPISerializer(TranslatedModelSerializer): - #picture TODO : link to tileserver + # picture TODO : link to tileserver class Meta: model = HDViewPoint From 31b1e3bceed1c1962c2406fff00e2f1702000cc5 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 23 Nov 2022 15:41:28 +0100 Subject: [PATCH 027/103] Update APIv2 trek list test with view points --- geotrek/api/tests/test_v2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geotrek/api/tests/test_v2.py b/geotrek/api/tests/test_v2.py index 544a37e7bc..c8942b4dff 100644 --- a/geotrek/api/tests/test_v2.py +++ b/geotrek/api/tests/test_v2.py @@ -68,7 +68,7 @@ 'next', 'parents', 'parking_location', 'pdf', 'points_reference', 'portal', 'practice', 'previous', 'public_transport', 'provider', 'published', 'ratings', 'ratings_description', 'reservation_system', 'reservation_id', 'route', 'second_external_id', 'source', 'structure', - 'themes', 'update_datetime', 'url', 'uuid', 'web_links' + 'themes', 'update_datetime', 'url', 'uuid', 'view_points', 'web_links' ]) PATH_PROPERTIES_GEOJSON_STRUCTURE = sorted(['comments', 'length_2d', 'length_3d', 'name', 'provider', 'url', 'uuid']) From 97e4a0cd8a7192aa742455c8630d7da3cfaf012c Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 23 Nov 2022 15:54:19 +0100 Subject: [PATCH 028/103] Use settings SRID in migration --- geotrek/common/migrations/0028_hdviewpoint.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/geotrek/common/migrations/0028_hdviewpoint.py b/geotrek/common/migrations/0028_hdviewpoint.py index dada2b9d94..273e6e385e 100644 --- a/geotrek/common/migrations/0028_hdviewpoint.py +++ b/geotrek/common/migrations/0028_hdviewpoint.py @@ -1,6 +1,7 @@ # Generated by Django 3.2.15 on 2022-10-20 15:07 import django.contrib.gis.db.models.fields +from django.conf import settings from django.db import migrations, models import django.db.models.deletion import uuid @@ -21,7 +22,7 @@ class Migration(migrations.Migration): ('date_insert', models.DateTimeField(auto_now_add=True, verbose_name='Insertion date')), ('date_update', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Update date')), ('picture', models.FileField(upload_to='', verbose_name='Picture')), - ('geom', django.contrib.gis.db.models.fields.PointField(srid=2154, verbose_name='Location')), + ('geom', django.contrib.gis.db.models.fields.PointField(srid=settings.SRID, verbose_name='Location')), ('object_id', models.PositiveIntegerField()), ('annotations', models.JSONField(blank=True, null=True, verbose_name='Annotations')), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), From 7d58d68de5901002edd4975a44ef5075f39be674 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 24 Nov 2022 11:09:14 +0100 Subject: [PATCH 029/103] Add test for HDViewPoint creation --- geotrek/common/models.py | 3 +- .../templates/common/annotations_widget.html | 2 +- geotrek/common/tests/test_views.py | 45 ++++++++++++++++++- geotrek/common/views.py | 16 +++++++ 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/geotrek/common/models.py b/geotrek/common/models.py index e51c2df9df..3c5759876d 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -320,7 +320,8 @@ def full_url(self): def get_absolute_url(self): return self.full_url - def get_add_url(self): + @classmethod + def get_add_url(cls): return reverse('common:hdviewpoint_add') @classmethod diff --git a/geotrek/common/templates/common/annotations_widget.html b/geotrek/common/templates/common/annotations_widget.html index a20c0c93e3..d642d34be9 100644 --- a/geotrek/common/templates/common/annotations_widget.html +++ b/geotrek/common/templates/common/annotations_widget.html @@ -11,7 +11,7 @@
-
Sample✎
+
Sample
diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 29b43247b5..21d52df4c4 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -7,6 +7,8 @@ from django.conf import settings from django.contrib.auth.models import User +from django.contrib.contenttypes.models import ContentType +from django.contrib.gis.geos import Point from django.core.files.uploadedfile import SimpleUploadedFile from django.test import TestCase from django.test.utils import override_settings @@ -15,7 +17,7 @@ from mapentity.views.generic import MapEntityList from geotrek.common.mixins.views import CustomColumnsMixin -from geotrek.common.models import FileType +from geotrek.common.models import FileType, HDViewPoint from geotrek.common.parsers import Parser from geotrek.common.tasks import launch_sync_rando, import_datas from geotrek.common.tests.factories import TargetPortalFactory @@ -389,3 +391,44 @@ def test_launch_sync_rando_no_rando_root(self, mocked_stdout, command): def tearDown(self): if os.path.exists(os.path.join(settings.TMP_DIR, 'sync_rando')): shutil.rmtree(os.path.join(settings.TMP_DIR, 'sync_rando')) + + +class HDViewPointViewTest(TestCase): + @classmethod + def setUpTestData(cls): + cls.su = SuperUserFactory.create() + cls.trek = TrekFactory() + + def setUp(self): + self.client.force_login(user=self.su) + + def test_creation_view(self): + ContentType.objects.clear_cache() + response = self.client.get('%s?object_id=%s&content_type=%s' % (HDViewPoint.get_add_url(), + self.trek.pk, + ContentType.objects.get_for_model(Trek).pk + ) + ) + self.assertEqual(response.status_code, 200) + img = SimpleUploadedFile("an_uploaded_image.png", b"file_content", content_type="image/x-png") + data = { + 'picture': img, + 'title': "Un titre", + 'author': "Someone", + 'legend': "Something", + 'geom': "SRID=2154;POINT(0 0)" + } + response = self.client.post('%s?object_id=%s&content_type=%s' % (HDViewPoint.get_add_url(), + self.trek.pk, + ContentType.objects.get_for_model(Trek).pk + ), + data) + vp = HDViewPoint.objects.first() + self.assertEqual(response.status_code, 302) + self.assertEqual(self.trek, vp.content_object) + self.assertIn("an_uploaded_image", vp.picture.name) + self.assertEqual(vp.title, "Un titre") + self.assertEqual(vp.author, "Someone") + self.assertEqual(vp.legend, "Something") + self.assertEqual(vp.geom, Point((0, 0), srid=2154)) + # TODO assert annotations diff --git a/geotrek/common/views.py b/geotrek/common/views.py index 4e54944784..05be1183ac 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -345,6 +345,10 @@ class HDViewPointDetail(CompletenessMixin, mapentity_views.MapEntityDetail): model = HDViewPoint queryset = HDViewPoint.objects.all().select_related('content_type', 'license') + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super().dispatch(*args, **kwargs) + def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) context['can_edit'] = self.get_object().same_structure(self.request.user) @@ -355,6 +359,10 @@ class HDViewPointCreate(mapentity_views.MapEntityCreate): model = HDViewPoint form_class = HDViewPointForm + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super().dispatch(*args, **kwargs) + def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs['content_type'] = self.request.GET.get('content_type') @@ -366,10 +374,18 @@ class HDViewPointUpdate(mapentity_views.MapEntityUpdate): queryset = HDViewPoint.objects.all() form_class = HDViewPointForm + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super().dispatch(*args, **kwargs) + class HDViewPointDelete(mapentity_views.MapEntityDelete): model = HDViewPoint + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super().dispatch(*args, **kwargs) + class TiledHDViewPointViewSet(mixins.ListModelMixin, viewsets.GenericViewSet, LargeImageFileDetailMixin): queryset = HDViewPoint.objects.all() From cbf420794a4d53aa1e22ec7d5091188b9c9b76e3 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 24 Nov 2022 16:24:55 +0100 Subject: [PATCH 030/103] Add tests for APIv2 HDViewPoint --- geotrek/api/tests/test_v2.py | 42 +++++++++++++++++++++++++ geotrek/api/v2/views/common.py | 13 ++++++-- geotrek/common/tests/factories.py | 52 +++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+), 3 deletions(-) diff --git a/geotrek/api/tests/test_v2.py b/geotrek/api/tests/test_v2.py index c8942b4dff..ce24e868d1 100644 --- a/geotrek/api/tests/test_v2.py +++ b/geotrek/api/tests/test_v2.py @@ -1,8 +1,10 @@ import datetime +import json from unittest import skipIf from dateutil.relativedelta import relativedelta from django.conf import settings +from django.contrib.contenttypes.models import ContentType from django.contrib.gis.geos import (LineString, MultiLineString, MultiPoint, Point, Polygon) from django.contrib.gis.geos.collections import GeometryCollection @@ -252,6 +254,11 @@ 'id', 'label', 'structure' ]) +HDVIEWPOINT_DETAIL_JSON_STRUCTURE = sorted([ + 'id', 'annotations', 'author', 'create_datetime', 'geometry', 'legend', + 'license', 'picture_tiles_url', 'site', 'title', 'trek', 'update_datetime', 'uuid' +]) + class BaseApiTest(TestCase): """ Base TestCase for all API profiles """ @@ -428,6 +435,10 @@ def setUpTestData(cls): cls.site2.themes.add(cls.theme3) cls.label_3 = common_factory.LabelFactory() cls.site2.labels.add(cls.label_3) + cls.hdviewpoint_trek = common_factory.HDViewPointFactory( + content_type=ContentType.objects.get_for_model(trek_models.Trek), + object_id=cls.treks[0].pk + ) def check_number_elems_response(self, response, model): json_response = response.json() @@ -757,6 +768,12 @@ def get_sector_list(self, params=None): def get_sector_detail(self, id_sector, params=None): return self.client.get(reverse('apiv2:outdoor-sector-detail', args=(id_sector,)), params) + def get_hdviewpoint_list(self, params=None): + return self.client.get(reverse('apiv2:hdviewpoint-list'), params) + + def get_hdviewpoint_detail(self, id_hdviewpoint, params=None): + return self.client.get(reverse('apiv2:hdviewpoint-detail', args=(id_hdviewpoint,)), params) + class APIAccessAnonymousTestCase(BaseApiTest): """ TestCase for anonymous API profile """ @@ -1309,6 +1326,18 @@ def test_sector_list(self): outdoor_models.Sector ) + def test_hdviewpoint_detail(self): + self.check_structure_response( + self.get_hdviewpoint_detail(self.hdviewpoint_trek.pk), + HDVIEWPOINT_DETAIL_JSON_STRUCTURE + ) + + def test_hdviewpoint_list(self): + self.check_number_elems_response( + self.get_hdviewpoint_list(), + common_models.HDViewPoint + ) + def test_route_detail(self): self.check_structure_response( self.get_route_detail(self.route.pk), @@ -2192,6 +2221,19 @@ def test_sensitivearea_distance_list(self): }) self.assertEqual(response.status_code, 404) + def test_hdviewpoint_detail_content(self): + response = self.get_hdviewpoint_detail(self.hdviewpoint_trek.pk) + self.assertEqual(response.status_code, 200) + json_response = response.json() + self.assertEqual( + json_response.get('picture_tiles_url'), + f"http://testserver/api/hdviewpoint/drf/hdviewpoints/{self.hdviewpoint_trek.pk}/tiles/z/x/y.png" + ) + json.dumps(json_response.get('annotations')) + self.assertIsNone(json_response.get('site')) + self.assertEquals(json_response.get('trek').get('uuid'), str(self.treks[0].uuid)) + self.assertEquals(json_response.get('trek').get('id'), self.treks[0].id) + class APIAccessAdministratorTestCase(BaseApiTest): """ TestCase for administrator API profile """ diff --git a/geotrek/api/v2/views/common.py b/geotrek/api/v2/views/common.py index 809dfb8711..0c95f1a16a 100644 --- a/geotrek/api/v2/views/common.py +++ b/geotrek/api/v2/views/common.py @@ -1,7 +1,10 @@ from hashlib import md5 from django.conf import settings +from django.contrib.gis.db.models.functions import Transform +from django.db.models import F from django.shortcuts import get_object_or_404 +from django.utils.translation import activate from rest_framework.response import Response @@ -106,11 +109,15 @@ class OrganismViewSet(api_viewsets.GeotrekViewSet): class FileTypeViewSet(api_viewsets.GeotrekViewSet): serializer_class = api_serializers.FileTypeSerializer - queryset = common_models.FileType.objects.select_related('structure') + queryset = common_models.FileType.objects.all() class HDViewPointViewSet(api_viewsets.GeotrekViewSet): serializer_class = api_serializers.HDViewPointSerializer - queryset = common_models.HDViewPoint.objects.all() # TODO .select_related('structure') filter_backends = api_viewsets.GeotrekViewSet.filter_backends + (api_filters.TrekAndSitRelatedPublishedNotDeletedByPortalFilter,) - queryset = common_models.FileType.objects.all() + + def get_queryset(self): + activate(self.request.GET.get('language')) + return common_models.HDViewPoint.objects \ + .annotate(geom_transformed=Transform(F('geom'), settings.API_SRID)) \ + .order_by('title') # Required for reliable pagination diff --git a/geotrek/common/tests/factories.py b/geotrek/common/tests/factories.py index 70b6ec66fc..f286ae45d8 100644 --- a/geotrek/common/tests/factories.py +++ b/geotrek/common/tests/factories.py @@ -13,6 +13,7 @@ from geotrek.common.management.commands.sync_rando import Command +from django.core.files.uploadedfile import SimpleUploadedFile from django.conf import settings from django.test.client import RequestFactory @@ -141,3 +142,54 @@ class Meta: creator = factory.SubFactory(UserFactory) title = factory.Sequence("Title {0}".format) legend = factory.Sequence("Legend {0}".format) + + +class HDViewPointFactory(factory.django.DjangoModelFactory): + class Meta: + model = models.HDViewPoint + + picture = SimpleUploadedFile("an_uploaded_image.png", b"file_content", content_type="image/x-png") + title = "A title" + author = "An author" + legend = "Something" + geom = "SRID=2154;POINT(0 0)" + annotations = { + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7997.087502861313, + 6997.090981210413 + ], + [ + 7997.087502861313, + 6456.7472299480705 + ], + [ + 8631.090837675794, + 6456.7472299480705 + ], + [ + 8631.090837675794, + 6997.090981210413 + ], + [ + 7997.087502861313, + 6997.090981210413 + ] + ] + ] + }, + "properties": { + "annotationType": "ellipse", + "name": "Ellipse 1", + "annotationId": 1 + } + } + ] + } From 011ccaaaba9858927bda306c4c906ca36938a418 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 28 Nov 2022 11:11:32 +0100 Subject: [PATCH 031/103] Add tests for APIv2 HDViewPoint update and delete --- geotrek/common/tests/test_views.py | 35 ++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 21d52df4c4..365c109b5f 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -20,7 +20,7 @@ from geotrek.common.models import FileType, HDViewPoint from geotrek.common.parsers import Parser from geotrek.common.tasks import launch_sync_rando, import_datas -from geotrek.common.tests.factories import TargetPortalFactory +from geotrek.common.tests.factories import LicenseFactory, TargetPortalFactory from geotrek.core.models import Path from geotrek.trekking.models import Trek from geotrek.trekking.tests.factories import TrekFactory @@ -398,12 +398,14 @@ class HDViewPointViewTest(TestCase): def setUpTestData(cls): cls.su = SuperUserFactory.create() cls.trek = TrekFactory() + cls.license = LicenseFactory() def setUp(self): self.client.force_login(user=self.su) - def test_creation_view(self): - ContentType.objects.clear_cache() + def test_crud_view(self): + # Test create view + ContentType.objects.clear_cache() # Sometimes cache can contain bad values response = self.client.get('%s?object_id=%s&content_type=%s' % (HDViewPoint.get_add_url(), self.trek.pk, ContentType.objects.get_for_model(Trek).pk @@ -416,7 +418,8 @@ def test_creation_view(self): 'title': "Un titre", 'author': "Someone", 'legend': "Something", - 'geom': "SRID=2154;POINT(0 0)" + 'geom': "SRID=2154;POINT(0 0)", + "license": self.license.pk } response = self.client.post('%s?object_id=%s&content_type=%s' % (HDViewPoint.get_add_url(), self.trek.pk, @@ -430,5 +433,29 @@ def test_creation_view(self): self.assertEqual(vp.title, "Un titre") self.assertEqual(vp.author, "Someone") self.assertEqual(vp.legend, "Something") + self.assertEqual(vp.license, self.license) self.assertEqual(vp.geom, Point((0, 0), srid=2154)) # TODO assert annotations + + # Test Update view + response = self.client.get(vp.get_update_url()) + self.assertEqual(response.status_code, 200) + img = SimpleUploadedFile("an_uploaded_image.png", b"file_content", content_type="image/x-png") + data = { + 'picture': img, + 'title': "Un titre", + 'author': "Someone", + 'legend': "Something else", + 'geom': "SRID=2154;POINT(0 0)" + } + response = self.client.post(vp.get_update_url(), data) + self.assertRedirects(response, f"/hdviewpoint/{vp.pk}", status_code=302, target_status_code=200, msg_prefix='', fetch_redirect_response=True) + vp = HDViewPoint.objects.first() + self.assertEqual(vp.legend, "Something else") + self.assertEqual(vp.license, None) + + # Test delete view + vp = HDViewPoint.objects.first() + response = self.client.post(vp.get_delete_url(), {}, follow=True) + self.assertEqual(response.status_code, 200) + self.assertEqual(HDViewPoint.objects.count(), 0) From 3761d830ef403a9b42c10e58277a2c3d54c5c720 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 29 Nov 2022 13:05:49 +0100 Subject: [PATCH 032/103] Handle permissions on HD Views --- .../0030_alter_hdviewpoint_options.py | 17 +++ geotrek/common/models.py | 19 +-- .../common/hdviewpoint_detail_fragment.html | 112 ++++++++++-------- geotrek/common/views.py | 2 +- 4 files changed, 92 insertions(+), 58 deletions(-) create mode 100644 geotrek/common/migrations/0030_alter_hdviewpoint_options.py diff --git a/geotrek/common/migrations/0030_alter_hdviewpoint_options.py b/geotrek/common/migrations/0030_alter_hdviewpoint_options.py new file mode 100644 index 0000000000..1efc6ee971 --- /dev/null +++ b/geotrek/common/migrations/0030_alter_hdviewpoint_options.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.15 on 2022-11-29 09:10 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0029_alter_hdviewpoint_picture'), + ] + + operations = [ + migrations.AlterModelOptions( + name='hdviewpoint', + options={'permissions': (('read_hdviewpoint', 'Can read hd view point'),), 'verbose_name': 'HD View', 'verbose_name_plural': 'HD Views'}, + ), + ] diff --git a/geotrek/common/models.py b/geotrek/common/models.py index 3c5759876d..6c1fe75c4a 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -298,6 +298,9 @@ class HDViewPoint(TimeStampedModelMixin): class Meta: verbose_name = _("HD View") verbose_name_plural = _("HD Views") + permissions = ( + ("read_hdviewpoint", "Can read hd view point"), + ) def __str__(self): return self.title @@ -364,15 +367,13 @@ def get_content_type_id(cls): @classmethod def get_permission_codename(cls, entity_kind): operations = { - 'ENTITY_CREATE': 'add', - 'ENTITY_UPDATE': 'change', - 'ENfTITY_UPDATE_GEOM': 'change_geom', - 'ENTITY_DELETE': 'delete', - 'ENTITY_DETAIL': 'read', - 'ENTITY_LAYER': 'read', - # ENTITY_LIST: 'read', # TODO - 'ENTITY_DATATABLE_LIST': 'read', - 'ENTITY_MARKUP': 'read', + 'update': 'change', + 'update_geom': 'change_geom', + 'detail': 'read', + 'layer': 'read', + 'list': 'read', + '-drf-list': 'read', + 'markup': 'read', } perm = operations.get(entity_kind, entity_kind) opts = cls._meta diff --git a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html index 2b14271795..9d9179a306 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html +++ b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html @@ -1,52 +1,68 @@ {% load i18n mapentity_tags %}

{% trans "HD Views" %}

-

- - {% trans "Add a new HD view" %} -

- - {% for viewpoint in object.view_points.all %} - {% if forloop.first %} - - - - - - - {% block extra_column_header %}{% endblock %} - {% block actions_attachment_header %} - - {% endblock actions_attachment_header %} - +{% if not user.profile.structure == object.structure and not perms.authent.can_bypass_structure %} +
+ {% trans "You are not allowed to modify attachments on this object, this object is not from the same structure." %} +
+{% else %} + {% if perms.common.read_hdviewpoint %} + {% if perms.common.add_hdviewpoint %} +

+ + {% trans "Add a new HD view" %} +

+ {% endif %} +
{% trans "File" %}{% trans "Title" %}{% trans "Legend" %}{% trans "Author" %}{% trans "Update date" %}{% trans "Actions" %}
+ {% for viewpoint in object.view_points.all %} + {% if forloop.first %} + + + + + + + {% block extra_column_header %}{% endblock %} + {% if user.profile.structure == object.structure or perms.authent.can_bypass_structure %} + {% block actions_attachment_header %} + + {% endblock actions_attachment_header %} + {% endif %} + + {% endif %} + + + + + + + + {% if user.profile.structure == object.structure or perms.authent.can_bypass_structure and perms.common.change_hdviewpoint or perms.common.delete_hdviewpoint%} + + {% endif %} + {% endif %} + + {% endfor %} +
{% trans "File" %}{% trans "Title" %}{% trans "Legend" %}{% trans "Author" %}{% trans "Update date" %}{% trans "Actions" %}
+ + {{ viewpoint.title|safe }} + + {{ viewpoint.title }}{{ viewpoint.legend }}

{{ viewpoint.author }}

{{ viewpoint.license.label }}

{{ viewpoint.date_update }} + {% if perms.common.change_hdviewpoint %} + +   + + {% trans "Update" %} + + {% endif %} + {% if perms.common.delete_hdviewpoint %} +   + + {% trans "Delete" %} + +
+ {% else %} + {% trans "You are not allowed to see HD views." %} {% endif %} - - - - - {{ viewpoint.title|safe }} - - - {{ viewpoint.title }} - {{ viewpoint.legend }} -

{{ viewpoint.author }}

{{ viewpoint.license.label }}

- {{ viewpoint.date_update }} - - {% comment %} TODO {% if perms|change_attachment %}{% endcomment %} - -   - - {% trans "Update" %} - - {% comment %} TODO {% endif %} {% endcomment %} - {% comment %} TODO {% if perms|delete_attachment %} {% endcomment %} -   - - {% trans "Delete" %} - - - {% comment %} {% endif %} {% endcomment %} - - {% endfor %} - +{% endif %} diff --git a/geotrek/common/views.py b/geotrek/common/views.py index 05be1183ac..e612ebe111 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -351,7 +351,7 @@ def dispatch(self, *args, **kwargs): def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) - context['can_edit'] = self.get_object().same_structure(self.request.user) + context['can_edit'] = self.get_object().content_object.same_structure(self.request.user) return context From 2fdab2d4fc845d0cdf7a2d2adfb69c980c060c7c Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 30 Nov 2022 10:43:23 +0100 Subject: [PATCH 033/103] Delete form for HD Views redirects to related object --- geotrek/common/views.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/geotrek/common/views.py b/geotrek/common/views.py index e612ebe111..608fdf7c26 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -386,6 +386,9 @@ class HDViewPointDelete(mapentity_views.MapEntityDelete): def dispatch(self, *args, **kwargs): return super().dispatch(*args, **kwargs) + def get_success_url(self): + return self.get_object().content_object.get_detail_url() + class TiledHDViewPointViewSet(mixins.ListModelMixin, viewsets.GenericViewSet, LargeImageFileDetailMixin): queryset = HDViewPoint.objects.all() From b9897ca04f91ef69de3914e295861653ee9d2810 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 1 Dec 2022 18:05:21 +0100 Subject: [PATCH 034/103] Handle permissions on HD Views tiles endpoint --- geotrek/common/models.py | 4 +- geotrek/common/permissions.py | 13 ++++++ geotrek/common/tests/factories.py | 4 +- geotrek/common/tests/test_views.py | 68 +++++++++++++++++++++++++----- geotrek/common/views.py | 3 +- 5 files changed, 76 insertions(+), 16 deletions(-) diff --git a/geotrek/common/models.py b/geotrek/common/models.py index 6c1fe75c4a..fce836ebea 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -12,6 +12,7 @@ from django.db.utils import OperationalError from django.template.defaultfilters import slugify from django.urls import reverse +from django.utils.http import urlencode from django.utils.translation import gettext_lazy as _ from paperclip.models import Attachment as BaseAttachment from paperclip.models import FileType as BaseFileType @@ -333,7 +334,8 @@ def get_list_url(cls): return reverse('common:hdviewpoint_add') def get_picture_tile_url(self, x, y, z): - return reverse("common:hdviewpoint-tile", kwargs={'pk': self.pk, 'x': x, 'y': y, 'z': z, 'fmt': 'png'}) + url = reverse("common:hdviewpoint-tile", kwargs={'pk': self.pk, 'x': x, 'y': y, 'z': z, 'fmt': 'png'}) + return f"{url}?{urlencode({'source': 'vips'})}" def get_generic_picture_tile_url(self): thumbnail_path = reverse("common:hdviewpoint-tile", kwargs={'pk': self.pk, 'x': 0, 'y': 0, 'z': 0, 'fmt': 'png'}) diff --git a/geotrek/common/permissions.py b/geotrek/common/permissions.py index 5fb80034fd..9af937be02 100644 --- a/geotrek/common/permissions.py +++ b/geotrek/common/permissions.py @@ -1,4 +1,5 @@ from django.core.exceptions import PermissionDenied +from mapentity.models import MapEntityRestPermissions class PublicOrReadPermMixin: @@ -11,3 +12,15 @@ def get_object(self, queryset=None): if not self.request.user.has_perm('%s.read_%s' % (obj._meta.app_label, obj._meta.model_name)): raise PermissionDenied return obj + + +class RelatedPublishedPermission(MapEntityRestPermissions): + + def has_object_permission(self, request, view, obj): + # This object is public if related object is published + # If unpublished, only logged in users can access it, if they have view rights + return super().has_permission(request, view) or obj.content_object.any_published + + def has_permission(self, request, view): + # Permissions are defined at object level here + return True diff --git a/geotrek/common/tests/factories.py b/geotrek/common/tests/factories.py index f286ae45d8..23b6c2b488 100644 --- a/geotrek/common/tests/factories.py +++ b/geotrek/common/tests/factories.py @@ -13,7 +13,6 @@ from geotrek.common.management.commands.sync_rando import Command -from django.core.files.uploadedfile import SimpleUploadedFile from django.conf import settings from django.test.client import RequestFactory @@ -147,8 +146,7 @@ class Meta: class HDViewPointFactory(factory.django.DjangoModelFactory): class Meta: model = models.HDViewPoint - - picture = SimpleUploadedFile("an_uploaded_image.png", b"file_content", content_type="image/x-png") + picture = get_dummy_uploaded_image() title = "A title" author = "An author" legend = "Something" diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 365c109b5f..54823e7011 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -6,13 +6,15 @@ from unittest import mock from django.conf import settings -from django.contrib.auth.models import User +from django.contrib.auth.models import User, Permission from django.contrib.contenttypes.models import ContentType from django.contrib.gis.geos import Point +from django.core.files import File from django.core.files.uploadedfile import SimpleUploadedFile from django.test import TestCase from django.test.utils import override_settings from django.urls import reverse +from geotrek.common.utils.testdata import get_dummy_uploaded_image from mapentity.tests.factories import UserFactory, SuperUserFactory from mapentity.views.generic import MapEntityList @@ -20,7 +22,7 @@ from geotrek.common.models import FileType, HDViewPoint from geotrek.common.parsers import Parser from geotrek.common.tasks import launch_sync_rando, import_datas -from geotrek.common.tests.factories import LicenseFactory, TargetPortalFactory +from geotrek.common.tests.factories import HDViewPointFactory, LicenseFactory, TargetPortalFactory from geotrek.core.models import Path from geotrek.trekking.models import Trek from geotrek.trekking.tests.factories import TrekFactory @@ -396,23 +398,34 @@ def tearDown(self): class HDViewPointViewTest(TestCase): @classmethod def setUpTestData(cls): - cls.su = SuperUserFactory.create() - cls.trek = TrekFactory() + # Create objects + cls.trek = TrekFactory(published=False) cls.license = LicenseFactory() - - def setUp(self): - self.client.force_login(user=self.su) + # Create user with proper permissions + cls.user_perm = UserFactory.create() + read_perm = Permission.objects.get(codename="read_hdviewpoint") + add_perm = Permission.objects.get(codename="add_hdviewpoint") + update_perm = Permission.objects.get(codename="change_hdviewpoint") + delete_perm = Permission.objects.get(codename="delete_hdviewpoint") + cls.user_perm.user_permissions.add(add_perm, read_perm, update_perm, delete_perm) + # Prepare access to test image + cls.directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data') + cls.files = [f for f in os.listdir(cls.directory)] def test_crud_view(self): - # Test create view + """ + Test CRUD rights and views for HD View Point object + """ + self.client.force_login(user=self.user_perm) ContentType.objects.clear_cache() # Sometimes cache can contain bad values + # Test create view response = self.client.get('%s?object_id=%s&content_type=%s' % (HDViewPoint.get_add_url(), self.trek.pk, ContentType.objects.get_for_model(Trek).pk ) ) self.assertEqual(response.status_code, 200) - img = SimpleUploadedFile("an_uploaded_image.png", b"file_content", content_type="image/x-png") + img = get_dummy_uploaded_image() data = { 'picture': img, 'title': "Un titre", @@ -429,7 +442,7 @@ def test_crud_view(self): vp = HDViewPoint.objects.first() self.assertEqual(response.status_code, 302) self.assertEqual(self.trek, vp.content_object) - self.assertIn("an_uploaded_image", vp.picture.name) + self.assertIn("dummy_img", vp.picture.name) self.assertEqual(vp.title, "Un titre") self.assertEqual(vp.author, "Someone") self.assertEqual(vp.legend, "Something") @@ -440,7 +453,7 @@ def test_crud_view(self): # Test Update view response = self.client.get(vp.get_update_url()) self.assertEqual(response.status_code, 200) - img = SimpleUploadedFile("an_uploaded_image.png", b"file_content", content_type="image/x-png") + img = get_dummy_uploaded_image() data = { 'picture': img, 'title': "Un titre", @@ -459,3 +472,36 @@ def test_crud_view(self): response = self.client.post(vp.get_delete_url(), {}, follow=True) self.assertEqual(response.status_code, 200) self.assertEqual(HDViewPoint.objects.count(), 0) + + def test_tiles_view(self): + """ + Test access rights for HD View Point tile endpoint + """ + # Create HD View point with a dummy image + self.path = os.path.join(self.directory, 'empty_image.jpg') + self.assertEqual(os.path.getsize(self.path), 18438) + viewpoint = HDViewPointFactory.create( + object_id=self.trek.pk, + content_type=ContentType.objects.get_for_model(Trek) + ) + with open(self.path, 'rb') as picto_file: + viewpoint.picture = File(picto_file, name="empty_image.jpg") + viewpoint.save() + + # Test unlogged user cannot access HD View Point tiles + tile_url = viewpoint.get_picture_tile_url(x=0, y=0, z=0) + response = self.client.get(tile_url) + self.assertEqual(response.status_code, 403) + + # Test unlogged user can access HD View Point tiles if related trek is published + self.trek.published = True + self.trek.save() + response = self.client.get(tile_url) + self.assertEqual(response.status_code, 200) + self.trek.published = False # Revert to previous state + self.trek.save() + + # Test logged in user can access HD View Point tiles + self.client.force_login(user=self.user_perm) + response = self.client.get(tile_url) + self.assertEqual(response.status_code, 200) diff --git a/geotrek/common/views.py b/geotrek/common/views.py index 608fdf7c26..816c4a035c 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -52,7 +52,7 @@ from .mixins.views import (BookletMixin, CompletenessMixin, DocumentPortalMixin, DocumentPublicMixin, MetaMixin) from .models import AccessibilityAttachment, HDViewPoint, TargetPortal, Theme -from .permissions import PublicOrReadPermMixin +from .permissions import PublicOrReadPermMixin, RelatedPublishedPermission from .serializers import (HDViewPointAPIGeoJSONSerializer, HDViewPointAPISerializer, ThemeSerializer) from .tasks import import_datas, import_datas_from_web, launch_sync_rando @@ -393,6 +393,7 @@ def get_success_url(self): class TiledHDViewPointViewSet(mixins.ListModelMixin, viewsets.GenericViewSet, LargeImageFileDetailMixin): queryset = HDViewPoint.objects.all() serializer_class = HDViewPointAPISerializer + permission_classes = [RelatedPublishedPermission] # for `django-large-image`: the name of the image FileField on your model FILE_FIELD_NAME = 'picture' From bcc508f75e0df3253e32717528014ae2cd0f2af3 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Fri, 2 Dec 2022 15:16:30 +0100 Subject: [PATCH 035/103] Update date_update on HD View Points related objects when modified --- geotrek/common/signals.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/geotrek/common/signals.py b/geotrek/common/signals.py index 8f1cf9bf37..6370a46bb7 100644 --- a/geotrek/common/signals.py +++ b/geotrek/common/signals.py @@ -2,13 +2,15 @@ from django.dispatch import receiver from django.utils.timezone import now -from geotrek.common.models import Attachment, AccessibilityAttachment +from geotrek.common.models import Attachment, AccessibilityAttachment, HDViewPoint @receiver(post_save, sender=Attachment) @receiver(post_save, sender=AccessibilityAttachment) +@receiver(post_save, sender=HDViewPoint) @receiver(post_delete, sender=Attachment) @receiver(post_delete, sender=AccessibilityAttachment) +@receiver(post_delete, sender=HDViewPoint) def update_content_object_date_update(sender, instance, *args, **kwargs): """ after each creation / edition / deletion, increment date_updated to avoid object cache """ content_object = instance.content_object From 6c76d0b12d80f97e5fd18cf7796b95a7cee316e2 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Fri, 2 Dec 2022 15:24:21 +0100 Subject: [PATCH 036/103] Add test for trek date_update changes on HD Views modification --- geotrek/common/tests/test_signals.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/geotrek/common/tests/test_signals.py b/geotrek/common/tests/test_signals.py index 11e348d053..31850b535b 100644 --- a/geotrek/common/tests/test_signals.py +++ b/geotrek/common/tests/test_signals.py @@ -1,7 +1,7 @@ from django.test import TestCase from freezegun import freeze_time -from geotrek.common.tests.factories import OrganismFactory, AttachmentFactory, AttachmentAccessibilityFactory +from geotrek.common.tests.factories import HDViewPointFactory, OrganismFactory, AttachmentFactory, AttachmentAccessibilityFactory class CommonSignalsTestCase(TestCase): @@ -63,3 +63,22 @@ def test_date_update_when_attachment_accessibility_deleted(self): self.object.refresh_from_db() # object date_update has been updated with current datetime self.assertEqual(self.object.date_update.isoformat(), "2022-07-04T15:00:00+00:00") + + def test_date_update_when_hdviewpoint_updated(self): + """ Object date_update updated when HD view point updated """ + # add attachment + hdviewpoint = HDViewPointFactory(content_object=self.object) + with freeze_time("2022-07-04T16:00:00+00:00"): + hdviewpoint.save() + self.object.refresh_from_db() + # object date_update has been updated with current datetime + self.assertEqual(self.object.date_update.isoformat(), "2022-07-04T16:00:00+00:00") + + def test_date_update_when_hdviewpoint_deleted(self): + """ Object date_update updated when HD view point deleted """ + hdviewpoint = HDViewPointFactory(content_object=self.object) + with freeze_time("2022-07-04T17:00:00+00:00"): + hdviewpoint.delete() + self.object.refresh_from_db() + # object date_update has been updated with current datetime + self.assertEqual(self.object.date_update.isoformat(), "2022-07-04T17:00:00+00:00") From a10acf970484a5ada002a1e8ee26c0dc1de1b899 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Fri, 2 Dec 2022 15:41:51 +0100 Subject: [PATCH 037/103] Add libvips to debian dependencies --- debian/control | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 01a0c4a404..4bb401eecb 100644 --- a/debian/control +++ b/debian/control @@ -33,5 +33,6 @@ Depends: redis-server, screamshotter (>= 2.0.9), screamshotter (<< 3.0.0), - convertit + convertit, + libvips Description: Manage and promote your tourist trails and activites From 5bd7beadd0f6b04ed9ed74891df9ae8ea274f4d5 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Fri, 2 Dec 2022 16:13:10 +0100 Subject: [PATCH 038/103] Add test image --- geotrek/common/tests/data/empty_image.jpg | Bin 0 -> 18438 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 geotrek/common/tests/data/empty_image.jpg diff --git a/geotrek/common/tests/data/empty_image.jpg b/geotrek/common/tests/data/empty_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4415a060ec053006923d542434d7c59a07a92df GIT binary patch literal 18438 zcmeHv2UJr__wPCBBm_e55JK-s=)L#en}{KV-V7ZCL=hEGL9rkz3W8!U2&gm>1sjT@ zC^l3;5DTD)Sl~^t+#cW(bvXOX?CCRS@BQ18vv7Z52qHPzIod%m zjDRG;AGGicyVEu!Is$?m9aSM51VLDcA4Wnjpg5N}j9$El0b1e*9Rq0PA3R7v(?DTF zaA$*y4roDeUkR@0wW!6s<$yi~u4f2P-tX@Aj;o_eF1@XuqEyaLm%TDem{1cp#hu=4JEOxdn;b1Om4hzW}eG zl(>wvl(?iMSzc3#Oi`DUlvLJNQK!;$baZ5t3{4H_CYsthbWR~K7Z(>dfm@VF6s5~b z%F_S0!$JqdhvT#f2~!{hAB^OK7rG!B&`vbG7`}G}JR^`OGzN>~!V>_)84?6W3W-1= z(P$JHR5%BuLnuBpzbwrXBjCxvQkDzS^UL<(ggL88d=-e+SxleI(hr}`uPV01~J1~5s^{RG07>ZY3Ui6S*r`y6s}#jzG(B7 z@~zvp@2J>WU9-Qo?!dwNL#IwRoM~)oK6|e7V%Me1-91;X-oDd+_ujz$2ZPU^zZf1F zeK|J%YHIrZhnbJFpXNSu`o-zz&+xrx|I#l$&@TiEg+yUF{eltcoR0IM(6TfPzojRZ zv0Q*c&<`mF+uuflE%?Yf>nT-G>*J*LkKe#p&8&&;Dy2TlL@S*{_cM)~`W`8wrES zL-Il9(ClaB>XrC^u7AehpEdCRr!5DWLwvhJh5OZ3c+=Q8edyvEbyCa4kph zpaVJr7_{hAs(}WTu0c2CwEcUh;*(rmf93qk@r#fD#hsjDoAz5hf61NflbOWQ@?s?? zrm~qV+cZ`}irml2lHyX6e_vN>GK&+n*w(o42rbae#Tom_&(VB-@pA?&GCDqKk(*?+Du zPD{Wr8rdW=Q#o}y+L%&6jAnRrxRIrmwxzZW)mlfFPSrD@(X6ZtY^`jl+BP&x9c!wM z?a#c93CSsp1Sace-e{1QMi0|rv6zM$I$_iZ4ILeQx<(j7FH9qxsvX7*4~vM12-E(V z-<=%|);1&Vzt;xNNE=ytIGR%Enp6sT@zEoWkrI)}jyI*aL?@(X{D}35j%RtNFgQa( z)6+9Fq|x+s4GpL|G`isr4nGz<8LU)JQHwe&g&fW_vI7M%z|x71XGF5JVv<;q6!Ndp zHnL8POJutyhO6eD`K4HYPjdx(I-HTh z_?LooeW*amrW)yJ|Gps5*yxDN|HKO306#XTkxL?z!P&sy8yo)P-C)It)B>c|-*f$I zig#3EdcuFm{gdZsUQ2dLdLld4o$VeL!(yiVP3}K){mkzLUYp4&>`ceMYxW-)zV8JG zkRy?u`J*mx*76@zTr_#{En>uAa)!f{!d#p^FqPk@b>yQ zV`KfF-Y@@SWAmq-@IToPeJV?b5y4<+gz4)WfOnmCgoXi?p`)RzqhlDs(A70$P=Afg zzs$2ekP3?iGFf@?O{Ma4yuQz^8kNS`|BL&KGn3!fB1hPOSN3nqlp~3Z967Hi@6@EE zxM&vpx3#;N_b(ZKi(K5;iGQEzxAet4)`>}(;FTSf;+~%H*H!(AV=6$ebOP!BJ6J4Y8=;4^?Al}`+y6(L9v6rYg7_OiDk1NfSZeFz)~h((;A&R`}d zS$cT5`~=beeE)cl;}3wKI~ts_{+#}AWB9@W3If1)55Scep3IB~bO)eqm`Usu;E&*V zJ8q??Bys3|Knt=#0|7n8p(DT3UpaKxB8>z+0X#ll*1-265BwM037~qMga6{=Qo-0Q2F?s{vl4v0!Ce_#lE6C?4JAM~-!WXJ)s0spN5 z9S7pWfV+wTrGV7%6jlZp6A1dHmy#{PEV9(ejtNXnbu!0<;w1k+6FBSldt={gEUrtK z9P?XT#u^ARuL0{v^0&BvAqYAQ*0<2!-{KUKz%w5NonOvOWv6{F55>8mAw0wjoP1)C zG$aQ`S_7g(dXO<>0og)MkUQi91wu<9CKLt6oeiZ!E1-O+5GsaBp{>wPs0ylq4njwP zL$C>Ifi6Iop=;1B=q~gS8iGck31|}f2z>$09V|?Q1z<5)23CO8U^;97o58lQ3+x34 z!pq=DH~~(DSHP>`Vt6yW6W#~c!zbah@CEn^+y_5^pTXnsH2fKXL~tVn5mE?6gcia8 zVTo`?_#i?Mk%;ApEJOifBVq@l8gT^Ch`4~bhPaCuLQEiLfaj2a6h_J-HIN2KYot3e z2pNH7BXf~O$Zg1Kz+cZQ|O`b&l&M*9g}aJRe>OZ;JQ9$Kdnv zJMhQwm++79?+F9~gMQuv%chz$JkZL5!f1prc@nV6os)!Ct{hA$}npAwQuEp-Q1vp&?yk54(o*(PNm3P37o}cH z3rkx_$4Hk;w@Hu72*{YpM9Y-Rw9C9A3z03!apWE3F7hOB<2uNu%I=fxmHk3dqWDr) zQI1m{%i-k=Reia4>QdvV`>79U{4^)pD%v^P zG+mX>q*v1WwTaqx+IiZ|+EY4eIxL+%I`?%2bX|4V>UQdW)6>^u>mAb@*O%8{roT&n zz(CNz!=S{V#}I93WteB!VmN1{XOv=e%IKZ3hH%Op(ev=ob6jO%jKGPvH zve`1Ty=Ft^vgQo)YV+q7au(qhbrvrzRV-sHk66C7qFS-7&RES_8(HUAci13p>}`r{ zdTse_eQkHzKCz?NMcN&m4VZ^qq2?x}3S4y`6VD zKX*}eVY{4jMYuY-ZgG9&rr?&~*5nSkJGyUif9#>;vE1XlC&tsmv(j_ai{`b$tJ_<^ zJJkD-_eUQqpG`gweU*JveLMYl{g(LE`_1~>_;23#tp6 z3APR18a%Q@cS+%rdm&0886j7eiZ6{@+8W9m$_PEZ486>M*`Z}$8Sac~#!Q%F*sici zrZsarb0XX#ygYoIWy;#jdKqCFu{mNa(ll~Qm!y_dm^8H9X!+LVlWb>pT{4^;lH8mk2o#0u zsmiHqQlF)nrB$YVO7}}Yoxzupka0azHFJID%PhOB+H6!dGrMzz?27yq&vGnt_T|F4 zVY!`oa(M-LBP;D!9?Zw*$L8NyMP0Rd)rZyotIrik6|5|HvBrMQ;Xe30yGd`;o>EL{Lg~FS^Rk1R z`8H>5ezC=MOJg~?yr}%c*3hk2w&`rE+K%6zx_xMe%Z}y>`HIqtuREi5-mSE%JibeE z*ZN(vyTfu9rrlID*=DxE|XFJaspF4A2^ZbDp*_O&yq1H`p z__l(!h4!rWnU186*B2r$yyy(=e0VY7Vt~8Nd?Pe+g{4NtRJI~wT#=1-+C4NYGfj5;>+v8H+*k)y;XkO@Xq4h^~r$A zktz1n!gR@dvG)f)=zQp$@tAq?G5+J1*`iNkpAOC$%yobE|NQbx`d94N9p6;Gott-_ zf3y(4u)x8B7j*$7_>YJH=Z2;aKoBtyf&_rRi0}BWUoLWRj@|$sK;MA3AwrPRC`+^{ zMhB~aBXg1QWP%d698r-+g;$Sc%4fmvCg33$AjA}o6=93!i>(pgD6vg)uT-t{VVMSU zlWYs+qTD6Yt9xn ztUb2w;QH#K-NoBW$~Kg2EZme|x}q$7^YSfm zscE74_1S@Qo#zj=Y;MhL3vIXQP`*I8@V4{T#Zz77mr^hLb?f(t_RL)wyxMYY_w~FR zj9#0Y%D1?0P4x}jZohM&zw~bQy~qLI`?e4C2UQ+QJmP(fcs%oD{OOaSJI{Kax4mc> zJ~C1>y6ffEu}$MeuL>ttzh3z!?`__@m6NNc)=U?@Fa5A%X5Yudv(3PoA;R|&)yQ|K zE9iHa1)MCG0e%S~nR^$ph35$g$w%h57Kj%t6gnh)MPx(_B`z&tBpC~4yRiq!xi>p9IVYto^*~x{`t6Ld%x~GG6$&}}xsG{(E2Hz%R;^lHQc%8T zXW^c;d)HO3uPLf6K2UOK!;y{0H=QayQ`Wrs{Fb)z&aIcWUDu=h`&(|bUT$k|Z|pdFVSi`k#nP_AOWBtbyTg0@uQ**byGFe(cSEQb z)BEY>_^rXdtGCbJIow})xA9p;8)ek%$re^MZY?v+olsxD0Ssl#3 z0Q>@R5_uUlf)T)~;JmmJ@fCz7?#DbtUVTy!Um^bqfoDPlVKtFJ(Oj`=@oN&Vr3lhm zG9KhO*$tE$xiLD62n(11rsl~Ld^h)i0ItO)+>YdPUFlaPv zGHNnzGHEt#GHWzHZE?!-gw-+Y!#4G{b$0vhs~z?^RykEUSGnwU-Q%{+eXU0d*z@Mz zWbb*O2fht{8~h^zOap}iUk6_cgiRY7^vAL49Q$kaV(i+oWWb$SiXGg9m%Q>4nv=W`KyvlxcctP%(^1=ga zo7Q!%zfyFg_(n<3h6@`THytkBTUNe#?Uu~)n61IvoVOeAP^}Q#iQPF<`Fz*S-RJil ztSaA|w=cHZuf}q}daZCBTsLvx-ocLgLx;8=&N~uw)c2VAan%z-C*hN?Pu)M=)o}96 zp2m`$fPkinVdI&9#qp3|zR}*>JJCtMpRN<=F0k9@{J0SIO6i*S=gI zyK%3#>*ncO)qR_9=igc0&%En%&wjw@zUBkDL9vIVM_gdXe|s|bbarUw+56|yFQ$g4 zMy5umUQUmF82|X{6ObtjZ&B~?lcXupY4UrO585;4A6;exKSj@FelGq}^|j&KwfW(N z1qk|%GjL>rs2&8>bU=_lxSYVXYb69JfJ*>^AP)-&^67vOPIC~#cRz%%sDhBd-sH%S z?}2l^5gd>Mf8dNFutL!g1{_w!0c(^1af1V>ybuZE2X?6tBm!(x2}lYYfTTe3kRqf4 zsX>|$719QFsv%?o&evH1Th$SA0oJNFJ-fMNhzz=qPGY$y*ZfYw19pfYG1 zR0-{cYN12W3Fr)T4(fm|0gJT{x(7Xio@P3$ms4#$I&#~I?>apAZuTq&*&*Mhr)8|Q+!gt;`hY`B8C zlDUew_Hmu%>f;*6!+0?~4ey8#!)N2S;Ew=%^a=hGfsdd{upulZWDqtJju0*bYxE1Z zFgKOknLC0zpL;iVGj~7tJ0gLoM6@P`60?chi4DYC#5X*69wis$yl%X4yhXhAyxqK`Bs575*r8#hRiu5SPSSI5+)|FuhA)C|Enhv~HNLm}Bz|pv zKmJVq-TWQ=!vZ(~4FOMqG=WNi3j(8p+=6t$0Kr_rTET0A(?ViGmO@cNr9#cX`osxS zg#(3G2_F{j7yc%qB;p~GC9+?nSLBnZoT#g4hG>mwujrhZyqLRKmROxwpV&8X6>(qj zeDR~=4lHDPc%uIR+=fAb(;6J2wJ9ENm?~p_o!S{6KW#0hI)^Nr*jQowZ7~M1`7~2~c7+)}+H!(5EGHEvXXsTnHYQTl1xriI0?TeIyp@Ypsns28Ve264-PX@+6l|hx zj@nGy>e*)7cG#ipoa{E)_1lZthuYWLPdLyV(j8hIQI1ZIWsdiqWSkZIZ zUw097S>jUb^2SxqHP^MOR^#@@UC(```&AD?kEI^<9`8NPJlA{nd&zjkcr|(> zyj{I3yhnWKKDj>Ed_{c2eNXz%`?>g4_`USk^KN z^}N!&4=V##w&u&_ugibC%4gNN)v~MCt)49KFX&jKyryi;=R#)TjkWq~tJe|NWvqL# z-hKV~BBi48Vz@Y=_)&>tN%IE94O=&&HYRU;vB`VW#Zv9k{bfRBg=L>MM{j<(#cfMR zxpsNoR`IPHw!zy{w~cRKy8X@$haIgI^ooN!rFWKB;w$qjXLlv+8rdDPyMK?%o~|mB zs)oH9du#Ve@7rEY0xBD_W<|}%{Ym>@)rQwTtqZK{Kj3!Y%0Zih?e#|WXAaR09XYIg zc>fWZBb7%*j&3=|d#w047U<>Bi4`a2PNtrmK9z84;&kNc;RZ&-<1;~L1{%E^Z#B6# zU1_#!?mTOLw&k1wurq1rkG80`)U{Gt_q2((ZENRm-`IigSaSiskaJOH?BHgy?V{zTK9F^>s>djZ*=xr_FlMYakKrF z`K|UoGhk<$-EO;McBif1yubaf#odm3miIabtOhRLx4D1mf!%|iLC3+X4_zMKc;x=* z)?=^7{ZD+K3_J~d`fw;@=;<@Yv*G6v&&OWGym&L5I6OU)GBP`wIr{Zw?if5)Fpe2t z|BCz7rU|}@^4B7-cfOH&v-hps+uC=^?+#CDPM)07nQEFgnr?k>@xJqe?T4Nj=b7G* zo*(bb`prK06#VJQ9Aoaq=ZMc^Ut+(!`I_`~`diAk+4;=*FAF&w{oz;mqXxjy0XP}} zM+e~gp#$&$Er9QLT7Wq40!RbY|GOTb4DmmmrF2hx9O10{lKkUNnFkPXOArrP> zJ*fMrG1MnC4lRaO0hqNDIv5>?&OvWP??s zauESeZOY}t6~|S;wVUe<*A1>wt_8d(&OuR?@z{Ag@#pA{k$5X^p z&(qB_%8TZeGly`w7Loz2VBjuB7NS8=2`S5%ie4c!%d=-3cd@uO9 z__g?b`Bwl$`YQjlfVhB_K&(KyK%2mrAitoAV5Hz?!B)X>At9g%Bna&k>Jgd|rU-io z=L#PYekg($F%*ds*)DQfW#wc&WpibZ$PQ9)6g>))QbuW~ypfZTbCS!DtCQ=ON66FUL*+Nhx5!T@ zh$%QIq$|`a^eZA2>52@+QpI+~w@T7Vu1YJEjwn4;CMX*z$0+YqzN$Q@qM{P0QlxTD z<&~JimPYD6_NwFI>)fWIKrwbjGbx2kumf6`FZSfa5(qg`W4Q%=)QbDicn z%{N+PEibJ#TFqJ$RB5Ugbq%$d`WpPW%ZIj()pBP> z1Dyn&{W^oXBwc&m9Nh-p2|bElkY1VI6@6IWP=C38z5a6p2?HO44F;DDA#l1p+3=|0 zm=VP&#At`n9b;Z&C*wlnP9Xb@P0~#oOr}k>Oyf-tn~s|)nMIh@nhl%Fn={R8%!e)H zEm(`lv$AEh(9Ykk((b9f zoPDJIVf%LuIu02?`Xe0e9ZMYhoJ5?KI8{51IcqwnIG=NYT7nJ3?$P1N<>>{m=V31muXL{tZ@jmU_a5&tApdiGx_$Y5LwpbV zzV|cpEAqSRFY6!ge>MOe;2E$d;8mc0U_oGCkaSRN(Ai*2uupJx@Z=J+B^#DJ3{efq z4Cz@avNU4pnNT#)0BS>Lmf0@bx@?r8$5_j_AEpwP9d?~5%}iuo2p0^G2ybQ)SRt$v z5y%Mth(i(ck)DyYk#kY5QPoi&qn)Go0v*69W^c?)taI$X*x5MOxSF`n@t*Mq;};VA z5{@OJ6GIZuBoUKXNo~tTmM1O0!ltmZ*>{t*lGi7{NHI;>kusg?ntCt|nHHLMK3zDS zoqjVzEn{uQaHeJEp3JXVfmu!2LfOgLeJiLdHm!J*1ZO4pUg z@_F-<@^7!wUbS`Ar`18LTMNhqs|!ZgIIcNb$XA$J_+YKs+M0E^b@A(NuQyn~rwCOP zQ`A?iU%aOTT@qi?zrkd~{*BxlQ#L-{WVh*fsc30_=|q`tS^H*{&E=aHw#00?TW(Q) zWUI*5)mz_fTLLf_-R;#oNIPx})|%Cxs#C1nd4T7@sspnJ;|@Nn_p85t$m&q@ zVNIYDNE|6UiaVNjboN-nvC-p8kKa4texm!N#mTd$=%)^!RybYNAl9(u4Drm`Mnq#y zhdyUv&UFf$O!K*S)Uay%BKZVQ*;fi<^-* zCvGL)`p}ozH-CHe9j-eY`vv=V-j%(3@Sf(q#sSlTOZQ#x-+d7BV018X@YBQmM}$XP zACn&+dZPQJl@EEBX6_b@x0qVX*hXvDq`x}boqO=_ZL4b`7krH@uTv`&e3$p7dc@;?LkuU9Uj0e>(5uPn;{2SEN0|B(MbJ=lVU=3IYHi9i-2iScP z69|W6;bb@qUInj*%ixMX_^)sOKm|U)-w+rCFG3VSL8u{g5oQPngeM{x!9pbd@LpFS zY7oZ&E^raiix@)I(Y!-H^e^NaXJ|fD6c8sB+YP)M-@b4`cvBlh9;<3|OK)(P8Lh^lEfDx)$Ap?m<65PoTeH zcrj#*HpUj?4}8`uFq<&di#otV%sVUsD~wgenqj@L5!fv3CTtD18G8f!96O8S#!+zk zI9D7Kmx)>7REPU>w7H|ds0{@jD zOrR2+2;qcWLIvS8p_eemjpUZ*Hsto@PU0>BUh0e7Pr1JkMTpu&4`Li~J+YS9NqkED z$|KIB&*Q_x<|*Yl%5#lpoEOWh$ZNBx2UPL4@jmALN|GQMlY&Xvq+O&|(i1+2kHTlm z7sXf1cZ}~g-z>ibzXg8;e=+|_{`>s%0tx~y0x1H!1iA#?2nq?B2}S`;;Jo0d5J|{b zC_<*& zMtw@-qgl~X z048vsj;EW_6Y16TyV^Ky6YWIp8tnlcf{ukwicY=G6X1__)Xmd912h9!y#T#UdYAR) z_4V`<^y~DW8i*Qr8Wb6H8O$$g2FDCv87UYsjP@7}8jBeF8gDkfWx{LXX0pNLx+%A* ztLX;QUNe%Jmsz>lfVsH&Qs9vuwNSH2vS_sU0x*HKmN%>ft%9wpt;VgX))~MbjkEEv z*PallE=DaonTncy7YT<843 z#mc4B<*BQtYmV!6Hwm{`xAX1<_h9!U?%zDzJgPhfB#0(=<4;O88D5t6H_^LU;A=cG%szhrZ`Pm1I@fUhLi#d#CqB?R!$~Q+>6@vZiUj=Kk7RiQ3I| z__}=HgGoB@@?hw}fqJ+4%ZJPkH67MEeBcQA$d03YN7o-i9LqlT;duP<(G#I3?w|BL zdF_6yah3(7eBim;=UvWUZn0=N*Q(Qc ztWCMCx?Q4uYX@(~`U^;4`_Fc=J6~Uny!gB;r0f1A?@PUxoi1MjKIYaQgPw*fv@1ui zs$8wRM!8mXUGjRx4dEMGdP%(-ZW3;;yM?(`&Wb#`?2?5J&1lVJ{UFl@?qq|(MJ)FMjx{tk33;L8F|WjIx@r>8hOTgHu9YH zeDp=ci_zi8;g=&(BV(h{qvJ1QUcMTO9h(@B8-MdE{?*%w#EHq*Nw25gu;09YoBZ~} zyVQ3xlWCK)QyEjArZcBMzt4LA<->{(UuSY=zJ1L7I6s>=yYMM*4w_r}8Ty?61^$x% z75gq;e5&g zi^UPZHyJc27QfwqL?VIFOT=P{yx?#YFE0-Wyu6FdKW^OLpZ=VGF=n9? ze7gYx{YS#!vjsoD-5|7hHuYy~7wtK|iPb-bg&!XdAaM?U!tE>nnEKDt|KSnH zxEkpAPU_`&gS=A6Uv;C}%Hp4}b* literal 0 HcmV?d00001 From 168b9b32dc26cd1a56ba9d4229906525b61fa91d Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 5 Dec 2022 10:30:07 +0100 Subject: [PATCH 039/103] Add libvips to CI --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4cf5f3a84b..d4fa5b5869 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -112,7 +112,8 @@ jobs: libpango1.0-0 \ libpangocairo-1.0-0 \ libgdk-pixbuf2.0-dev \ - libffi-dev + libffi-dev \ + libvips sudo apt-get install -y --no-install-recommends postgis - name: Install python dependencies From 9b56536b268a05daacd6eab913b6697c76e231ca Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 5 Dec 2022 12:55:22 +0100 Subject: [PATCH 040/103] Add icons for HD view points --- geotrek/common/models.py | 16 +++++++++++ .../templates/common/hdviewpoint_detail.html | 26 +++++++++++++++--- geotrek/static/images/hdviewpoint-16.png | Bin 0 -> 5536 bytes geotrek/static/images/hdviewpoint-96.png | Bin 0 -> 6897 bytes geotrek/static/images/hdviewpoint.png | Bin 0 -> 5939 bytes 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 geotrek/static/images/hdviewpoint-16.png create mode 100644 geotrek/static/images/hdviewpoint-96.png create mode 100644 geotrek/static/images/hdviewpoint.png diff --git a/geotrek/common/models.py b/geotrek/common/models.py index fce836ebea..a491947c3e 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -396,3 +396,19 @@ def get_map_image_extent(self, srid=settings.API_SRID): @classmethod def get_create_label(cls): return _("Add a new HD view") + + @property + def icon(self): + return 'images/hdviewpoint.png' + + @property + def icon_small(self): + return 'images/hdviewpoint-16.png' + + @property + def icon_big(self): + return 'images/hdviewpoint-96.png' + + @property + def modelname(self): + return self._meta.model_name diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 26c1bc667a..420cb0ae54 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -1,12 +1,30 @@ {% extends "mapentity/base_site.html" %} {% load i18n static mapentity_tags leaflet_tags %} -{% block title %}{{ object }} | {{ block.super }}{% endblock title %} - +{% block head %} + {% block title %}{{ object }} | {{ block.super }}{% endblock title %} + {{ block.super }} + +{% endblock head %} {% block mainpanel %} -
+

{{ object }}

- +
@@ -98,7 +106,6 @@

{% trans "Image" %}

{% url 'common:hdviewpoint-drf-detail' object.pk as base_tile_url %} {{object.annotations|json_script:"geojson_annotations"}}
- {% include "common/annotations_widget.html" %} - {% endblock %} diff --git a/geotrek/common/urls.py b/geotrek/common/urls.py index 0d6e6122e4..1d611772f5 100644 --- a/geotrek/common/urls.py +++ b/geotrek/common/urls.py @@ -3,7 +3,7 @@ from mapentity.registry import MapEntityOptions from rest_framework.routers import DefaultRouter -from .views import (HDViewPointAPIViewSet, HDViewPointCreate, HDViewPointDetail, HDViewPointUpdate, HDViewPointDelete, +from .views import (HDViewPointAPIViewSet, HDViewPointAnnotate, HDViewPointCreate, HDViewPointDetail, HDViewPointUpdate, HDViewPointDelete, TiledHDViewPointViewSet, JSSettings, DocumentPublic, DocumentBookletPublic, import_view, import_update_json, ThemeViewSet, MarkupPublic, sync_view, sync_update_json, SyncRandoRedirect, CheckExtentsView) @@ -31,6 +31,7 @@ class LangConverter(converters.StringConverter): path('hdviewpoint/', HDViewPointDetail.as_view(), name="hdviewpoint_detail"), path('hdviewpoint/edit/', HDViewPointUpdate.as_view(), name="hdviewpoint_change"), path('hdviewpoint/delete/', HDViewPointDelete.as_view(), name="hdviewpoint_delete"), + path('hdviewpoint/annotate/', HDViewPointAnnotate.as_view(), name="hdviewpoint_annotate"), ] rest_router = DefaultRouter(trailing_slash=False) diff --git a/geotrek/common/views.py b/geotrek/common/views.py index 9513c04e04..ceca12b22b 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -29,7 +29,7 @@ from django.utils.translation import gettext as _ from django.views import static from django.views.decorators.http import require_http_methods, require_POST -from django.views.generic import RedirectView, TemplateView, View +from django.views.generic import RedirectView, TemplateView, View, UpdateView from django_celery_results.models import TaskResult from django_large_image.rest import LargeImageFileDetailMixin from mapentity import views as mapentity_views @@ -46,7 +46,7 @@ from geotrek.common.mixins.api import APIViewSet from geotrek.feedback.parsers import SuricateParser -from .forms import (AttachmentAccessibilityForm, HDViewPointForm, +from .forms import (AttachmentAccessibilityForm, HDViewPointAnnotationForm, HDViewPointForm, ImportDatasetForm, ImportDatasetFormWithFile, ImportSuricateForm, SyncRandoForm) from .mixins.views import (BookletMixin, CompletenessMixin, @@ -382,6 +382,16 @@ def get_success_url(self): return self.get_object().content_object.get_detail_url() +class HDViewPointAnnotate(UpdateView): + model = HDViewPoint + form_class = HDViewPointAnnotationForm + template_name_suffix = '_annotation_form' + + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super().dispatch(*args, **kwargs) + + class TiledHDViewPointViewSet(mixins.ListModelMixin, viewsets.GenericViewSet, LargeImageFileDetailMixin): queryset = HDViewPoint.objects.all() serializer_class = HDViewPointAPISerializer From 846054cdaf880cb9a43e57ed04a2acb21fd81b3f Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Fri, 9 Dec 2022 16:04:18 +0100 Subject: [PATCH 055/103] Remove unused imports --- geotrek/common/forms.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/geotrek/common/forms.py b/geotrek/common/forms.py index c7a652642b..93d52bde42 100644 --- a/geotrek/common/forms.py +++ b/geotrek/common/forms.py @@ -1,10 +1,9 @@ -import json import logging from copy import deepcopy from crispy_forms.bootstrap import FormActions from crispy_forms.helper import FormHelper -from crispy_forms.layout import HTML, Button, Div, Layout, Submit +from crispy_forms.layout import Button, Div, Layout, Submit from django import forms from django.conf import settings from django.contrib.contenttypes.models import ContentType From 956b8f97cad8b3cf8381381ec0eb3b25161ff274 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 12 Dec 2022 11:09:46 +0100 Subject: [PATCH 056/103] :art: Style annotations form --- geotrek/common/forms.py | 2 - geotrek/common/static/common/style.css | 103 ++++++++++++++---- .../common/hdviewpoint_annotation_form.html | 15 ++- .../templates/common/hdviewpoint_detail.html | 2 +- 4 files changed, 93 insertions(+), 29 deletions(-) diff --git a/geotrek/common/forms.py b/geotrek/common/forms.py index 93d52bde42..3ab9928932 100644 --- a/geotrek/common/forms.py +++ b/geotrek/common/forms.py @@ -512,10 +512,8 @@ def _init_layout(self): SubmitButton('save_changes', _('Save changes')), ] - leftpanel_css = "col-12 col-sm-6 col-lg-5" leftpanel = Div( 'annotations', - css_class=leftpanel_css, css_id="modelfields", ) formactions = FormActions( diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index 6991c963b9..0c8df5836d 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -25,6 +25,17 @@ fieldset { padding: 0; margin: 0; overflow: hidden; + border: 1px solid lightgrey; + border-radius: 5px; +} + +#hdviewpoint-map.large { + height: 800px; + margin-right: 10px; +} + +.form-panel#annotations { + flex-basis: 70%; } .loader-wrapper { @@ -54,23 +65,14 @@ fieldset { } #controls { - left: 10px; - top: 80px; - z-index: 1000; border-radius: 5px; - border: 1px solid grey; - box-shadow: 1px 1px 3px black; - opacity: 0.5; - transition: opacity 250ms ease; - background: #CCC; + border: 1px solid lightgrey; color: black; - padding: 4px; - font-size: 14px; + padding: 10px; max-height: calc(100% - 100px); min-width: 310px; -} -#controls:hover { - opacity: 1; + margin-left: 10px; + margin-right: 10px; } #controls .form-group { margin-bottom: 0; @@ -81,18 +83,49 @@ fieldset { #controls.no-controls { display: none; } + +.annotationtype{ + justify-content: space-between; + display: flex; + margin-left: 10px; + margin-right: 10px; +} + +.annotationtype button { + display: inline-block; + outline: 0; + border: 0; + cursor: pointer; + background: #1e7e34; + color: #FFFFFF; + border-radius: 8px; + padding: 14px 24px 16px; + font-size: 14px; + font-weight: 700; + line-height: 1; + transition: transform 200ms,background 200ms; +} +.annotationtype button:hover { + transform: translateY(-2px); +} + .annotationtype button.lastused { color: #373a3c; background-color: #e6e6e6; border-color: #adadad; } .annotationtype button.active { - color: white; - background-color: #025aa5; - border-color: #01549b; + color: #373a3c; + background-color: #dae0e5;; + border-color: #dae0e5;; +} +#annotationheader { + margin-top: 20px; + margin-left: 20px; + margin-right: 10px; } .shortlabel { - margin-bottom: 5px; + margin-bottom: 10px; font-weight: bold; display: inline-block; } @@ -133,12 +166,16 @@ fieldset { .entry span, .entry a { display: inline-block; } + +.entry { + margin-right: 10px; +} .entry .entry-name { - width: 82%; + margin-left: 10px; + margin-right: 10px; } -.entry a { - width: 6%; - text-align: right; +#tinybuttons { + float: right; } .entry .entry-edit { font-weight: bold; @@ -170,3 +207,27 @@ fieldset { width: 100%; resize: vertical; } + +#label_input { + padding: 6px 12px; + font-size: 16px; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + appearance: none; + border-radius: 4px; + transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; +} +#label_input:hover { + background-color: rgb(235, 236, 240); +} +#label_input:focus { + color: #212529; + background-color: #fff; + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgb(13 110 253 / 25%); +} \ No newline at end of file diff --git a/geotrek/common/templates/common/hdviewpoint_annotation_form.html b/geotrek/common/templates/common/hdviewpoint_annotation_form.html index d9ca731077..f980452379 100644 --- a/geotrek/common/templates/common/hdviewpoint_annotation_form.html +++ b/geotrek/common/templates/common/hdviewpoint_annotation_form.html @@ -2,21 +2,26 @@ {% load i18n static crispy_forms_tags %} {% block mainpanel %} -
+
-
Add
-
+ {% comment %}
{% endcomment %}
Created Annotations
-
Sample
+
+ Sample + + + + +
@@ -27,7 +32,7 @@
{% url 'common:hdviewpoint-drf-detail' object.pk as base_tile_url %} {{object.annotations|json_script:"geojson_annotations"}} -
+
{% endblock mainpanel %} diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index d5a9d41c36..45d67bf99a 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -109,48 +109,7 @@

{% trans "Attributes" %}

{% endblock detailspanel %} @@ -213,4 +172,5 @@

{% trans "Attributes" %}

{% block extrabody %} {{ block.super}} + {% endblock %} From 85f535df3d4486cdd5d61c868238e0fb7c85045c Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 12 Dec 2022 15:14:20 +0100 Subject: [PATCH 058/103] :sparkles: Display HD views count in navigation tabs --- geotrek/outdoor/templates/outdoor/site_detail.html | 8 ++++++++ geotrek/trekking/templates/trekking/poi_detail.html | 8 ++++++++ geotrek/trekking/templates/trekking/trek_detail.html | 9 +++++++++ geotrek/trekking/views.py | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/geotrek/outdoor/templates/outdoor/site_detail.html b/geotrek/outdoor/templates/outdoor/site_detail.html index c26a5d0dc2..2505d0a4c7 100644 --- a/geotrek/outdoor/templates/outdoor/site_detail.html +++ b/geotrek/outdoor/templates/outdoor/site_detail.html @@ -15,6 +15,14 @@ {{ block.super }} {% endblock detailspanel %} +{% block attachments_extra_tab_nav %} + {% with attachments_count=object.attachments.count|add:object.view_points.count %} + + {% endwith %%} +{% endblock %} {% block attachmentspanel %} {{ block.super }} diff --git a/geotrek/trekking/templates/trekking/poi_detail.html b/geotrek/trekking/templates/trekking/poi_detail.html index 694fe1fc93..e8c38e5d7c 100644 --- a/geotrek/trekking/templates/trekking/poi_detail.html +++ b/geotrek/trekking/templates/trekking/poi_detail.html @@ -1,6 +1,14 @@ {% extends "common/common_detail.html" %} {% load static i18n mapentity_tags %} +{% block attachments_extra_tab_nav %} + {% with attachments_count=object.attachments.count|add:object.view_points.count %} + + {% endwith %%} +{% endblock %} {% block attachmentspanel %} {% include "trekking/ratio_info_fragment.html" %} diff --git a/geotrek/trekking/templates/trekking/trek_detail.html b/geotrek/trekking/templates/trekking/trek_detail.html index 7c724cb86e..9284f03eba 100644 --- a/geotrek/trekking/templates/trekking/trek_detail.html +++ b/geotrek/trekking/templates/trekking/trek_detail.html @@ -23,6 +23,15 @@ {% endblock %} +{% block attachments_extra_tab_nav %} + {% with attachments_count=object.attachments.count|add:object.view_points.count %} + + {% endwith %%} +{% endblock %} + {% block after_attachments_extra_tab_content %} {% is_photos_accessibilities_enabled as enabled %} {% if enabled %} diff --git a/geotrek/trekking/views.py b/geotrek/trekking/views.py index 03d818d9da..c01f5f0150 100755 --- a/geotrek/trekking/views.py +++ b/geotrek/trekking/views.py @@ -100,7 +100,7 @@ def render_to_response(self, context): class TrekDetail(CompletenessMixin, MapEntityDetail): - queryset = Trek.objects.existing().select_related('topo_object') + queryset = Trek.objects.existing().select_related('topo_object').prefetch_related('view_points') @property def icon_sizes(self): From 081e028caffabbeda10984b04b2c0374acc08018 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 12 Dec 2022 16:47:51 +0100 Subject: [PATCH 059/103] :dizzy: Open HD View detail page in same tab --- .../common/templates/common/hdviewpoint_detail_fragment.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html index d9b2a16206..26c9fc529b 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html +++ b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html @@ -34,7 +34,7 @@

{% trans "HD Views" %}

- + {{ viewpoint.title|safe }} From 4df86799f8b39b217b23f6df5cbf5b987ad6f3fb Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 12 Dec 2022 17:31:37 +0100 Subject: [PATCH 060/103] :sparkles: Add tooltip for HD views explanation (with placeholder text) --- geotrek/common/static/common/style.css | 54 +++++++++++++++++++ .../common/hdviewpoint_detail_fragment.html | 6 ++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index 0c8df5836d..bcb6079339 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -230,4 +230,58 @@ fieldset { border-color: #86b7fe; outline: 0; box-shadow: 0 0 0 0.25rem rgb(13 110 253 / 25%); +} +#viewpoint-tooltip { + display: inline-block; + text-align: center; + width: 1.8ex; + height: 1.8ex; + font-size: 1.4ex; + line-height: 1.5ex; + border-radius: 1.2ex; + padding: 1px; + margin-left: 10px; + border: 1px solid black; +} +#viewpoint-tooltip:hover:after{ + border-color: white; +} +#viewpoint-tooltip { + position: relative; + z-index: 2; + cursor: pointer; +} + +/* Hide the tooltip content by default */ +#viewpoint-tooltip:before, +#viewpoint-tooltip:after { + visibility: hidden; + opacity: 0; + pointer-events: none; +} + +/* Position tooltip above the element */ +#viewpoint-tooltip:before { + position: absolute; + bottom: 150%; + left: 50%; + margin-bottom: 5px; + margin-left: -80px; + padding: 7px; + width: 500px; + border-radius: 3px; + background-color: #000; + background-color: hsla(0, 0%, 20%, 0.9); + color: #fff; + content: attr(data-tooltip); + text-align: center; + font-size: 14px; + line-height: 1.2; +} + +/* Show tooltip content on hover */ +#viewpoint-tooltip:hover:before, +#viewpoint-tooltip:hover:after { + visibility: visible; + opacity: 1; } \ No newline at end of file diff --git a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html index 26c9fc529b..c55bccb690 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html +++ b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html @@ -1,6 +1,10 @@ {% load i18n mapentity_tags %} -

{% trans "HD Views" %}

+

{% trans "HD Views" %} + ? +

{% if not user.profile.structure == object.structure and not perms.authent.can_bypass_structure %}
{% trans "You are not allowed to modify attachments on this object, this object is not from the same structure." %} From e5f223628415234a75c7d7ef4bdbdf96fe44139f Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 12 Dec 2022 17:50:10 +0100 Subject: [PATCH 061/103] :dizzy: Ensure history tab pictogram for HD views is always displayed --- geotrek/common/static/common/style.css | 7 ++++++- geotrek/common/templates/common/hdviewpoint_detail.html | 5 ----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index bcb6079339..adf8e6527d 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -284,4 +284,9 @@ fieldset { #viewpoint-tooltip:hover:after { visibility: visible; opacity: 1; -} \ No newline at end of file +} +li.history.hdviewpoint > a, +li.history.hdviewpoint button:first-child { + background: url(/static/images/hdviewpoint-16.png) no-repeat; + background-position: left center; +} diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 45d67bf99a..01ed4650b0 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -11,11 +11,6 @@ background-image: url({% static object.icon_big %}); background-position: left top -3%; } - li.history.{{ object.modelname }} > a, - li.history.{{ object.modelname }} button:first-child { - background: url({% static object.icon_small %}) no-repeat; - background-position: left center; - } .nav-item.{{ object.modelname }} .btn-list { background-image: url({% static object.icon_big %}); } From 2cb0bcadee3ad0350065df2e115369db89529c8c Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 12 Dec 2022 18:02:45 +0100 Subject: [PATCH 062/103] :lipstick: Click anywhere on annotation row to edit name --- geotrek/common/static/common/js/annotations.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geotrek/common/static/common/js/annotations.js b/geotrek/common/static/common/js/annotations.js index 4cf0c0d8a4..cc4bd1b5e4 100644 --- a/geotrek/common/static/common/js/annotations.js +++ b/geotrek/common/static/common/js/annotations.js @@ -238,7 +238,7 @@ function initAnnotationsWidget(map) { } var entry = $('#annotationlist .entry#sample').clone(); entry.attr({ id: '', 'annotation-id': id }); - entry.find('.entry-name').on('click', () => edit_label(entry)); + entry.on('click', () => edit_label(entry)); entry.find('.entry-name').text(annotation.name()); $('#annotationlist').append(entry); }); From 9974fdd3fcbe60f2b6c5d6e3cb0b4aae2b2dcfb2 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 13 Dec 2022 12:57:29 +0100 Subject: [PATCH 063/103] :dizzy: Display proper title in HD Views annotation form page --- geotrek/common/views.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/geotrek/common/views.py b/geotrek/common/views.py index ceca12b22b..c87b12577e 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -391,6 +391,11 @@ class HDViewPointAnnotate(UpdateView): def dispatch(self, *args, **kwargs): return super().dispatch(*args, **kwargs) + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['title'] = self.get_object().title + return context + class TiledHDViewPointViewSet(mixins.ListModelMixin, viewsets.GenericViewSet, LargeImageFileDetailMixin): queryset = HDViewPoint.objects.all() From 6d6cf6abfc78b1ce29f812a8cb2855c775c813fa Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 14 Dec 2022 10:17:12 +0100 Subject: [PATCH 064/103] :sparkles: Replace tooltip placeholder with actual text --- .../common/templates/common/hdviewpoint_detail_fragment.html | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html index c55bccb690..a9914ea371 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html +++ b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html @@ -1,9 +1,7 @@ {% load i18n mapentity_tags %}

{% trans "HD Views" %} - ? + ?

{% if not user.profile.structure == object.structure and not perms.authent.can_bypass_structure %}
From c6a2f61fe02de5aeaef5719d1af0ad95fd4822a2 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 14 Dec 2022 10:24:01 +0100 Subject: [PATCH 065/103] :sparkles: Add HD Views thumbnail url to APIv2 --- geotrek/api/tests/test_v2.py | 2 +- geotrek/api/v2/serializers.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/geotrek/api/tests/test_v2.py b/geotrek/api/tests/test_v2.py index 5e2220c6de..6000bb702b 100644 --- a/geotrek/api/tests/test_v2.py +++ b/geotrek/api/tests/test_v2.py @@ -257,7 +257,7 @@ HDVIEWPOINT_DETAIL_JSON_STRUCTURE = sorted([ 'id', 'annotations', 'author', 'create_datetime', 'geometry', 'legend', - 'license', 'picture_tiles_url', 'poi', 'site', 'title', 'trek', 'update_datetime', 'uuid' + 'license', 'picture_tiles_url', 'poi', 'site', 'title', 'trek', 'thumbnail_url', 'update_datetime', 'uuid' ]) diff --git a/geotrek/api/v2/serializers.py b/geotrek/api/v2/serializers.py index e67d9d5b54..95df832b55 100644 --- a/geotrek/api/v2/serializers.py +++ b/geotrek/api/v2/serializers.py @@ -336,6 +336,7 @@ class Meta: class HDViewPointSerializer(serializers.ModelSerializer): geometry = geo_serializers.GeometryField(read_only=True, source="geom_transformed", precision=7) picture_tiles_url = serializers.SerializerMethodField() + thumbnail_url = serializers.SerializerMethodField() trek = serializers.SerializerMethodField() site = serializers.SerializerMethodField() poi = serializers.SerializerMethodField() @@ -349,6 +350,9 @@ class HDViewPointSerializer(serializers.ModelSerializer): def get_picture_tiles_url(self, obj): return build_url(self, obj.get_generic_picture_tile_url()) + def get_thumbnail_url(self, obj): + return build_url(self, obj.thumbnail_url) + def get_trek(self, obj): related_obj = obj.content_object if isinstance(related_obj, trekking_models.Trek): @@ -371,7 +375,7 @@ class Meta: model = common_models.HDViewPoint fields = ( 'id', 'annotations', 'author', 'create_datetime', 'geometry', 'legend', 'license', 'picture_tiles_url', - 'poi', 'title', 'site', 'trek', 'update_datetime', 'uuid' + 'poi', 'title', 'site', 'trek', 'thumbnail_url', 'update_datetime', 'uuid' ) From e3df9d14abcf1969f89fd7a72f42e681c699501f Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 14 Dec 2022 11:44:32 +0100 Subject: [PATCH 066/103] :white_check_mark: Add test for Annotation Form --- geotrek/common/tests/test_forms.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 geotrek/common/tests/test_forms.py diff --git a/geotrek/common/tests/test_forms.py b/geotrek/common/tests/test_forms.py new file mode 100644 index 0000000000..99b7af6f08 --- /dev/null +++ b/geotrek/common/tests/test_forms.py @@ -0,0 +1,19 @@ +import json +from django.test import TestCase +from geotrek.common.forms import HDViewPointAnnotationForm +from geotrek.common.tests.factories import HDViewPointFactory, LicenseFactory + + +class HDViewPointAnnotateFormTest(TestCase): + @classmethod + def setUpTestData(cls): + cls.vp = HDViewPointFactory(content_object=LicenseFactory()) + + def test_annotation_form(self): + geojson = '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [7903.518111498841, 3618.542606516288]}, "properties": {"name": "Test point", "annotationId": 13, "annotationType": "point"}}]}' + data = { + "annotations": geojson + } + form = HDViewPointAnnotationForm(instance=self.vp, data=data) + form.save() + self.assertEqual(self.vp.annotations, json.loads(geojson)) From 57e446a4069277e40059dd74624636d73319a388 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 14 Dec 2022 11:44:53 +0100 Subject: [PATCH 067/103] :white_check_mark: Add test for HD Views icons --- geotrek/common/tests/test_models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/geotrek/common/tests/test_models.py b/geotrek/common/tests/test_models.py index ba957f315d..596225ec0d 100644 --- a/geotrek/common/tests/test_models.py +++ b/geotrek/common/tests/test_models.py @@ -68,3 +68,7 @@ def test_tiles_url(self): self.assertEqual( self.vp.get_generic_picture_tile_url(), f"/api/hdviewpoint/drf/hdviewpoints/{self.vp.pk}/tiles/{{z}}/{{x}}/{{y}}.png" ) + + def test_icons(self): + self.assertIn('hdviewpoint-16.png', self.vp.icon_small) + self.assertIn('hdviewpoint-96.png', self.vp.icon_big) From e96e444d258c65e801772f0fbcde2c0c56d41ead Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 14 Dec 2022 11:48:28 +0100 Subject: [PATCH 068/103] :white_check_mark: Add test for HD Views annotation view --- geotrek/common/tests/test_views.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 54823e7011..adc518c841 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -14,6 +14,7 @@ from django.test import TestCase from django.test.utils import override_settings from django.urls import reverse +from geotrek.common.forms import HDViewPointAnnotationForm from geotrek.common.utils.testdata import get_dummy_uploaded_image from mapentity.tests.factories import UserFactory, SuperUserFactory from mapentity.views.generic import MapEntityList @@ -505,3 +506,14 @@ def test_tiles_view(self): self.client.force_login(user=self.user_perm) response = self.client.get(tile_url) self.assertEqual(response.status_code, 200) + + def test_annotate_view(self): + """ + Test annotations form view contains form and title + """ + self.client.force_login(user=self.user_perm) + vp = HDViewPointFactory(content_object=self.trek) + response = self.client.get(vp.get_annotate_url()) + self.assertEqual(response.status_code, 200) + self.assertIsInstance(response.context['form'], HDViewPointAnnotationForm) + self.assertEqual(response.context['title'], vp.title) From 1d93a90ba4076a8a2ad138d174acbb4f3f9a6d84 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 14 Dec 2022 12:01:20 +0100 Subject: [PATCH 069/103] :sparkles: Serve right URL for HD Views generic tiles in APIv2 --- geotrek/api/tests/test_v2.py | 2 +- geotrek/common/models.py | 4 ++-- geotrek/common/tests/test_models.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/geotrek/api/tests/test_v2.py b/geotrek/api/tests/test_v2.py index 6000bb702b..fab4dfee3c 100644 --- a/geotrek/api/tests/test_v2.py +++ b/geotrek/api/tests/test_v2.py @@ -2232,7 +2232,7 @@ def test_hdviewpoint_detail_content(self): json_response = response.json() self.assertEqual( json_response.get('picture_tiles_url'), - f"http://testserver/api/hdviewpoint/drf/hdviewpoints/{self.hdviewpoint_trek.pk}/tiles/%7Bz%7D/%7Bx%7D/%7By%7D.png" + f"http://testserver/api/hdviewpoint/drf/hdviewpoints/{self.hdviewpoint_trek.pk}/tiles/%7Bz%7D/%7Bx%7D/%7By%7D.png?source=vips" ) json.dumps(json_response.get('annotations')) self.assertIsNone(json_response.get('site')) diff --git a/geotrek/common/models.py b/geotrek/common/models.py index 02d57f3b8e..dd026a19b6 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -337,8 +337,8 @@ def get_picture_tile_url(self, x, y, z): return f"{url}?{urlencode({'source': 'vips'})}" def get_generic_picture_tile_url(self): - thumbnail_path = reverse("common:hdviewpoint-tile", kwargs={'pk': self.pk, 'x': 0, 'y': 0, 'z': 0, 'fmt': 'png'}) - return thumbnail_path.replace("/0/0/0.png", "/{z}/{x}/{y}.png") + url = self.get_picture_tile_url(0, 0, 0).replace("/0/0/0.png", "/{z}/{x}/{y}.png") + return url def get_layer_detail_url(self): return reverse("{app_name}:{model_name}-drf-detail".format(app_name=self._meta.app_label.lower(), diff --git a/geotrek/common/tests/test_models.py b/geotrek/common/tests/test_models.py index 596225ec0d..b5630d5118 100644 --- a/geotrek/common/tests/test_models.py +++ b/geotrek/common/tests/test_models.py @@ -66,7 +66,7 @@ def test_thumbnail_url(self): def test_tiles_url(self): self.assertEqual( - self.vp.get_generic_picture_tile_url(), f"/api/hdviewpoint/drf/hdviewpoints/{self.vp.pk}/tiles/{{z}}/{{x}}/{{y}}.png" + self.vp.get_generic_picture_tile_url(), f"/api/hdviewpoint/drf/hdviewpoints/{self.vp.pk}/tiles/{{z}}/{{x}}/{{y}}.png?source=vips" ) def test_icons(self): From f76255595d3d18bb1cf0724cbec7a4e0b95f4567 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 14 Dec 2022 14:12:37 +0100 Subject: [PATCH 070/103] :white_check_mark: Add APIv2 test for HD Views linked to Site --- geotrek/api/tests/test_v2.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/geotrek/api/tests/test_v2.py b/geotrek/api/tests/test_v2.py index fab4dfee3c..24abc5f19e 100644 --- a/geotrek/api/tests/test_v2.py +++ b/geotrek/api/tests/test_v2.py @@ -444,6 +444,10 @@ def setUpTestData(cls): content_type=ContentType.objects.get_for_model(trek_models.POI), object_id=cls.poi.pk ) + cls.hdviewpoint_site = common_factory.HDViewPointFactory( + content_type=ContentType.objects.get_for_model(outdoor_factory.Site), + object_id=cls.site.pk + ) def check_number_elems_response(self, response, model): json_response = response.json() @@ -2240,7 +2244,7 @@ def test_hdviewpoint_detail_content(self): self.assertEquals(json_response.get('trek').get('uuid'), str(self.treks[0].uuid)) self.assertEquals(json_response.get('trek').get('id'), self.treks[0].id) - def test_hdviewpoint_detail_content_2(self): + def test_hdviewpoint_detail_content_poi(self): response = self.get_hdviewpoint_detail(self.hdviewpoint_poi.pk) self.assertEqual(response.status_code, 200) json_response = response.json() @@ -2250,6 +2254,16 @@ def test_hdviewpoint_detail_content_2(self): self.assertEquals(json_response.get('poi').get('uuid'), str(self.poi.uuid)) self.assertEquals(json_response.get('poi').get('id'), self.poi.id) + def test_hdviewpoint_detail_content_site(self): + response = self.get_hdviewpoint_detail(self.hdviewpoint_site.pk) + self.assertEqual(response.status_code, 200) + json_response = response.json() + json.dumps(json_response.get('annotations')) + self.assertIsNone(json_response.get('poi')) + self.assertIsNone(json_response.get('trek')) + self.assertEquals(json_response.get('site').get('uuid'), str(self.site.uuid)) + self.assertEquals(json_response.get('site').get('id'), self.site.id) + class APIAccessAdministratorTestCase(BaseApiTest): """ TestCase for administrator API profile """ From 490ba7dfa9ae225ffc8523a277c54fe72afc8448 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 14 Dec 2022 14:17:40 +0100 Subject: [PATCH 071/103] :white_check_mark: Add test for HD Views same structure check --- geotrek/common/tests/test_models.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/geotrek/common/tests/test_models.py b/geotrek/common/tests/test_models.py index b5630d5118..9c10775c82 100644 --- a/geotrek/common/tests/test_models.py +++ b/geotrek/common/tests/test_models.py @@ -4,9 +4,10 @@ from django.test import TestCase from geotrek.authent.models import default_structure +from geotrek.authent.tests.factories import StructureFactory, UserProfileFactory, UserFactory from geotrek.common.models import Theme -from geotrek.common.tests.factories import (HDViewPointFactory, LabelFactory, LicenseFactory, - OrganismFactory) +from geotrek.common.tests.factories import (HDViewPointFactory, LabelFactory, OrganismFactory) +from geotrek.trekking.tests.factories import TrekFactory class ThemeModelTest(TestCase): @@ -57,7 +58,13 @@ def test_str_without_structure(self): class HDViewPointTestCase(TestCase): @classmethod def setUpTestData(cls): - cls.vp = HDViewPointFactory(content_object=LicenseFactory()) + structure = StructureFactory(name="MyStructure") + cls.trek = TrekFactory(structure=structure) + cls.vp = HDViewPointFactory(content_object=cls.trek) + profile = UserProfileFactory(structure=structure) + cls.user = UserFactory() + cls.user.profile = profile + cls.user.save() def test_thumbnail_url(self): self.assertEqual( @@ -72,3 +79,6 @@ def test_tiles_url(self): def test_icons(self): self.assertIn('hdviewpoint-16.png', self.vp.icon_small) self.assertIn('hdviewpoint-96.png', self.vp.icon_big) + + def test_same_structure(self): + self.assertTrue(self.vp.same_structure(self.user)) From 902f9408fe0d6d00976851a97bae93669696d5d2 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 15 Dec 2022 11:14:25 +0100 Subject: [PATCH 072/103] :fire: Remove unused check --- geotrek/common/models.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/geotrek/common/models.py b/geotrek/common/models.py index dd026a19b6..4bcd5c2285 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -1,5 +1,4 @@ import os -from sqlite3 import OperationalError import uuid from colorfield.fields import ColorField @@ -379,10 +378,7 @@ def get_permission_codename(cls, entity_kind): @classmethod def get_content_type_id(cls): - try: - return ContentType.objects.get_for_model(cls).pk - except OperationalError: # table is not yet created - return None + return ContentType.objects.get_for_model(cls).pk def get_geom(self): return self.geom From c84acf4e982f73074dc75328c0a2f1f8845f9f4f Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 15 Dec 2022 15:29:03 +0100 Subject: [PATCH 073/103] :white_check_mark: Add test for HD Views detail page access --- geotrek/common/tests/test_views.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index ab13cf60dc..df55d4cc2d 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -474,6 +474,10 @@ def test_crud_view(self): self.assertEqual(vp.legend, "Something else") self.assertEqual(vp.license, None) + # Test detail view + response = self.client.get(vp.get_detail_url()) + self.assertIn(b"Un titre", response.content) + # Test delete view vp = HDViewPoint.objects.first() response = self.client.post(vp.get_delete_url(), {}, follow=True) From f210b9e2dfaf33ed333f4bfc5e9062263bf43be9 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 15 Dec 2022 16:44:48 +0100 Subject: [PATCH 074/103] :globe_with_meridians: Register translation fields for HD Views --- geotrek/common/tests/test_views.py | 28 +++++++++++++++------------- geotrek/common/translation.py | 7 ++++++- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index df55d4cc2d..df8c55289f 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -6,7 +6,7 @@ from unittest import mock from django.conf import settings -from django.contrib.auth.models import User, Permission +from django.contrib.auth.models import Permission, User from django.contrib.contenttypes.models import ContentType from django.contrib.gis.geos import Point from django.core.files import File @@ -14,20 +14,22 @@ from django.test import TestCase from django.test.utils import override_settings from django.urls import reverse -from geotrek.common.forms import HDViewPointAnnotationForm -from geotrek.common.utils.testdata import get_dummy_uploaded_image -from mapentity.tests.factories import UserFactory, SuperUserFactory +from mapentity.tests.factories import SuperUserFactory, UserFactory from mapentity.views.generic import MapEntityList +import geotrek.trekking.parsers # noqa +from geotrek.common.forms import HDViewPointAnnotationForm from geotrek.common.mixins.views import CustomColumnsMixin from geotrek.common.models import FileType, HDViewPoint from geotrek.common.parsers import Parser -from geotrek.common.tasks import launch_sync_rando, import_datas -from geotrek.common.tests.factories import HDViewPointFactory, LicenseFactory, TargetPortalFactory +from geotrek.common.tasks import import_datas, launch_sync_rando +from geotrek.common.tests.factories import (HDViewPointFactory, LicenseFactory, + TargetPortalFactory) +from geotrek.common.utils.testdata import get_dummy_uploaded_image +from geotrek.common.views import HDViewPointAPIViewSet from geotrek.core.models import Path from geotrek.trekking.models import Trek from geotrek.trekking.tests.factories import TrekFactory -import geotrek.trekking.parsers # noqa class DocumentPublicPortalTest(TestCase): @@ -435,9 +437,9 @@ def test_crud_view(self): img = get_dummy_uploaded_image() data = { 'picture': img, - 'title': "Un titre", - 'author': "Someone", - 'legend': "Something", + 'title_en': "Un titre", + 'author_en': "Someone", + 'legend_en': "Something", 'geom': "SRID=2154;POINT(0 0)", "license": self.license.pk } @@ -463,9 +465,9 @@ def test_crud_view(self): img = get_dummy_uploaded_image() data = { 'picture': img, - 'title': "Un titre", - 'author': "Someone", - 'legend': "Something else", + 'title_en': "Un titre", + 'author_en': "Someone", + 'legend_en': "Something else", 'geom': "SRID=2154;POINT(0 0)" } response = self.client.post(vp.get_update_url(), data) diff --git a/geotrek/common/translation.py b/geotrek/common/translation.py index e40ef8af5e..607a970c3c 100644 --- a/geotrek/common/translation.py +++ b/geotrek/common/translation.py @@ -1,6 +1,6 @@ from modeltranslation.translator import translator, TranslationOptions -from geotrek.common.models import TargetPortal, Theme, Label +from geotrek.common.models import TargetPortal, Theme, Label, HDViewPoint class ThemeTO(TranslationOptions): @@ -15,6 +15,11 @@ class LabelTO(TranslationOptions): fields = ('name', 'advice') +class HDViewPointTO(TranslationOptions): + fields = ('author', 'title', 'legend') + + translator.register(Theme, ThemeTO) translator.register(TargetPortal, TargetPortalTO) translator.register(Label, LabelTO) +translator.register(HDViewPoint, HDViewPointTO) From f2c02278164c94906b821a4af33bf13c11939655 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 15 Dec 2022 17:10:18 +0100 Subject: [PATCH 075/103] :white_check_mark: Add test for HD Views API ViewSet --- geotrek/common/tests/test_views.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index df8c55289f..47e7983379 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -529,3 +529,11 @@ def test_annotate_view(self): self.assertEqual(response.status_code, 200) self.assertIsInstance(response.context['form'], HDViewPointAnnotationForm) self.assertEqual(response.context['title'], vp.title) + + def test_API_viewset(self): + vp = HDViewPointFactory(content_object=self.trek) + qs = HDViewPointAPIViewSet().get_queryset() + transformed_geom = vp.geom.transform(settings.API_SRID, clone=True) + api_geom = qs.first().api_geom + self.assertAlmostEqual(api_geom.x, transformed_geom.x) + self.assertAlmostEqual(api_geom.y, transformed_geom.y) From caf3e91b95f117b06207e1de072c4be9774f8d86 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Fri, 16 Dec 2022 10:17:43 +0100 Subject: [PATCH 076/103] :zap: Add prefetch_related for HD Views querysets --- geotrek/api/v2/views/outdoor.py | 6 ++++-- geotrek/api/v2/views/trekking.py | 11 +++++++---- geotrek/outdoor/views.py | 8 ++++++-- geotrek/trekking/views.py | 12 +++++++++--- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/geotrek/api/v2/views/outdoor.py b/geotrek/api/v2/views/outdoor.py index a67a6fd119..3b6d5fa066 100644 --- a/geotrek/api/v2/views/outdoor.py +++ b/geotrek/api/v2/views/outdoor.py @@ -6,7 +6,7 @@ from geotrek.api.v2 import serializers as api_serializers, \ filters as api_filters, viewsets as api_viewsets -from geotrek.common.models import Attachment +from geotrek.common.models import Attachment, HDViewPoint from geotrek.outdoor import models as outdoor_models @@ -24,7 +24,9 @@ def get_queryset(self): return outdoor_models.Site.objects \ .annotate(geom_transformed=Transform(F('geom'), settings.API_SRID)) \ .prefetch_related(Prefetch('attachments', - queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure'))) \ + queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure')), + Prefetch('view_points', + queryset=HDViewPoint.objects.select_related('content_type', 'license'))) \ .order_by('name') # Required for reliable pagination diff --git a/geotrek/api/v2/views/trekking.py b/geotrek/api/v2/views/trekking.py index be777d42b7..a5c58e8693 100644 --- a/geotrek/api/v2/views/trekking.py +++ b/geotrek/api/v2/views/trekking.py @@ -11,7 +11,7 @@ from geotrek.api.v2.decorators import cache_response_detail from geotrek.api.v2.functions import Length3D from geotrek.api.v2.renderers import SVGProfileRenderer -from geotrek.common.models import Attachment, AccessibilityAttachment +from geotrek.common.models import Attachment, AccessibilityAttachment, HDViewPoint from geotrek.trekking import models as trekking_models @@ -39,8 +39,9 @@ def get_queryset(self): Prefetch('attachments_accessibility', queryset=AccessibilityAttachment.objects.select_related('license')), Prefetch('web_links', - queryset=trekking_models.WebLink.objects.select_related('category'))) \ - .prefetch_related('view_points') \ + queryset=trekking_models.WebLink.objects.select_related('category')), + Prefetch('view_points', + queryset=HDViewPoint.objects.select_related('content_type', 'license'))) \ .annotate(geom3d_transformed=Transform(F('geom_3d'), settings.API_SRID), length_3d_m=Length3D('geom_3d')) \ .order_by("name") # Required for reliable pagination @@ -169,7 +170,9 @@ class POIViewSet(api_viewsets.GeotrekGeometricViewset): .select_related('topo_object', 'type', ) \ .prefetch_related('topo_object__aggregations', Prefetch('attachments', - queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure'))) \ + queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure')), + Prefetch('view_points', + queryset=HDViewPoint.objects.select_related('content_type', 'license'))) \ .annotate(geom3d_transformed=Transform(F('geom_3d'), settings.API_SRID)) \ .order_by('pk') # Required for reliable pagination diff --git a/geotrek/outdoor/views.py b/geotrek/outdoor/views.py index dab3cfa8db..7f36c3ec4c 100644 --- a/geotrek/outdoor/views.py +++ b/geotrek/outdoor/views.py @@ -1,6 +1,7 @@ from django.conf import settings from django.contrib.gis.db.models.functions import Transform -from django.db.models import Q +from django.db.models import Q, Prefetch +from geotrek.common.models import HDViewPoint from mapentity.helpers import alphabet_enumeration from mapentity.views import (MapEntityList, MapEntityDetail, MapEntityDocument, MapEntityCreate, MapEntityUpdate, MapEntityDelete, MapEntityFormat) @@ -27,7 +28,10 @@ class SiteList(CustomColumnsMixin, MapEntityList): class SiteDetail(CompletenessMixin, MapEntityDetail): - queryset = Site.objects.all() + queryset = Site.objects.all().prefetch_related( + Prefetch('view_points', + queryset=HDViewPoint.objects.select_related('content_type', 'license')) + ) def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) diff --git a/geotrek/trekking/views.py b/geotrek/trekking/views.py index c01f5f0150..ea9120ec58 100755 --- a/geotrek/trekking/views.py +++ b/geotrek/trekking/views.py @@ -20,7 +20,7 @@ from geotrek.common.mixins.api import APIViewSet from geotrek.common.mixins.forms import FormsetMixin from geotrek.common.mixins.views import CompletenessMixin, CustomColumnsMixin, MetaMixin -from geotrek.common.models import Attachment, RecordSource, TargetPortal, Label +from geotrek.common.models import Attachment, HDViewPoint, RecordSource, TargetPortal, Label from geotrek.common.permissions import PublicOrReadPermMixin from geotrek.common.views import DocumentPublic, DocumentBookletPublic, MarkupPublic from geotrek.common.viewsets import GeotrekMapentityViewSet @@ -100,7 +100,10 @@ def render_to_response(self, context): class TrekDetail(CompletenessMixin, MapEntityDetail): - queryset = Trek.objects.existing().select_related('topo_object').prefetch_related('view_points') + queryset = Trek.objects.existing().select_related('topo_object').prefetch_related( + Prefetch('view_points', + queryset=HDViewPoint.objects.select_related('content_type', 'license')) + ) @property def icon_sizes(self): @@ -329,7 +332,10 @@ def get_queryset(self): class POIDetail(CompletenessMixin, MapEntityDetail): - queryset = POI.objects.existing() + queryset = POI.objects.existing().prefetch_related( + Prefetch('view_points', + queryset=HDViewPoint.objects.select_related('content_type', 'license')) + ) def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) From 6b81c8bf749ac18d5186212ede702e5db21ea9fe Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Fri, 16 Dec 2022 10:35:16 +0100 Subject: [PATCH 077/103] :memo: Add changelog --- docs/changelog.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index f8507e7f79..0ea150e6e6 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,6 +5,11 @@ CHANGELOG 2.94.0+dev (XXXX-XX-XX) ----------------------- +**New feature** + +- Handle very high resolution images (HD Views) that will automatically be tiled, for ``Trek``, ``POI`` and ``Site`` +- Handle annotations on HD Views (points, lines, polygons and text) + **Warning** Bionic (Ubuntu 18.04) instances need to install deadsnakes PPA to handle python3.8: From f9c72d95c1fd7eee2dee26dc73a5927966a812bf Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 19 Dec 2022 10:20:49 +0100 Subject: [PATCH 078/103] :dizzy: Update nginx conf to allow uploading big image files --- conf/nginx.conf.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/nginx.conf.in b/conf/nginx.conf.in index 38c65efa06..a2b83759c6 100644 --- a/conf/nginx.conf.in +++ b/conf/nginx.conf.in @@ -25,7 +25,7 @@ server { access_log /var/log/nginx/geotrek_access.log; error_log /var/log/nginx/geotrek_error.log; - client_max_body_size 10M; + client_max_body_size 200M; location /static { expires 1d; From f64da3caabcdafdbf2c0a2a149ce956f4fe1b21c Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 19 Dec 2022 10:21:12 +0100 Subject: [PATCH 079/103] :memo: Update changelog with issue number --- docs/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 0ea150e6e6..0d21041ca9 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -7,7 +7,7 @@ CHANGELOG **New feature** -- Handle very high resolution images (HD Views) that will automatically be tiled, for ``Trek``, ``POI`` and ``Site`` +- Handle very high resolution images (HD Views) that will automatically be tiled, for ``Trek``, ``POI`` and ``Site`` (#3378) - Handle annotations on HD Views (points, lines, polygons and text) **Warning** From ee8f124aa6cecafe454071dd0f3524428ecdeab9 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 19 Dec 2022 10:49:11 +0100 Subject: [PATCH 080/103] :art: Code review --- geotrek/api/tests/test_v2.py | 10 ++---- geotrek/api/v2/views/common.py | 4 +-- geotrek/common/forms.py | 3 +- .../common/hdviewpoint_annotation_form.html | 2 +- geotrek/common/tests/test_forms.py | 5 +-- geotrek/common/tests/test_models.py | 4 +-- geotrek/common/tests/test_views.py | 4 +-- geotrek/common/translation.py | 2 +- geotrek/common/urls.py | 7 ++-- geotrek/common/views.py | 35 +++---------------- 10 files changed, 21 insertions(+), 55 deletions(-) diff --git a/geotrek/api/tests/test_v2.py b/geotrek/api/tests/test_v2.py index 24abc5f19e..55153b6de8 100644 --- a/geotrek/api/tests/test_v2.py +++ b/geotrek/api/tests/test_v2.py @@ -4,7 +4,6 @@ from dateutil.relativedelta import relativedelta from django.conf import settings -from django.contrib.contenttypes.models import ContentType from django.contrib.gis.geos import (LineString, MultiLineString, MultiPoint, Point, Polygon) from django.contrib.gis.geos.collections import GeometryCollection @@ -437,16 +436,13 @@ def setUpTestData(cls): cls.label_3 = common_factory.LabelFactory() cls.site2.labels.add(cls.label_3) cls.hdviewpoint_trek = common_factory.HDViewPointFactory( - content_type=ContentType.objects.get_for_model(trek_models.Trek), - object_id=cls.treks[0].pk + content_object=cls.treks[0] ) cls.hdviewpoint_poi = common_factory.HDViewPointFactory( - content_type=ContentType.objects.get_for_model(trek_models.POI), - object_id=cls.poi.pk + content_object=cls.poi ) cls.hdviewpoint_site = common_factory.HDViewPointFactory( - content_type=ContentType.objects.get_for_model(outdoor_factory.Site), - object_id=cls.site.pk + content_object=cls.site ) def check_number_elems_response(self, response, model): diff --git a/geotrek/api/v2/views/common.py b/geotrek/api/v2/views/common.py index e3e510d0f0..55872d4330 100644 --- a/geotrek/api/v2/views/common.py +++ b/geotrek/api/v2/views/common.py @@ -112,9 +112,9 @@ class FileTypeViewSet(api_viewsets.GeotrekViewSet): queryset = common_models.FileType.objects.all() -class HDViewPointViewSet(api_viewsets.GeotrekViewSet): +class HDViewPointViewSet(api_viewsets.GeotrekGeometricViewset): serializer_class = api_serializers.HDViewPointSerializer - filter_backends = api_viewsets.GeotrekViewSet.filter_backends + (api_filters.TrekAndSiteAndPOIRelatedPublishedNotDeletedByPortalFilter,) + filter_backends = api_viewsets.GeotrekGeometricViewset.filter_backends + (api_filters.TrekAndSiteAndPOIRelatedPublishedNotDeletedByPortalFilter,) def get_queryset(self): activate(self.request.GET.get('language')) diff --git a/geotrek/common/forms.py b/geotrek/common/forms.py index 3ab9928932..b764ad722d 100644 --- a/geotrek/common/forms.py +++ b/geotrek/common/forms.py @@ -504,8 +504,7 @@ def __init__(self, *args, **kwargs): self._init_layout() def _init_layout(self): - """ Setup form buttons, submit URL, layout - """ + """ Setup form buttons, submit URL, layout """ actions = [ Button('cancel', _('Cancel'), css_class="btn btn-light ml-auto mr-2"), diff --git a/geotrek/common/templates/common/hdviewpoint_annotation_form.html b/geotrek/common/templates/common/hdviewpoint_annotation_form.html index c895f7c549..1e761ee33e 100644 --- a/geotrek/common/templates/common/hdviewpoint_annotation_form.html +++ b/geotrek/common/templates/common/hdviewpoint_annotation_form.html @@ -1,6 +1,6 @@ {% extends "mapentity/mapentity_form.html" %} {% load i18n static crispy_forms_tags %} - +{% block title %}{{ object.title }} {{ block.super }}{% endblock title %} {% block mainpanel %}
diff --git a/geotrek/common/tests/test_forms.py b/geotrek/common/tests/test_forms.py index 99b7af6f08..eed68fd074 100644 --- a/geotrek/common/tests/test_forms.py +++ b/geotrek/common/tests/test_forms.py @@ -1,13 +1,14 @@ import json from django.test import TestCase from geotrek.common.forms import HDViewPointAnnotationForm -from geotrek.common.tests.factories import HDViewPointFactory, LicenseFactory +from geotrek.common.tests.factories import HDViewPointFactory +from geotrek.trekking.tests.factories import TrekFactory class HDViewPointAnnotateFormTest(TestCase): @classmethod def setUpTestData(cls): - cls.vp = HDViewPointFactory(content_object=LicenseFactory()) + cls.vp = HDViewPointFactory(content_object=TrekFactory()) def test_annotation_form(self): geojson = '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [7903.518111498841, 3618.542606516288]}, "properties": {"name": "Test point", "annotationId": 13, "annotationType": "point"}}]}' diff --git a/geotrek/common/tests/test_models.py b/geotrek/common/tests/test_models.py index 9c10775c82..188bfb7f5c 100644 --- a/geotrek/common/tests/test_models.py +++ b/geotrek/common/tests/test_models.py @@ -61,10 +61,8 @@ def setUpTestData(cls): structure = StructureFactory(name="MyStructure") cls.trek = TrekFactory(structure=structure) cls.vp = HDViewPointFactory(content_object=cls.trek) - profile = UserProfileFactory(structure=structure) cls.user = UserFactory() - cls.user.profile = profile - cls.user.save() + UserProfileFactory(structure=structure, user=cls.user) def test_thumbnail_url(self): self.assertEqual( diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 47e7983379..505c1c3c23 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -426,7 +426,6 @@ def test_crud_view(self): Test CRUD rights and views for HD View Point object """ self.client.force_login(user=self.user_perm) - ContentType.objects.clear_cache() # Sometimes cache can contain bad values # Test create view response = self.client.get('%s?object_id=%s&content_type=%s' % (HDViewPoint.get_add_url(), self.trek.pk, @@ -438,7 +437,7 @@ def test_crud_view(self): data = { 'picture': img, 'title_en': "Un titre", - 'author_en': "Someone", + 'author': "Someone", 'legend_en': "Something", 'geom': "SRID=2154;POINT(0 0)", "license": self.license.pk @@ -528,7 +527,6 @@ def test_annotate_view(self): response = self.client.get(vp.get_annotate_url()) self.assertEqual(response.status_code, 200) self.assertIsInstance(response.context['form'], HDViewPointAnnotationForm) - self.assertEqual(response.context['title'], vp.title) def test_API_viewset(self): vp = HDViewPointFactory(content_object=self.trek) diff --git a/geotrek/common/translation.py b/geotrek/common/translation.py index 607a970c3c..8d6415121b 100644 --- a/geotrek/common/translation.py +++ b/geotrek/common/translation.py @@ -16,7 +16,7 @@ class LabelTO(TranslationOptions): class HDViewPointTO(TranslationOptions): - fields = ('author', 'title', 'legend') + fields = ('title', 'legend') translator.register(Theme, ThemeTO) diff --git a/geotrek/common/urls.py b/geotrek/common/urls.py index 1d611772f5..0abffdd1ea 100644 --- a/geotrek/common/urls.py +++ b/geotrek/common/urls.py @@ -1,5 +1,4 @@ from django.urls import path, converters, register_converter -from geotrek.common.models import HDViewPoint from mapentity.registry import MapEntityOptions from rest_framework.routers import DefaultRouter @@ -35,9 +34,9 @@ class LangConverter(converters.StringConverter): ] rest_router = DefaultRouter(trailing_slash=False) -rest_router.register(r'api/' + HDViewPoint._meta.model_name + '/drf/' + HDViewPoint._meta.model_name + 's', - HDViewPointAPIViewSet, basename=f"{HDViewPoint._meta.model_name}-drf") -rest_router.register(r'api/' + HDViewPoint._meta.model_name + '/drf/' + HDViewPoint._meta.model_name + 's', TiledHDViewPointViewSet) +rest_router.register(r'api/hdviewpoint/drf/hdviewpoints', + HDViewPointAPIViewSet, basename="hdviewpoint-drf") +rest_router.register(r'api/hdviewpoint/drf/hdviewpoints', TiledHDViewPointViewSet) urlpatterns += rest_router.urls diff --git a/geotrek/common/views.py b/geotrek/common/views.py index ff3c17f0b9..d556d3d6fe 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -334,28 +334,20 @@ def get_queryset(self): return HDViewPoint.objects.annotate(api_geom=Transform("geom", settings.API_SRID)) -class HDViewPointDetail(CompletenessMixin, mapentity_views.MapEntityDetail): +class HDViewPointDetail(CompletenessMixin, mapentity_views.MapEntityDetail, LoginRequiredMixin): model = HDViewPoint queryset = HDViewPoint.objects.all().select_related('content_type', 'license') - @method_decorator(login_required) - def dispatch(self, *args, **kwargs): - return super().dispatch(*args, **kwargs) - def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) context['can_edit'] = self.get_object().content_object.same_structure(self.request.user) return context -class HDViewPointCreate(mapentity_views.MapEntityCreate): +class HDViewPointCreate(mapentity_views.MapEntityCreate, LoginRequiredMixin): model = HDViewPoint form_class = HDViewPointForm - @method_decorator(login_required) - def dispatch(self, *args, **kwargs): - return super().dispatch(*args, **kwargs) - def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs['content_type'] = self.request.GET.get('content_type') @@ -363,40 +355,23 @@ def get_form_kwargs(self): return kwargs -class HDViewPointUpdate(mapentity_views.MapEntityUpdate): +class HDViewPointUpdate(mapentity_views.MapEntityUpdate, LoginRequiredMixin): queryset = HDViewPoint.objects.all() form_class = HDViewPointForm - @method_decorator(login_required) - def dispatch(self, *args, **kwargs): - return super().dispatch(*args, **kwargs) - -class HDViewPointDelete(mapentity_views.MapEntityDelete): +class HDViewPointDelete(mapentity_views.MapEntityDelete, LoginRequiredMixin): model = HDViewPoint - @method_decorator(login_required) - def dispatch(self, *args, **kwargs): - return super().dispatch(*args, **kwargs) - def get_success_url(self): return self.get_object().content_object.get_detail_url() -class HDViewPointAnnotate(UpdateView): +class HDViewPointAnnotate(UpdateView, LoginRequiredMixin): model = HDViewPoint form_class = HDViewPointAnnotationForm template_name_suffix = '_annotation_form' - @method_decorator(login_required) - def dispatch(self, *args, **kwargs): - return super().dispatch(*args, **kwargs) - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context['title'] = self.get_object().title - return context - class TiledHDViewPointViewSet(mixins.ListModelMixin, viewsets.GenericViewSet, LargeImageFileDetailMixin): queryset = HDViewPoint.objects.all() From 1f1576c91c3ad885b0a59156faf133eb5cb350df Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 19 Dec 2022 11:31:45 +0100 Subject: [PATCH 081/103] :dizzy: Display HD views annotation form buttons above viewer --- geotrek/common/static/common/style.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index adf8e6527d..6f85cd766f 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -27,6 +27,7 @@ fieldset { overflow: hidden; border: 1px solid lightgrey; border-radius: 5px; + z-index: -1; } #hdviewpoint-map.large { @@ -289,4 +290,4 @@ li.history.hdviewpoint > a, li.history.hdviewpoint button:first-child { background: url(/static/images/hdviewpoint-16.png) no-repeat; background-position: left center; -} +} \ No newline at end of file From 8bf831601a291b8636cc56e80d40a259d54f9d32 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 19 Dec 2022 11:32:03 +0100 Subject: [PATCH 082/103] :art: Merge migrations --- geotrek/common/migrations/0029_hdviewpoint.py | 9 +++++---- .../0030_alter_hdviewpoint_picture.py | 18 ------------------ .../0031_alter_hdviewpoint_options.py | 17 ----------------- geotrek/common/models.py | 2 +- 4 files changed, 6 insertions(+), 40 deletions(-) delete mode 100644 geotrek/common/migrations/0030_alter_hdviewpoint_picture.py delete mode 100644 geotrek/common/migrations/0031_alter_hdviewpoint_options.py diff --git a/geotrek/common/migrations/0029_hdviewpoint.py b/geotrek/common/migrations/0029_hdviewpoint.py index ef6a27679f..b0389f613e 100644 --- a/geotrek/common/migrations/0029_hdviewpoint.py +++ b/geotrek/common/migrations/0029_hdviewpoint.py @@ -1,9 +1,9 @@ -# Generated by Django 3.2.15 on 2022-10-20 15:07 +# Generated by Django 3.2.16 on 2022-12-19 10:04 import django.contrib.gis.db.models.fields -from django.conf import settings from django.db import migrations, models import django.db.models.deletion +from django.conf import settings import uuid @@ -21,10 +21,10 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date_insert', models.DateTimeField(auto_now_add=True, verbose_name='Insertion date')), ('date_update', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Update date')), - ('picture', models.FileField(upload_to='', verbose_name='Picture')), + ('picture', models.FileField(upload_to='hdviewpoints/', verbose_name='Picture')), ('geom', django.contrib.gis.db.models.fields.PointField(srid=settings.SRID, verbose_name='Location')), ('object_id', models.PositiveIntegerField()), - ('annotations', models.JSONField(blank=True, null=True, verbose_name='Annotations')), + ('annotations', models.JSONField(blank=True, default=dict, verbose_name='Annotations')), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('author', models.CharField(blank=True, default='', help_text='Original creator', max_length=128, verbose_name='Author')), ('title', models.CharField(help_text='Title for this view point', max_length=1024, verbose_name='Title')), @@ -35,6 +35,7 @@ class Migration(migrations.Migration): options={ 'verbose_name': 'HD View', 'verbose_name_plural': 'HD Views', + 'permissions': (('read_hdviewpoint', 'Can read hd view point'),), }, ), ] diff --git a/geotrek/common/migrations/0030_alter_hdviewpoint_picture.py b/geotrek/common/migrations/0030_alter_hdviewpoint_picture.py deleted file mode 100644 index ea29a7315b..0000000000 --- a/geotrek/common/migrations/0030_alter_hdviewpoint_picture.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.15 on 2022-11-07 09:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('common', '0029_hdviewpoint'), - ] - - operations = [ - migrations.AlterField( - model_name='hdviewpoint', - name='picture', - field=models.FileField(upload_to='hdviewpoints/', verbose_name='Picture'), - ), - ] diff --git a/geotrek/common/migrations/0031_alter_hdviewpoint_options.py b/geotrek/common/migrations/0031_alter_hdviewpoint_options.py deleted file mode 100644 index 5b2f80ae04..0000000000 --- a/geotrek/common/migrations/0031_alter_hdviewpoint_options.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2.15 on 2022-11-29 09:10 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('common', '0030_alter_hdviewpoint_picture'), - ] - - operations = [ - migrations.AlterModelOptions( - name='hdviewpoint', - options={'permissions': (('read_hdviewpoint', 'Can read hd view point'),), 'verbose_name': 'HD View', 'verbose_name_plural': 'HD Views'}, - ), - ] diff --git a/geotrek/common/models.py b/geotrek/common/models.py index 4bcd5c2285..0af537f928 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -279,7 +279,7 @@ class HDViewPoint(TimeStampedModelMixin): object_id = models.PositiveIntegerField() content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) content_object = GenericForeignKey('content_type', 'object_id') - annotations = models.JSONField(null=True, verbose_name=_("Annotations"), blank=True) + annotations = models.JSONField(verbose_name=_("Annotations"), blank=True, default=dict) uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) author = models.CharField(blank=True, default='', max_length=128, verbose_name=_('Author'), From 96e61031a7285d1a4bb5a1d007ef8e57bd3c787a Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 19 Dec 2022 12:53:53 +0100 Subject: [PATCH 083/103] :recycle: Refactor APIv2 serializers for `date_insert` and `date_update` --- geotrek/api/v2/serializers.py | 62 ++++++++++++++++------------------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/geotrek/api/v2/serializers.py b/geotrek/api/v2/serializers.py index 95df832b55..970dd87dfd 100644 --- a/geotrek/api/v2/serializers.py +++ b/geotrek/api/v2/serializers.py @@ -61,6 +61,14 @@ class Meta: auto_bbox = True +class TimeStampedSerializer(serializers.ModelSerializer): + create_datetime = serializers.DateTimeField(source='date_insert') + update_datetime = serializers.DateTimeField(source='date_update') + + class Meta: + fields = ('create_datetime', 'update_datetime') + + def override_serializer(format_output, base_serializer_class): """ Override Serializer switch output format and dimension data @@ -333,7 +341,7 @@ class Meta: fields = ('id', 'advice', 'filter', 'name', 'pictogram') -class HDViewPointSerializer(serializers.ModelSerializer): +class HDViewPointSerializer(TimeStampedSerializer): geometry = geo_serializers.GeometryField(read_only=True, source="geom_transformed", precision=7) picture_tiles_url = serializers.SerializerMethodField() thumbnail_url = serializers.SerializerMethodField() @@ -344,8 +352,6 @@ class HDViewPointSerializer(serializers.ModelSerializer): read_only=True, slug_field='label' ) - create_datetime = serializers.DateTimeField(source='date_insert') - update_datetime = serializers.DateTimeField(source='date_update') def get_picture_tiles_url(self, obj): return build_url(self, obj.get_generic_picture_tile_url()) @@ -371,11 +377,11 @@ def get_poi(self, obj): return {'uuid': related_obj.uuid, 'id': related_obj.id} return None - class Meta: + class Meta(TimeStampedSerializer.Meta): model = common_models.HDViewPoint - fields = ( - 'id', 'annotations', 'author', 'create_datetime', 'geometry', 'legend', 'license', 'picture_tiles_url', - 'poi', 'title', 'site', 'trek', 'thumbnail_url', 'update_datetime', 'uuid' + fields = TimeStampedSerializer.Meta.fields + ( + 'id', 'annotations', 'author', 'geometry', 'legend', 'license', 'picture_tiles_url', + 'poi', 'title', 'site', 'trek', 'thumbnail_url', 'uuid' ) @@ -427,11 +433,9 @@ class Meta: model = tourism_models.TouristicEventType fields = ('id', 'pictogram', 'type') - class TouristicModelSerializer(PDFSerializerMixin, DynamicFieldsMixin, serializers.ModelSerializer): + class TouristicModelSerializer(PDFSerializerMixin, DynamicFieldsMixin, TimeStampedSerializer): geometry = geo_serializers.GeometryField(read_only=True, source="geom_transformed", precision=7) accessibility = serializers.SerializerMethodField() - create_datetime = serializers.DateTimeField(source='date_insert') - update_datetime = serializers.DateTimeField(source='date_update') external_id = serializers.CharField(source='eid') cities = serializers.SerializerMethodField() name = serializers.SerializerMethodField() @@ -464,15 +468,15 @@ class TouristicContentSerializer(TouristicModelSerializer): types = serializers.SerializerMethodField() url = HyperlinkedIdentityField(view_name='apiv2:touristiccontent-detail') - class Meta: + class Meta(TimeStampedSerializer.Meta): model = tourism_models.TouristicContent - fields = ( + fields = TimeStampedSerializer.Meta.fields + ( 'id', 'accessibility', 'attachments', 'approved', 'category', 'description', 'description_teaser', 'departure_city', 'geometry', 'label_accessibility', - 'practical_info', 'url', 'cities', 'create_datetime', + 'practical_info', 'url', 'cities', 'external_id', 'name', 'pdf', 'portal', 'provider', 'published', 'source', 'structure', 'themes', - 'update_datetime', 'types', 'contact', 'email', + 'types', 'contact', 'email', 'website', 'reservation_system', 'reservation_id', 'uuid' ) @@ -523,17 +527,17 @@ def get_participant_number(self, obj): def get_end_date(self, obj): return obj.end_date or obj.begin_date - class Meta: + class Meta(TimeStampedSerializer.Meta): model = tourism_models.TouristicEvent - fields = ( + fields = TimeStampedSerializer.Meta.fields + ( 'id', 'accessibility', 'approved', 'attachments', 'begin_date', 'bookable', 'booking', 'cancellation_reason', 'cancelled', 'capacity', 'cities', - 'contact', 'create_datetime', 'description', 'description_teaser', 'duration', + 'contact', 'description', 'description_teaser', 'duration', 'email', 'end_date', 'end_time', 'external_id', 'geometry', 'meeting_point', 'meeting_time', 'name', 'organizer', 'participant_number', 'pdf', 'place', 'portal', 'practical_info', 'provider', 'published', 'source', 'speaker', 'start_time', 'structure', 'target_audience', 'themes', 'type', - 'update_datetime', 'url', 'uuid', 'website' + 'url', 'uuid', 'website' ) class TouristicEventPlaceSerializer(serializers.ModelSerializer): @@ -624,8 +628,8 @@ class TrekSerializer(PDFSerializerMixin, DynamicFieldsMixin, serializers.ModelSe arrival = serializers.SerializerMethodField() external_id = serializers.CharField(source='eid') second_external_id = serializers.CharField(source='eid2') - create_datetime = serializers.SerializerMethodField() - update_datetime = serializers.SerializerMethodField() + create_datetime = serializers.DateTimeField(source='topo_object.date_insert') + update_datetime = serializers.DateTimeField(source='topo_object.date_update') attachments = AttachmentSerializer(many=True, source='sorted_attachments') attachments_accessibility = AttachmentAccessibilitySerializer(many=True) gear = serializers.SerializerMethodField() @@ -653,12 +657,6 @@ class TrekSerializer(PDFSerializerMixin, DynamicFieldsMixin, serializers.ModelSe def get_gear(self, obj): return get_translation_or_dict('gear', self, obj) - def get_update_datetime(self, obj): - return obj.topo_object.date_update - - def get_create_datetime(self, obj): - return obj.topo_object.date_insert - def get_published(self, obj): return get_translation_or_dict('published', self, obj) @@ -880,7 +878,7 @@ class Meta: fields = ('id', 'name') if 'geotrek.sensitivity' in settings.INSTALLED_APPS: - class SensitiveAreaSerializer(DynamicFieldsMixin, serializers.ModelSerializer): + class SensitiveAreaSerializer(DynamicFieldsMixin, TimeStampedSerializer): url = HyperlinkedIdentityField(view_name='apiv2:sensitivearea-detail') name = serializers.SerializerMethodField() elevation = serializers.SerializerMethodField() @@ -889,8 +887,6 @@ class SensitiveAreaSerializer(DynamicFieldsMixin, serializers.ModelSerializer): practices = serializers.PrimaryKeyRelatedField(many=True, source='species.practices', read_only=True) info_url = serializers.URLField(source='species.url') structure = serializers.CharField(source='structure.name') - create_datetime = serializers.DateTimeField(source='date_insert') - update_datetime = serializers.DateTimeField(source='date_update') published = serializers.BooleanField() geometry = geo_serializers.GeometryField(read_only=True, source="geom_transformed", precision=7) species_id = serializers.SerializerMethodField() @@ -917,13 +913,13 @@ def get_kml_url(self, obj): url = reverse('sensitivity:sensitivearea_kml_detail', kwargs={'lang': get_language(), 'pk': obj.pk}) return build_url(self, url) - class Meta: + class Meta(TimeStampedSerializer.Meta): model = sensitivity_models.SensitiveArea - fields = ( - 'id', 'contact', 'create_datetime', 'description', 'elevation', + fields = TimeStampedSerializer.Meta.fields + ( + 'id', 'contact', 'description', 'elevation', 'geometry', 'info_url', 'kml_url', 'name', 'period', 'practices', 'published', 'species_id', 'provider', 'structure', - 'update_datetime', 'url' + 'url' ) class BubbleSensitiveAreaSerializer(SensitiveAreaSerializer): From a8b4297cdf43677f08eb0689e5885bb20e098382 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 19 Dec 2022 14:46:23 +0100 Subject: [PATCH 084/103] :dizzy: Display HD views annotation form buttons above viewer --- geotrek/common/static/common/style.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index 6f85cd766f..780727644b 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -27,7 +27,6 @@ fieldset { overflow: hidden; border: 1px solid lightgrey; border-radius: 5px; - z-index: -1; } #hdviewpoint-map.large { @@ -290,4 +289,7 @@ li.history.hdviewpoint > a, li.history.hdviewpoint button:first-child { background: url(/static/images/hdviewpoint-16.png) no-repeat; background-position: left center; +} +.form-actions { + z-index: 1000; } \ No newline at end of file From fb5cf9c38a77d5c97842be8c8446e603708b4790 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Mon, 19 Dec 2022 14:54:51 +0100 Subject: [PATCH 085/103] :dizzy: Add link to detail page in HD Views fragment --- .../common/templates/common/hdviewpoint_detail_fragment.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html index a9914ea371..e4a0654140 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html +++ b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html @@ -46,8 +46,10 @@

{% trans "HD Views" %} {{ viewpoint.date_update }} {% if user.profile.structure == object.structure or perms.authent.can_bypass_structure and perms.common.change_hdviewpoint or perms.common.delete_hdviewpoint%} + + {% trans "Details" %} + {% if perms.common.change_hdviewpoint %} -   {% trans "Update" %} From 6dcdbb9fd3cf2e92d490a64888a844e66dcf12cf Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 20 Dec 2022 11:10:52 +0100 Subject: [PATCH 086/103] :lipstick: Validate geometry changes in annotations form --- geotrek/common/static/common/js/annotations.js | 14 ++++++++++++++ .../common/hdviewpoint_annotation_form.html | 1 + 2 files changed, 15 insertions(+) diff --git a/geotrek/common/static/common/js/annotations.js b/geotrek/common/static/common/js/annotations.js index cc4bd1b5e4..05108ec381 100644 --- a/geotrek/common/static/common/js/annotations.js +++ b/geotrek/common/static/common/js/annotations.js @@ -240,6 +240,10 @@ function initAnnotationsWidget(map) { entry.attr({ id: '', 'annotation-id': id }); entry.on('click', () => edit_label(entry)); entry.find('.entry-name').text(annotation.name()); + if (query.editing == id) { + entry.find('.entry-adjust').hide(); + entry.find('.entry-validate').show(); + } $('#annotationlist').append(entry); }); $('#annotationheader').css( @@ -304,9 +308,19 @@ function initAnnotationsWidget(map) { id = entry.attr('annotation-id'), annotation = layer.annotationById(id); switch (action) { + case 'validate': + layer.mode(null); + query.editing = undefined; + setQuery(query) + layer.draw(); + handleAnnotationChange(evt); + break; case 'adjust': layer.mode(layer.modes.edit, annotation); + query.editing = id; + setQuery(query) layer.draw(); + handleAnnotationChange(evt); break; case 'remove': layer.removeAnnotation(annotation); diff --git a/geotrek/common/templates/common/hdviewpoint_annotation_form.html b/geotrek/common/templates/common/hdviewpoint_annotation_form.html index 1e761ee33e..9bedd88fe2 100644 --- a/geotrek/common/templates/common/hdviewpoint_annotation_form.html +++ b/geotrek/common/templates/common/hdviewpoint_annotation_form.html @@ -18,6 +18,7 @@
Sample + From 2efcb97a181cbf3c4a5e1d7be6f730f904e4d5de Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 20 Dec 2022 15:25:52 +0100 Subject: [PATCH 087/103] :memo: Update changelog with nginx changes --- docs/changelog.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 0d21041ca9..da76383c2e 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -24,6 +24,11 @@ In preparation for HD Views developments (PR #3298) - Bump MapEntity to 8.3.0 - Add libvips to dependencies +**Improvments** + +- Update maximum request size in Nginx from 10M to 200M to allow uploading HD pictures (#3378) + + 2.94.0 (2022-12-12) ----------------------- From e9e84c5ab2f9b770822000f5ba40025d0c15f54a Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 20 Dec 2022 15:47:54 +0100 Subject: [PATCH 088/103] :recycle: Refactor HD Views using `MapEntityMixin` --- geotrek/common/filters.py | 12 ++- geotrek/common/migrations/0029_hdviewpoint.py | 4 +- geotrek/common/models.py | 84 ++----------------- geotrek/common/serializers.py | 28 ++++++- geotrek/common/static/common/style.css | 5 -- .../templates/common/hdviewpoint_detail.html | 11 --- .../common/hdviewpoint_detail_fragment.html | 2 +- geotrek/common/tests/test_models.py | 11 +-- geotrek/common/tests/test_views.py | 4 +- geotrek/common/urls.py | 17 ++-- geotrek/common/views.py | 49 ++++++++--- 11 files changed, 92 insertions(+), 135 deletions(-) diff --git a/geotrek/common/filters.py b/geotrek/common/filters.py index 5b62d48ce0..78c5a0bc8f 100644 --- a/geotrek/common/filters.py +++ b/geotrek/common/filters.py @@ -1,6 +1,9 @@ from django.utils.translation import gettext_lazy as _ +from django_filters import ModelMultipleChoiceFilter, RangeFilter +from mapentity.filters import MapEntityFilterSet + +from geotrek.common.models import HDViewPoint -from django_filters import RangeFilter, ModelMultipleChoiceFilter from .fields import OneLineRangeField @@ -27,3 +30,10 @@ def get_queryset(self, request=None): if self.queryset is not None: return self.queryset return self.model.objects.all() + + +class HDViewPointFilterSet(MapEntityFilterSet): + + class Meta(MapEntityFilterSet.Meta): + model = HDViewPoint + fields = ['title'] diff --git a/geotrek/common/migrations/0029_hdviewpoint.py b/geotrek/common/migrations/0029_hdviewpoint.py index b0389f613e..1a68f39539 100644 --- a/geotrek/common/migrations/0029_hdviewpoint.py +++ b/geotrek/common/migrations/0029_hdviewpoint.py @@ -1,9 +1,9 @@ -# Generated by Django 3.2.16 on 2022-12-19 10:04 +# Generated by Django 3.2.16 on 2022-12-20 16:02 +from django.conf import settings import django.contrib.gis.db.models.fields from django.db import migrations, models import django.db.models.deletion -from django.conf import settings import uuid diff --git a/geotrek/common/models.py b/geotrek/common/models.py index 0af537f928..7c00d633d5 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -3,7 +3,6 @@ from colorfield.fields import ColorField from django.conf import settings -from django.contrib import auth from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.contrib.gis.db import models as gis_models @@ -13,14 +12,17 @@ from django.urls import reverse from django.utils.http import urlencode from django.utils.translation import gettext_lazy as _ +from mapentity.models import MapEntityMixin from paperclip.models import Attachment as BaseAttachment from paperclip.models import FileType as BaseFileType from paperclip.models import License as BaseLicense from PIL import Image from geotrek.authent.models import StructureOrNoneRelated + from .managers import AccessibilityAttachmentManager -from .mixins.models import OptionalPictogramMixin, PictogramMixin, TimeStampedModelMixin +from .mixins.models import (OptionalPictogramMixin, PictogramMixin, + TimeStampedModelMixin) def attachment_accessibility_upload(instance, filename): @@ -272,7 +274,7 @@ class Meta: abstract = True -class HDViewPoint(TimeStampedModelMixin): +class HDViewPoint(TimeStampedModelMixin, MapEntityMixin): picture = models.FileField(verbose_name=_("Picture"), upload_to="hdviewpoints/") geom = gis_models.PointField(verbose_name=_("Location"), srid=settings.SRID) @@ -305,28 +307,10 @@ class Meta: def __str__(self): return self.title - @property - def structure(self): - return self.content_object.structure - - def same_structure(self, user): - """ Returns True if the user is in the same structure or has - bypass_structure permission, False otherwise. """ - return (user.profile.structure == self.structure - or user.is_superuser - or user.has_perm('authent.can_bypass_structure')) - @property def full_url(self): return reverse('common:hdviewpoint_detail', kwargs={'pk': self.pk}) - def get_absolute_url(self): - return self.full_url - - @classmethod - def get_add_url(cls): - return reverse('common:hdviewpoint_add') - @classmethod def get_list_url(cls): return reverse('admin:common_hdviewpoint_changelist') @@ -339,67 +323,9 @@ def get_generic_picture_tile_url(self): url = self.get_picture_tile_url(0, 0, 0).replace("/0/0/0.png", "/{z}/{x}/{y}.png") return url - def get_layer_detail_url(self): - return reverse("{app_name}:{model_name}-drf-detail".format(app_name=self._meta.app_label.lower(), - model_name=self._meta.model_name.lower()), - kwargs={"format": "geojson", "pk": self.pk}) - - def get_detail_url(self): - return reverse('common:hdviewpoint_detail', args=[self.pk]) - @property def thumbnail_url(self): return reverse('common:hdviewpoint-thumbnail', kwargs={'pk': self.pk, 'fmt': 'png'}) - def get_update_url(self): - return reverse('common:hdviewpoint_change', args=[self.pk]) - def get_annotate_url(self): return reverse('common:hdviewpoint_annotate', args=[self.pk]) - - def get_delete_url(self): - return reverse('common:hdviewpoint_delete', args=[self.pk]) - - @classmethod - def get_permission_codename(cls, entity_kind): - operations = { - 'update': 'change', - 'update_geom': 'change_geom', - 'detail': 'read', - 'layer': 'read', - 'list': 'read', - '-drf-list': 'read', - 'markup': 'read', - } - perm = operations.get(entity_kind, entity_kind) - opts = cls._meta - appname = opts.app_label.lower() - return '%s.%s' % (appname, auth.get_permission_codename(perm, opts)) - - @classmethod - def get_content_type_id(cls): - return ContentType.objects.get_for_model(cls).pk - - def get_geom(self): - return self.geom - - def get_map_image_extent(self, srid=settings.API_SRID): - obj = self.geom - obj.transform(srid) - return obj.extent - - @classmethod - def get_create_label(cls): - return _("Add a new HD view") - - @property - def icon_small(self): - return 'images/hdviewpoint-16.png' - - @property - def icon_big(self): - return 'images/hdviewpoint-96.png' - - @property - def modelname(self): - return self._meta.model_name diff --git a/geotrek/common/serializers.py b/geotrek/common/serializers.py index 8b424bf1f4..342f9a6585 100644 --- a/geotrek/common/serializers.py +++ b/geotrek/common/serializers.py @@ -1,13 +1,16 @@ from django.conf import settings -from django.urls import reverse from django.db import models as django_db_models from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.translation import get_language +from mapentity.serializers import MapentityGeojsonModelSerializer from rest_framework import serializers as rest_serializers -from rest_framework_gis.fields import GeometryField +from rest_framework_gis.fields import (GeometryField, + GeometrySerializerMethodField) from rest_framework_gis.serializers import GeoFeatureModelSerializer -from .models import HDViewPoint, Theme, RecordSource, TargetPortal, FileType, Attachment, Label +from .models import (Attachment, FileType, HDViewPoint, Label, RecordSource, + TargetPortal, Theme) class TranslatedModelSerializer(rest_serializers.ModelSerializer): @@ -94,7 +97,7 @@ class Meta: fields = ('id', 'pictogram', 'name', 'advice', 'filter_rando') -class HDViewPointAPISerializer(TranslatedModelSerializer): +class HDViewPointSerializer(TranslatedModelSerializer): class Meta: model = HDViewPoint fields = ( @@ -102,6 +105,23 @@ class Meta: ) +class HDViewPointGeoJSONSerializer(MapentityGeojsonModelSerializer): + api_geom = GeometrySerializerMethodField() + + def get_api_geom(self, obj): + return obj.geom.transform(4326, clone=True) + + class Meta(MapentityGeojsonModelSerializer.Meta): + model = HDViewPoint + fields = ('id', 'title') + + +class HDViewPointAPISerializer(HDViewPointSerializer): + class Meta(HDViewPointSerializer.Meta): + id_field = 'id' + fields = HDViewPointSerializer.Meta.fields + + class HDViewPointAPIGeoJSONSerializer(GeoFeatureModelSerializer, HDViewPointAPISerializer): # Annotated geom field with API_SRID api_geom = GeometryField(read_only=True, precision=7) diff --git a/geotrek/common/static/common/style.css b/geotrek/common/static/common/style.css index 780727644b..a17ca2b29b 100644 --- a/geotrek/common/static/common/style.css +++ b/geotrek/common/static/common/style.css @@ -285,11 +285,6 @@ fieldset { visibility: visible; opacity: 1; } -li.history.hdviewpoint > a, -li.history.hdviewpoint button:first-child { - background: url(/static/images/hdviewpoint-16.png) no-repeat; - background-position: left center; -} .form-actions { z-index: 1000; } \ No newline at end of file diff --git a/geotrek/common/templates/common/hdviewpoint_detail.html b/geotrek/common/templates/common/hdviewpoint_detail.html index 01ed4650b0..bd7a8d180b 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail.html +++ b/geotrek/common/templates/common/hdviewpoint_detail.html @@ -4,17 +4,6 @@ {% block head %} {% block title %}{{ object }} | {{ block.super }}{% endblock title %} {{ block.super }} - {% endblock head %} {% block mainpanel %}
diff --git a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html index e4a0654140..94cdf1eaaf 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html +++ b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html @@ -51,7 +51,7 @@

{% trans "HD Views" %} {% if perms.common.change_hdviewpoint %}   - + {% trans "Update" %} {% endif %} diff --git a/geotrek/common/tests/test_models.py b/geotrek/common/tests/test_models.py index 188bfb7f5c..d3b1fd4416 100644 --- a/geotrek/common/tests/test_models.py +++ b/geotrek/common/tests/test_models.py @@ -60,7 +60,7 @@ class HDViewPointTestCase(TestCase): def setUpTestData(cls): structure = StructureFactory(name="MyStructure") cls.trek = TrekFactory(structure=structure) - cls.vp = HDViewPointFactory(content_object=cls.trek) + cls.vp = HDViewPointFactory(content_object=cls.trek, title='Panorama') cls.user = UserFactory() UserProfileFactory(structure=structure, user=cls.user) @@ -74,9 +74,6 @@ def test_tiles_url(self): self.vp.get_generic_picture_tile_url(), f"/api/hdviewpoint/drf/hdviewpoints/{self.vp.pk}/tiles/{{z}}/{{x}}/{{y}}.png?source=vips" ) - def test_icons(self): - self.assertIn('hdviewpoint-16.png', self.vp.icon_small) - self.assertIn('hdviewpoint-96.png', self.vp.icon_big) - - def test_same_structure(self): - self.assertTrue(self.vp.same_structure(self.user)) + def test_properties(self): + self.assertEqual(str(self.vp), 'Panorama') + self.assertIn('admin/', self.vp.get_list_url()) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 505c1c3c23..07d555c95f 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -412,8 +412,8 @@ def setUpTestData(cls): cls.license = LicenseFactory() # Create user with proper permissions cls.user_perm = UserFactory.create() - read_perm = Permission.objects.get(codename="read_hdviewpoint") add_perm = Permission.objects.get(codename="add_hdviewpoint") + read_perm = Permission.objects.get(codename="read_hdviewpoint") update_perm = Permission.objects.get(codename="change_hdviewpoint") delete_perm = Permission.objects.get(codename="delete_hdviewpoint") cls.user_perm.user_permissions.add(add_perm, read_perm, update_perm, delete_perm) @@ -470,7 +470,7 @@ def test_crud_view(self): 'geom': "SRID=2154;POINT(0 0)" } response = self.client.post(vp.get_update_url(), data) - self.assertRedirects(response, f"/hdviewpoint/{vp.pk}", status_code=302, target_status_code=200, msg_prefix='', fetch_redirect_response=True) + self.assertRedirects(response, f"/hdviewpoint/{vp.pk}/", status_code=302, target_status_code=200, msg_prefix='', fetch_redirect_response=True) vp = HDViewPoint.objects.first() self.assertEqual(vp.legend, "Something else") self.assertEqual(vp.license, None) diff --git a/geotrek/common/urls.py b/geotrek/common/urls.py index 0abffdd1ea..42a162678b 100644 --- a/geotrek/common/urls.py +++ b/geotrek/common/urls.py @@ -1,10 +1,10 @@ from django.urls import path, converters, register_converter -from mapentity.registry import MapEntityOptions +from geotrek.common.models import HDViewPoint +from mapentity.registry import MapEntityOptions, registry from rest_framework.routers import DefaultRouter -from .views import (HDViewPointAPIViewSet, HDViewPointAnnotate, HDViewPointCreate, HDViewPointDetail, HDViewPointUpdate, HDViewPointDelete, - TiledHDViewPointViewSet, JSSettings, DocumentPublic, DocumentBookletPublic, import_view, - import_update_json, ThemeViewSet, MarkupPublic, sync_view, sync_update_json, SyncRandoRedirect, +from .views import (HDViewPointAnnotate, TiledHDViewPointViewSet, JSSettings, DocumentPublic, DocumentBookletPublic, + import_view, import_update_json, ThemeViewSet, MarkupPublic, sync_view, sync_update_json, SyncRandoRedirect, CheckExtentsView) @@ -15,8 +15,6 @@ class LangConverter(converters.StringConverter): register_converter(LangConverter, 'lang') app_name = 'common' - - urlpatterns = [ path('api/settings.json', JSSettings.as_view(), name='settings_json'), path('tools/extents/', CheckExtentsView.as_view(), name='check_extents'), @@ -26,17 +24,12 @@ class LangConverter(converters.StringConverter): path('commands/syncview', sync_view, name='sync_randos_view'), path('commands/statesync/', sync_update_json, name='sync_randos_state'), path('api//themes.json', ThemeViewSet.as_view({'get': 'list'}), name="themes_json"), - path('hdviewpoint/add', HDViewPointCreate.as_view(), name="hdviewpoint_add"), - path('hdviewpoint/', HDViewPointDetail.as_view(), name="hdviewpoint_detail"), - path('hdviewpoint/edit/', HDViewPointUpdate.as_view(), name="hdviewpoint_change"), - path('hdviewpoint/delete/', HDViewPointDelete.as_view(), name="hdviewpoint_delete"), path('hdviewpoint/annotate/', HDViewPointAnnotate.as_view(), name="hdviewpoint_annotate"), ] rest_router = DefaultRouter(trailing_slash=False) -rest_router.register(r'api/hdviewpoint/drf/hdviewpoints', - HDViewPointAPIViewSet, basename="hdviewpoint-drf") rest_router.register(r'api/hdviewpoint/drf/hdviewpoints', TiledHDViewPointViewSet) +urlpatterns += registry.register(HDViewPoint, menu=False) urlpatterns += rest_router.urls diff --git a/geotrek/common/views.py b/geotrek/common/views.py index d556d3d6fe..d6088b23fa 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -10,18 +10,19 @@ from django.apps import apps from django.conf import settings from django.contrib import messages -from django.contrib.gis.db.models.functions import Transform from django.contrib.admin.models import CHANGE, LogEntry from django.contrib.auth.decorators import (login_required, permission_required, user_passes_test) from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.gis.db.models import Extent, GeometryField +from django.contrib.gis.db.models.functions import Transform from django.core.exceptions import PermissionDenied from django.db.models import Q from django.db.models.functions import Cast -from django.http import JsonResponse, Http404, HttpResponse, HttpResponseRedirect -from django.shortcuts import get_object_or_404, render, redirect +from django.http import (Http404, HttpResponse, HttpResponseRedirect, + JsonResponse) +from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse from django.utils import timezone, translation from django.utils.decorators import method_decorator @@ -29,12 +30,14 @@ from django.utils.translation import gettext as _ from django.views import static from django.views.decorators.http import require_http_methods, require_POST -from django.views.generic import RedirectView, TemplateView, View, UpdateView +from django.views.generic import RedirectView, TemplateView, UpdateView, View from django_celery_results.models import TaskResult from django_large_image.rest import LargeImageFileDetailMixin +from geotrek.common.filters import HDViewPointFilterSet 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 paperclip import settings as settings_paperclip from paperclip.views import _handle_attachment_form from rest_framework import mixins @@ -44,22 +47,27 @@ from geotrek import __version__ from geotrek.celery import app as celery_app from geotrek.common.mixins.api import APIViewSet +from geotrek.common.viewsets import GeotrekMapentityViewSet from geotrek.feedback.parsers import SuricateParser -from .forms import (AttachmentAccessibilityForm, HDViewPointAnnotationForm, HDViewPointForm, - ImportDatasetForm, ImportDatasetFormWithFile, - ImportSuricateForm, SyncRandoForm) +from ..altimetry.models import Dem +from ..core.models import Path +from .forms import (AttachmentAccessibilityForm, HDViewPointAnnotationForm, + HDViewPointForm, ImportDatasetForm, + ImportDatasetFormWithFile, ImportSuricateForm, + SyncRandoForm) from .mixins.views import (BookletMixin, CompletenessMixin, DocumentPortalMixin, DocumentPublicMixin, MetaMixin) from .models import AccessibilityAttachment, HDViewPoint, TargetPortal, Theme from .permissions import PublicOrReadPermMixin, RelatedPublishedPermission from .serializers import (HDViewPointAPIGeoJSONSerializer, - HDViewPointAPISerializer, ThemeSerializer) + HDViewPointAPISerializer, + HDViewPointGeoJSONSerializer, HDViewPointSerializer, + ThemeSerializer) from .tasks import import_datas, import_datas_from_web, launch_sync_rando from .utils import leaflet_bounds -from .utils.import_celery import create_tmp_destination, discover_available_parsers -from ..altimetry.models import Dem -from ..core.models import Path +from .utils.import_celery import (create_tmp_destination, + discover_available_parsers) class Meta(MetaMixin, TemplateView): @@ -325,6 +333,25 @@ def get(request, *args, **kwargs): return JsonResponse(response) +class HDViewPointList(MapEntityList): + queryset = HDViewPoint.objects.all() + filterform = HDViewPointFilterSet + columns = ['id', 'title'] + + +class HDViewPointViewSet(GeotrekMapentityViewSet): + model = HDViewPoint + serializer_class = HDViewPointSerializer + geojson_serializer_class = HDViewPointGeoJSONSerializer + mapentity_list_class = HDViewPointList + + def get_queryset(self): + qs = self.model.objects.all() + if self.format_kwarg == 'geojson': + qs = qs.only('id', 'title') + return qs + + class HDViewPointAPIViewSet(APIViewSet): model = HDViewPoint serializer_class = HDViewPointAPISerializer From 22da97640cbbf0b048b5c38ab017b1f0c2b0a7ea Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 20 Dec 2022 15:47:54 +0100 Subject: [PATCH 089/103] :recycle: Refactor HD Views using `MapEntityMixin` --- geotrek/common/migrations/0029_hdviewpoint.py | 5 ++++- geotrek/common/models.py | 3 --- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/geotrek/common/migrations/0029_hdviewpoint.py b/geotrek/common/migrations/0029_hdviewpoint.py index 1a68f39539..bf2d023249 100644 --- a/geotrek/common/migrations/0029_hdviewpoint.py +++ b/geotrek/common/migrations/0029_hdviewpoint.py @@ -1,4 +1,8 @@ +<<<<<<< HEAD # Generated by Django 3.2.16 on 2022-12-20 16:02 +======= +# Generated by Django 3.2.16 on 2022-12-20 14:25 +>>>>>>> :recycle: Refactor HD Views using `MapEntityMixin` from django.conf import settings import django.contrib.gis.db.models.fields @@ -35,7 +39,6 @@ class Migration(migrations.Migration): options={ 'verbose_name': 'HD View', 'verbose_name_plural': 'HD Views', - 'permissions': (('read_hdviewpoint', 'Can read hd view point'),), }, ), ] diff --git a/geotrek/common/models.py b/geotrek/common/models.py index 7c00d633d5..b746401e37 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -300,9 +300,6 @@ class HDViewPoint(TimeStampedModelMixin, MapEntityMixin): class Meta: verbose_name = _("HD View") verbose_name_plural = _("HD Views") - permissions = ( - ("read_hdviewpoint", "Can read hd view point"), - ) def __str__(self): return self.title From 96a5748b3b6b68a0546c99d4149d67c1acace5a7 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 20 Dec 2022 15:47:54 +0100 Subject: [PATCH 090/103] :recycle: Refactor HD Views using `MapEntityMixin` --- geotrek/common/tests/test_models.py | 3 +++ geotrek/common/tests/test_views.py | 11 +++-------- geotrek/common/views.py | 1 + 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/geotrek/common/tests/test_models.py b/geotrek/common/tests/test_models.py index d3b1fd4416..e3e0061876 100644 --- a/geotrek/common/tests/test_models.py +++ b/geotrek/common/tests/test_models.py @@ -73,7 +73,10 @@ def test_tiles_url(self): self.assertEqual( self.vp.get_generic_picture_tile_url(), f"/api/hdviewpoint/drf/hdviewpoints/{self.vp.pk}/tiles/{{z}}/{{x}}/{{y}}.png?source=vips" ) +<<<<<<< HEAD def test_properties(self): self.assertEqual(str(self.vp), 'Panorama') self.assertIn('admin/', self.vp.get_list_url()) +======= +>>>>>>> :recycle: Refactor HD Views using `MapEntityMixin` diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 07d555c95f..f3c7797115 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -421,6 +421,7 @@ def setUpTestData(cls): cls.directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data') cls.files = [f for f in os.listdir(cls.directory)] +<<<<<<< HEAD def test_crud_view(self): """ Test CRUD rights and views for HD View Point object @@ -485,6 +486,8 @@ def test_crud_view(self): self.assertEqual(response.status_code, 200) self.assertEqual(HDViewPoint.objects.count(), 0) +======= +>>>>>>> :recycle: Refactor HD Views using `MapEntityMixin` def test_tiles_view(self): """ Test access rights for HD View Point tile endpoint @@ -527,11 +530,3 @@ def test_annotate_view(self): response = self.client.get(vp.get_annotate_url()) self.assertEqual(response.status_code, 200) self.assertIsInstance(response.context['form'], HDViewPointAnnotationForm) - - def test_API_viewset(self): - vp = HDViewPointFactory(content_object=self.trek) - qs = HDViewPointAPIViewSet().get_queryset() - transformed_geom = vp.geom.transform(settings.API_SRID, clone=True) - api_geom = qs.first().api_geom - self.assertAlmostEqual(api_geom.x, transformed_geom.x) - self.assertAlmostEqual(api_geom.y, transformed_geom.y) diff --git a/geotrek/common/views.py b/geotrek/common/views.py index d6088b23fa..ab73bf9a1b 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -27,6 +27,7 @@ from django.utils import timezone, translation from django.utils.decorators import method_decorator from django.utils.encoding import force_str +from django.utils.functional import classproperty from django.utils.translation import gettext as _ from django.views import static from django.views.decorators.http import require_http_methods, require_POST From ba0199d0f25cbec318fcd347c855e25be6422351 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 15 Dec 2022 16:08:59 +0100 Subject: [PATCH 091/103] :globe_with_meridians: Update translations --- .../altimetry/locale/de/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/en/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/es/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/fr/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/it/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/de/LC_MESSAGES/django.po | 10 +-- geotrek/api/locale/en/LC_MESSAGES/django.po | 10 +-- geotrek/api/locale/es/LC_MESSAGES/django.po | 10 +-- geotrek/api/locale/fr/LC_MESSAGES/django.po | 19 ++++-- geotrek/api/locale/it/LC_MESSAGES/django.po | 10 +-- geotrek/api/locale/nl/LC_MESSAGES/django.po | 10 +-- .../authent/locale/de/LC_MESSAGES/django.po | 2 +- .../authent/locale/en/LC_MESSAGES/django.po | 2 +- .../authent/locale/es/LC_MESSAGES/django.po | 2 +- .../authent/locale/fr/LC_MESSAGES/django.po | 2 +- .../authent/locale/it/LC_MESSAGES/django.po | 2 +- .../authent/locale/nl/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/de/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/en/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/es/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/fr/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/it/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/nl/LC_MESSAGES/django.po | 2 +- .../common/locale/de/LC_MESSAGES/django.po | 62 ++++++++++++++++- .../common/locale/en/LC_MESSAGES/django.po | 62 ++++++++++++++++- .../common/locale/es/LC_MESSAGES/django.po | 64 ++++++++++++++++- .../common/locale/fr/LC_MESSAGES/django.po | 68 +++++++++++++++++-- .../common/locale/it/LC_MESSAGES/django.po | 62 ++++++++++++++++- .../common/locale/nl/LC_MESSAGES/django.po | 62 ++++++++++++++++- geotrek/core/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/nl/LC_MESSAGES/django.po | 2 +- .../diving/locale/de/LC_MESSAGES/django.po | 2 +- .../diving/locale/en/LC_MESSAGES/django.po | 2 +- .../diving/locale/es/LC_MESSAGES/django.po | 2 +- .../diving/locale/fr/LC_MESSAGES/django.po | 2 +- .../diving/locale/it/LC_MESSAGES/django.po | 2 +- .../diving/locale/nl/LC_MESSAGES/django.po | 2 +- .../feedback/locale/de/LC_MESSAGES/django.po | 2 +- .../feedback/locale/en/LC_MESSAGES/django.po | 2 +- .../feedback/locale/es/LC_MESSAGES/django.po | 2 +- .../feedback/locale/fr/LC_MESSAGES/django.po | 2 +- .../feedback/locale/it/LC_MESSAGES/django.po | 2 +- .../feedback/locale/nl/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/de/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/en/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/es/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/fr/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/it/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/nl/LC_MESSAGES/django.po | 2 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/locale/nl/LC_MESSAGES/django.po | 2 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/de/LC_MESSAGES/django.po | 5 +- .../outdoor/locale/en/LC_MESSAGES/django.po | 5 +- .../outdoor/locale/es/LC_MESSAGES/django.po | 5 +- .../outdoor/locale/fr/LC_MESSAGES/django.po | 5 +- .../outdoor/locale/it/LC_MESSAGES/django.po | 5 +- .../outdoor/locale/nl/LC_MESSAGES/django.po | 5 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- .../signage/locale/de/LC_MESSAGES/django.po | 2 +- .../signage/locale/en/LC_MESSAGES/django.po | 2 +- .../signage/locale/es/LC_MESSAGES/django.po | 2 +- .../signage/locale/fr/LC_MESSAGES/django.po | 2 +- .../signage/locale/it/LC_MESSAGES/django.po | 2 +- .../signage/locale/nl/LC_MESSAGES/django.po | 2 +- .../tourism/locale/de/LC_MESSAGES/django.po | 13 +++- .../tourism/locale/en/LC_MESSAGES/django.po | 17 +++-- .../tourism/locale/es/LC_MESSAGES/django.po | 13 +++- .../tourism/locale/fr/LC_MESSAGES/django.po | 22 +++--- .../tourism/locale/it/LC_MESSAGES/django.po | 19 +++++- .../tourism/locale/nl/LC_MESSAGES/django.po | 13 +++- .../trekking/locale/de/LC_MESSAGES/django.po | 5 +- .../trekking/locale/en/LC_MESSAGES/django.po | 5 +- .../trekking/locale/es/LC_MESSAGES/django.po | 5 +- .../trekking/locale/fr/LC_MESSAGES/django.po | 5 +- .../trekking/locale/it/LC_MESSAGES/django.po | 5 +- .../trekking/locale/nl/LC_MESSAGES/django.po | 5 +- .../zoning/locale/de/LC_MESSAGES/django.po | 2 +- .../zoning/locale/en/LC_MESSAGES/django.po | 2 +- .../zoning/locale/es/LC_MESSAGES/django.po | 2 +- .../zoning/locale/fr/LC_MESSAGES/django.po | 2 +- .../zoning/locale/it/LC_MESSAGES/django.po | 2 +- .../zoning/locale/nl/LC_MESSAGES/django.po | 2 +- 114 files changed, 613 insertions(+), 161 deletions(-) diff --git a/geotrek/altimetry/locale/de/LC_MESSAGES/django.po b/geotrek/altimetry/locale/de/LC_MESSAGES/django.po index 04ba560e90..92e043f8a8 100644 --- a/geotrek/altimetry/locale/de/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/en/LC_MESSAGES/django.po b/geotrek/altimetry/locale/en/LC_MESSAGES/django.po index 04ba560e90..92e043f8a8 100644 --- a/geotrek/altimetry/locale/en/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/es/LC_MESSAGES/django.po b/geotrek/altimetry/locale/es/LC_MESSAGES/django.po index 04ba560e90..92e043f8a8 100644 --- a/geotrek/altimetry/locale/es/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po b/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po index 727553098e..2e0a0ab250 100644 --- a/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2015-10-06 12:11+0100\n" "Language-Team: \n" "Language: fr\n" diff --git a/geotrek/altimetry/locale/it/LC_MESSAGES/django.po b/geotrek/altimetry/locale/it/LC_MESSAGES/django.po index 04ba560e90..92e043f8a8 100644 --- a/geotrek/altimetry/locale/it/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po b/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po index 04ba560e90..92e043f8a8 100644 --- a/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/de/LC_MESSAGES/django.po b/geotrek/api/locale/de/LC_MESSAGES/django.po index 485910e0e5..b147c8506c 100644 --- a/geotrek/api/locale/de/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -230,7 +230,7 @@ msgid "Trek" msgstr "" msgid "" -"Filter by a trek id. It will show only the sensitive areas related to this " +"Filter by a trek id. It will show only the sensitive areas intersecting this " "trek." msgstr "" @@ -338,13 +338,13 @@ msgstr "" msgid "Filter by one or more category id, comma-separated." msgstr "" -msgid "Filter events on bookable boolean : true/false expected" +msgid "Filter by one or more Place id, comma-separated." msgstr "" -msgid "Filter events on cancelled boolean : true/false expected" +msgid "Filter events on bookable boolean : true/false expected" msgstr "" -msgid "Filter by one or more Place id, comma-separated." +msgid "Filter events on cancelled boolean : true/false expected" msgstr "" msgid "Dates before" diff --git a/geotrek/api/locale/en/LC_MESSAGES/django.po b/geotrek/api/locale/en/LC_MESSAGES/django.po index 485910e0e5..b147c8506c 100644 --- a/geotrek/api/locale/en/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -230,7 +230,7 @@ msgid "Trek" msgstr "" msgid "" -"Filter by a trek id. It will show only the sensitive areas related to this " +"Filter by a trek id. It will show only the sensitive areas intersecting this " "trek." msgstr "" @@ -338,13 +338,13 @@ msgstr "" msgid "Filter by one or more category id, comma-separated." msgstr "" -msgid "Filter events on bookable boolean : true/false expected" +msgid "Filter by one or more Place id, comma-separated." msgstr "" -msgid "Filter events on cancelled boolean : true/false expected" +msgid "Filter events on bookable boolean : true/false expected" msgstr "" -msgid "Filter by one or more Place id, comma-separated." +msgid "Filter events on cancelled boolean : true/false expected" msgstr "" msgid "Dates before" diff --git a/geotrek/api/locale/es/LC_MESSAGES/django.po b/geotrek/api/locale/es/LC_MESSAGES/django.po index 485910e0e5..b147c8506c 100644 --- a/geotrek/api/locale/es/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -230,7 +230,7 @@ msgid "Trek" msgstr "" msgid "" -"Filter by a trek id. It will show only the sensitive areas related to this " +"Filter by a trek id. It will show only the sensitive areas intersecting this " "trek." msgstr "" @@ -338,13 +338,13 @@ msgstr "" msgid "Filter by one or more category id, comma-separated." msgstr "" -msgid "Filter events on bookable boolean : true/false expected" +msgid "Filter by one or more Place id, comma-separated." msgstr "" -msgid "Filter events on cancelled boolean : true/false expected" +msgid "Filter events on bookable boolean : true/false expected" msgstr "" -msgid "Filter by one or more Place id, comma-separated." +msgid "Filter events on cancelled boolean : true/false expected" msgstr "" msgid "Dates before" diff --git a/geotrek/api/locale/fr/LC_MESSAGES/django.po b/geotrek/api/locale/fr/LC_MESSAGES/django.po index 9baf9e0fa5..574381f411 100644 --- a/geotrek/api/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2020-10-20 16:33+0000\n" "Last-Translator: Bastien Potiron \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" @@ -230,7 +230,7 @@ msgid "Trek" msgstr "" msgid "" -"Filter by a trek id. It will show only the sensitive areas related to this " +"Filter by a trek id. It will show only the sensitive areas intersecting this " "trek." msgstr "" @@ -338,13 +338,13 @@ msgstr "" msgid "Filter by one or more category id, comma-separated." msgstr "" -msgid "Filter events on bookable boolean : true/false expected" +msgid "Filter by one or more Place id, comma-separated." msgstr "" -msgid "Filter events on cancelled boolean : true/false expected" +msgid "Filter events on bookable boolean : true/false expected" msgstr "" -msgid "Filter by one or more Place id, comma-separated." +msgid "Filter events on cancelled boolean : true/false expected" msgstr "" msgid "Dates before" diff --git a/geotrek/api/locale/nl/LC_MESSAGES/django.po b/geotrek/api/locale/nl/LC_MESSAGES/django.po index 485910e0e5..b147c8506c 100644 --- a/geotrek/api/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -230,7 +230,7 @@ msgid "Trek" msgstr "" msgid "" -"Filter by a trek id. It will show only the sensitive areas related to this " +"Filter by a trek id. It will show only the sensitive areas intersecting this " "trek." msgstr "" @@ -338,13 +338,13 @@ msgstr "" msgid "Filter by one or more category id, comma-separated." msgstr "" -msgid "Filter events on bookable boolean : true/false expected" +msgid "Filter by one or more Place id, comma-separated." msgstr "" -msgid "Filter events on cancelled boolean : true/false expected" +msgid "Filter events on bookable boolean : true/false expected" msgstr "" -msgid "Filter by one or more Place id, comma-separated." +msgid "Filter events on cancelled boolean : true/false expected" msgstr "" msgid "Dates before" diff --git a/geotrek/authent/locale/de/LC_MESSAGES/django.po b/geotrek/authent/locale/de/LC_MESSAGES/django.po index f0f15ab199..5640f3a1ad 100644 --- a/geotrek/authent/locale/de/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/en/LC_MESSAGES/django.po b/geotrek/authent/locale/en/LC_MESSAGES/django.po index f0f15ab199..5640f3a1ad 100644 --- a/geotrek/authent/locale/en/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/es/LC_MESSAGES/django.po b/geotrek/authent/locale/es/LC_MESSAGES/django.po index f0f15ab199..5640f3a1ad 100644 --- a/geotrek/authent/locale/es/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/fr/LC_MESSAGES/django.po b/geotrek/authent/locale/fr/LC_MESSAGES/django.po index 141293471c..df8665d6ab 100644 --- a/geotrek/authent/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/it/LC_MESSAGES/django.po b/geotrek/authent/locale/it/LC_MESSAGES/django.po index f0f15ab199..5640f3a1ad 100644 --- a/geotrek/authent/locale/it/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/nl/LC_MESSAGES/django.po b/geotrek/authent/locale/nl/LC_MESSAGES/django.po index f0f15ab199..5640f3a1ad 100644 --- a/geotrek/authent/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po index 98545a50b5..f1f9e2f592 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po index 98545a50b5..f1f9e2f592 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po index 98545a50b5..f1f9e2f592 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po index 240fb65b86..da36edf2ab 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po index 98545a50b5..f1f9e2f592 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po index 98545a50b5..f1f9e2f592 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/common/locale/de/LC_MESSAGES/django.po b/geotrek/common/locale/de/LC_MESSAGES/django.po index 60a1244c61..3c0d5f7a79 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,6 +24,12 @@ msgstr "" msgid "Linked content" msgstr "" +msgid "Related to" +msgstr "" + +msgid "Title" +msgstr "" + msgid "Common" msgstr "" @@ -93,6 +99,9 @@ msgstr "" msgid "The uploaded file is not tall enough" msgstr "" +msgid "Save changes" +msgstr "" + msgid "Global tiles syncing ..." msgstr "" @@ -327,6 +336,30 @@ msgstr "" msgid "Color" msgstr "" +msgid "Picture" +msgstr "" + +msgid "Location" +msgstr "" + +msgid "Annotations" +msgstr "" + +msgid "Title for this view point" +msgstr "" + +msgid "Details about this view" +msgstr "" + +msgid "HD View" +msgstr "" + +msgid "HD Views" +msgstr "" + +msgid "Add a new HD view" +msgstr "" + #, python-brace-format msgid "Line {line}" msgstr "" @@ -500,6 +533,33 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Properties" +msgstr "" + +msgid "History" +msgstr "" + +msgid "Annotate" +msgstr "" + +msgid "Attributes" +msgstr "" + +msgid "Date" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Action" +msgstr "" + +msgid "Full history" +msgstr "" + +msgid "You are not allowed to see HD views." +msgstr "" + msgid "Decoding error. Please check encoding and use only ASCII in file names." msgstr "" diff --git a/geotrek/common/locale/en/LC_MESSAGES/django.po b/geotrek/common/locale/en/LC_MESSAGES/django.po index 60a1244c61..3c0d5f7a79 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,6 +24,12 @@ msgstr "" msgid "Linked content" msgstr "" +msgid "Related to" +msgstr "" + +msgid "Title" +msgstr "" + msgid "Common" msgstr "" @@ -93,6 +99,9 @@ msgstr "" msgid "The uploaded file is not tall enough" msgstr "" +msgid "Save changes" +msgstr "" + msgid "Global tiles syncing ..." msgstr "" @@ -327,6 +336,30 @@ msgstr "" msgid "Color" msgstr "" +msgid "Picture" +msgstr "" + +msgid "Location" +msgstr "" + +msgid "Annotations" +msgstr "" + +msgid "Title for this view point" +msgstr "" + +msgid "Details about this view" +msgstr "" + +msgid "HD View" +msgstr "" + +msgid "HD Views" +msgstr "" + +msgid "Add a new HD view" +msgstr "" + #, python-brace-format msgid "Line {line}" msgstr "" @@ -500,6 +533,33 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Properties" +msgstr "" + +msgid "History" +msgstr "" + +msgid "Annotate" +msgstr "" + +msgid "Attributes" +msgstr "" + +msgid "Date" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Action" +msgstr "" + +msgid "Full history" +msgstr "" + +msgid "You are not allowed to see HD views." +msgstr "" + msgid "Decoding error. Please check encoding and use only ASCII in file names." msgstr "" diff --git a/geotrek/common/locale/es/LC_MESSAGES/django.po b/geotrek/common/locale/es/LC_MESSAGES/django.po index 2f4dc319f7..114f081b66 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Olivia Duval \n" "Language-Team: LANGUAGE \n" @@ -24,6 +24,12 @@ msgstr "" msgid "Linked content" msgstr "" +msgid "Related to" +msgstr "" + +msgid "Title" +msgstr "" + msgid "Common" msgstr "" @@ -93,6 +99,9 @@ msgstr "" msgid "The uploaded file is not tall enough" msgstr "" +msgid "Save changes" +msgstr "" + msgid "Global tiles syncing ..." msgstr "" @@ -327,6 +336,32 @@ msgstr "" msgid "Color" msgstr "" +#, fuzzy +#| msgid "Pictogram" +msgid "Picture" +msgstr "Pictograma" + +msgid "Location" +msgstr "" + +msgid "Annotations" +msgstr "" + +msgid "Title for this view point" +msgstr "" + +msgid "Details about this view" +msgstr "" + +msgid "HD View" +msgstr "" + +msgid "HD Views" +msgstr "" + +msgid "Add a new HD view" +msgstr "" + #, python-brace-format msgid "Line {line}" msgstr "" @@ -500,6 +535,33 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Properties" +msgstr "" + +msgid "History" +msgstr "" + +msgid "Annotate" +msgstr "" + +msgid "Attributes" +msgstr "" + +msgid "Date" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Action" +msgstr "" + +msgid "Full history" +msgstr "" + +msgid "You are not allowed to see HD views." +msgstr "" + msgid "Decoding error. Please check encoding and use only ASCII in file names." msgstr "" diff --git a/geotrek/common/locale/fr/LC_MESSAGES/django.po b/geotrek/common/locale/fr/LC_MESSAGES/django.po index 70ae429b1d..d0d95cdffe 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+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" @@ -24,6 +24,12 @@ msgstr "" msgid "Linked content" msgstr "" +msgid "Related to" +msgstr "" + +msgid "Title" +msgstr "" + msgid "Common" msgstr "" @@ -93,6 +99,9 @@ msgstr "" msgid "The uploaded file is not tall enough" msgstr "" +msgid "Save changes" +msgstr "" + msgid "Global tiles syncing ..." msgstr "" @@ -327,6 +336,30 @@ msgstr "" msgid "Color" msgstr "" +msgid "Picture" +msgstr "" + +msgid "Location" +msgstr "" + +msgid "Annotations" +msgstr "" + +msgid "Title for this view point" +msgstr "" + +msgid "Details about this view" +msgstr "" + +msgid "HD View" +msgstr "" + +msgid "HD Views" +msgstr "" + +msgid "Add a new HD view" +msgstr "" + #, python-brace-format msgid "Line {line}" msgstr "" @@ -500,6 +533,33 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Properties" +msgstr "" + +msgid "History" +msgstr "" + +msgid "Annotate" +msgstr "" + +msgid "Attributes" +msgstr "" + +msgid "Date" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Action" +msgstr "" + +msgid "Full history" +msgstr "" + +msgid "You are not allowed to see HD views." +msgstr "" + msgid "Decoding error. Please check encoding and use only ASCII in file names." msgstr "" diff --git a/geotrek/common/locale/nl/LC_MESSAGES/django.po b/geotrek/common/locale/nl/LC_MESSAGES/django.po index 60a1244c61..3c0d5f7a79 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,6 +24,12 @@ msgstr "" msgid "Linked content" msgstr "" +msgid "Related to" +msgstr "" + +msgid "Title" +msgstr "" + msgid "Common" msgstr "" @@ -93,6 +99,9 @@ msgstr "" msgid "The uploaded file is not tall enough" msgstr "" +msgid "Save changes" +msgstr "" + msgid "Global tiles syncing ..." msgstr "" @@ -327,6 +336,30 @@ msgstr "" msgid "Color" msgstr "" +msgid "Picture" +msgstr "" + +msgid "Location" +msgstr "" + +msgid "Annotations" +msgstr "" + +msgid "Title for this view point" +msgstr "" + +msgid "Details about this view" +msgstr "" + +msgid "HD View" +msgstr "" + +msgid "HD Views" +msgstr "" + +msgid "Add a new HD view" +msgstr "" + #, python-brace-format msgid "Line {line}" msgstr "" @@ -500,6 +533,33 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Properties" +msgstr "" + +msgid "History" +msgstr "" + +msgid "Annotate" +msgstr "" + +msgid "Attributes" +msgstr "" + +msgid "Date" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Action" +msgstr "" + +msgid "Full history" +msgstr "" + +msgid "You are not allowed to see HD views." +msgstr "" + msgid "Decoding error. Please check encoding and use only ASCII in file names." msgstr "" diff --git a/geotrek/core/locale/de/LC_MESSAGES/django.po b/geotrek/core/locale/de/LC_MESSAGES/django.po index c07fbadb43..1998d5d676 100644 --- a/geotrek/core/locale/de/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-11-24 14:14+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/en/LC_MESSAGES/django.po b/geotrek/core/locale/en/LC_MESSAGES/django.po index c07fbadb43..1998d5d676 100644 --- a/geotrek/core/locale/en/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-11-24 14:14+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/es/LC_MESSAGES/django.po b/geotrek/core/locale/es/LC_MESSAGES/django.po index c07fbadb43..1998d5d676 100644 --- a/geotrek/core/locale/es/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-11-24 14:14+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/fr/LC_MESSAGES/django.po b/geotrek/core/locale/fr/LC_MESSAGES/django.po index 6094451e52..da3ae0d227 100644 --- a/geotrek/core/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/core/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-24 14:14+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+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" diff --git a/geotrek/core/locale/nl/LC_MESSAGES/django.po b/geotrek/core/locale/nl/LC_MESSAGES/django.po index c07fbadb43..1998d5d676 100644 --- a/geotrek/core/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-11-24 14:14+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/de/LC_MESSAGES/django.po b/geotrek/diving/locale/de/LC_MESSAGES/django.po index ae620b2efc..284df8a52c 100644 --- a/geotrek/diving/locale/de/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/en/LC_MESSAGES/django.po b/geotrek/diving/locale/en/LC_MESSAGES/django.po index ae620b2efc..284df8a52c 100644 --- a/geotrek/diving/locale/en/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/es/LC_MESSAGES/django.po b/geotrek/diving/locale/es/LC_MESSAGES/django.po index ae620b2efc..284df8a52c 100644 --- a/geotrek/diving/locale/es/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/fr/LC_MESSAGES/django.po b/geotrek/diving/locale/fr/LC_MESSAGES/django.po index 9bda29556b..5258ab6af6 100644 --- a/geotrek/diving/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2020-04-22 06:45+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/nl/LC_MESSAGES/django.po b/geotrek/diving/locale/nl/LC_MESSAGES/django.po index ae620b2efc..284df8a52c 100644 --- a/geotrek/diving/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/de/LC_MESSAGES/django.po b/geotrek/feedback/locale/de/LC_MESSAGES/django.po index 8d21be6711..c151f38e92 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/en/LC_MESSAGES/django.po b/geotrek/feedback/locale/en/LC_MESSAGES/django.po index 8d21be6711..c151f38e92 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/es/LC_MESSAGES/django.po b/geotrek/feedback/locale/es/LC_MESSAGES/django.po index 8d21be6711..c151f38e92 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/fr/LC_MESSAGES/django.po b/geotrek/feedback/locale/fr/LC_MESSAGES/django.po index a8867191ef..4375600a31 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/it/LC_MESSAGES/django.po b/geotrek/feedback/locale/it/LC_MESSAGES/django.po index 8d21be6711..c151f38e92 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/nl/LC_MESSAGES/django.po b/geotrek/feedback/locale/nl/LC_MESSAGES/django.po index 8d21be6711..c151f38e92 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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/de/LC_MESSAGES/django.po b/geotrek/flatpages/locale/de/LC_MESSAGES/django.po index edba1d0716..64e9fafafd 100644 --- a/geotrek/flatpages/locale/de/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/en/LC_MESSAGES/django.po b/geotrek/flatpages/locale/en/LC_MESSAGES/django.po index edba1d0716..64e9fafafd 100644 --- a/geotrek/flatpages/locale/en/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/es/LC_MESSAGES/django.po b/geotrek/flatpages/locale/es/LC_MESSAGES/django.po index edba1d0716..64e9fafafd 100644 --- a/geotrek/flatpages/locale/es/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po b/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po index 5d042025b2..68d77a0bda 100644 --- a/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/it/LC_MESSAGES/django.po b/geotrek/flatpages/locale/it/LC_MESSAGES/django.po index edba1d0716..64e9fafafd 100644 --- a/geotrek/flatpages/locale/it/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po b/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po index edba1d0716..64e9fafafd 100644 --- a/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po index 07d9086d1f..0504817560 100644 --- a/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po index a3c042be2d..8096019b38 100644 --- a/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po index a3c042be2d..8096019b38 100644 --- a/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po index 60905a0025..b730647013 100644 --- a/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2020-04-22 07:48+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po index a3c042be2d..8096019b38 100644 --- a/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/de/LC_MESSAGES/django.po b/geotrek/land/locale/de/LC_MESSAGES/django.po index 47956adc76..0ce765bb2f 100644 --- a/geotrek/land/locale/de/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/en/LC_MESSAGES/django.po b/geotrek/land/locale/en/LC_MESSAGES/django.po index 47956adc76..0ce765bb2f 100644 --- a/geotrek/land/locale/en/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/es/LC_MESSAGES/django.po b/geotrek/land/locale/es/LC_MESSAGES/django.po index 47956adc76..0ce765bb2f 100644 --- a/geotrek/land/locale/es/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/fr/LC_MESSAGES/django.po b/geotrek/land/locale/fr/LC_MESSAGES/django.po index 6c0230fc03..6ce183c76a 100644 --- a/geotrek/land/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/it/LC_MESSAGES/django.po b/geotrek/land/locale/it/LC_MESSAGES/django.po index 47956adc76..0ce765bb2f 100644 --- a/geotrek/land/locale/it/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/nl/LC_MESSAGES/django.po b/geotrek/land/locale/nl/LC_MESSAGES/django.po index 47956adc76..0ce765bb2f 100644 --- a/geotrek/land/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/de/LC_MESSAGES/django.po b/geotrek/locale/de/LC_MESSAGES/django.po index 1d3ae4a664..6d252291fa 100644 --- a/geotrek/locale/de/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/en/LC_MESSAGES/django.po b/geotrek/locale/en/LC_MESSAGES/django.po index 1d3ae4a664..6d252291fa 100644 --- a/geotrek/locale/en/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/es/LC_MESSAGES/django.po b/geotrek/locale/es/LC_MESSAGES/django.po index 1d3ae4a664..6d252291fa 100644 --- a/geotrek/locale/es/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/fr/LC_MESSAGES/django.po b/geotrek/locale/fr/LC_MESSAGES/django.po index 77d19341a8..6a6dc86e66 100644 --- a/geotrek/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+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" diff --git a/geotrek/locale/nl/LC_MESSAGES/django.po b/geotrek/locale/nl/LC_MESSAGES/django.po index 1d3ae4a664..6d252291fa 100644 --- a/geotrek/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/de/LC_MESSAGES/django.po b/geotrek/maintenance/locale/de/LC_MESSAGES/django.po index 598bd92c2a..ca768b6207 100644 --- a/geotrek/maintenance/locale/de/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/en/LC_MESSAGES/django.po b/geotrek/maintenance/locale/en/LC_MESSAGES/django.po index 598bd92c2a..ca768b6207 100644 --- a/geotrek/maintenance/locale/en/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/es/LC_MESSAGES/django.po b/geotrek/maintenance/locale/es/LC_MESSAGES/django.po index 598bd92c2a..ca768b6207 100644 --- a/geotrek/maintenance/locale/es/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po b/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po index a6c8ae48e3..fe111e4f34 100644 --- a/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/it/LC_MESSAGES/django.po b/geotrek/maintenance/locale/it/LC_MESSAGES/django.po index 598bd92c2a..ca768b6207 100644 --- a/geotrek/maintenance/locale/it/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po b/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po index 598bd92c2a..ca768b6207 100644 --- a/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/de/LC_MESSAGES/django.po b/geotrek/outdoor/locale/de/LC_MESSAGES/django.po index 8314a8f8b7..810aac3842 100644 --- a/geotrek/outdoor/locale/de/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -355,6 +355,9 @@ msgstr "" msgid "Add a brother site" msgstr "" +msgid "Attached files" +msgstr "" + msgid "Parents" msgstr "" diff --git a/geotrek/outdoor/locale/en/LC_MESSAGES/django.po b/geotrek/outdoor/locale/en/LC_MESSAGES/django.po index 8314a8f8b7..810aac3842 100644 --- a/geotrek/outdoor/locale/en/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -355,6 +355,9 @@ msgstr "" msgid "Add a brother site" msgstr "" +msgid "Attached files" +msgstr "" + msgid "Parents" msgstr "" diff --git a/geotrek/outdoor/locale/es/LC_MESSAGES/django.po b/geotrek/outdoor/locale/es/LC_MESSAGES/django.po index 8314a8f8b7..810aac3842 100644 --- a/geotrek/outdoor/locale/es/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -355,6 +355,9 @@ msgstr "" msgid "Add a brother site" msgstr "" +msgid "Attached files" +msgstr "" + msgid "Parents" msgstr "" diff --git a/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po b/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po index 2081997d90..8200ea81c7 100644 --- a/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -357,6 +357,9 @@ msgstr "Ajouter site enfant" msgid "Add a brother site" msgstr "Ajouter un site frère" +msgid "Attached files" +msgstr "" + msgid "Parents" msgstr "Parents" diff --git a/geotrek/outdoor/locale/it/LC_MESSAGES/django.po b/geotrek/outdoor/locale/it/LC_MESSAGES/django.po index 8314a8f8b7..810aac3842 100644 --- a/geotrek/outdoor/locale/it/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -355,6 +355,9 @@ msgstr "" msgid "Add a brother site" msgstr "" +msgid "Attached files" +msgstr "" + msgid "Parents" msgstr "" diff --git a/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po b/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po index 8314a8f8b7..810aac3842 100644 --- a/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -355,6 +355,9 @@ msgstr "" msgid "Add a brother site" msgstr "" +msgid "Attached files" +msgstr "" + msgid "Parents" msgstr "" diff --git a/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po index ad595a8157..fbfd80a102 100644 --- a/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po index ad595a8157..fbfd80a102 100644 --- a/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po index ad595a8157..fbfd80a102 100644 --- a/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po index 7829b9eb73..776882f990 100644 --- a/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2020-04-22 07:48+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po index ad595a8157..fbfd80a102 100644 --- a/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/de/LC_MESSAGES/django.po b/geotrek/signage/locale/de/LC_MESSAGES/django.po index 8e84bd2c7e..cb458db548 100644 --- a/geotrek/signage/locale/de/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/en/LC_MESSAGES/django.po b/geotrek/signage/locale/en/LC_MESSAGES/django.po index 8e84bd2c7e..cb458db548 100644 --- a/geotrek/signage/locale/en/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/es/LC_MESSAGES/django.po b/geotrek/signage/locale/es/LC_MESSAGES/django.po index 8e84bd2c7e..cb458db548 100644 --- a/geotrek/signage/locale/es/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/fr/LC_MESSAGES/django.po b/geotrek/signage/locale/fr/LC_MESSAGES/django.po index 5c8f7723d7..04cd41243d 100644 --- a/geotrek/signage/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/signage/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2015-09-25 17:37+0100\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/geotrek/signage/locale/it/LC_MESSAGES/django.po b/geotrek/signage/locale/it/LC_MESSAGES/django.po index 8e84bd2c7e..cb458db548 100644 --- a/geotrek/signage/locale/it/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/nl/LC_MESSAGES/django.po b/geotrek/signage/locale/nl/LC_MESSAGES/django.po index 8e84bd2c7e..cb458db548 100644 --- a/geotrek/signage/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/de/LC_MESSAGES/django.po b/geotrek/tourism/locale/de/LC_MESSAGES/django.po index 511d585564..327105079a 100644 --- a/geotrek/tourism/locale/de/LC_MESSAGES/django.po +++ b/geotrek/tourism/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2015-10-22 14:33+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -328,7 +328,16 @@ msgstr "" msgid "Boolean indicating if Event is cancelled" msgstr "" -msgid "Select a place to auto-locate event on map" +msgid "Preparation duration" +msgstr "" + +msgid "In hours (1.5 = 1 h 30, 24 = 1 day, 48 = 2 days)" +msgstr "" + +msgid "Intervention duration" +msgstr "" + +msgid "Select a place in the list or locate the event directly on the map" msgstr "" msgid "Number of participants" diff --git a/geotrek/tourism/locale/en/LC_MESSAGES/django.po b/geotrek/tourism/locale/en/LC_MESSAGES/django.po index 2f3abbd20c..c5a7fcd43d 100644 --- a/geotrek/tourism/locale/en/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -327,6 +327,15 @@ msgstr "" msgid "Boolean indicating if Event is cancelled" msgstr "" +msgid "Preparation duration" +msgstr "" + +msgid "In hours (1.5 = 1 h 30, 24 = 1 day, 48 = 2 days)" +msgstr "" + +msgid "Intervention duration" +msgstr "" + msgid "Select a place in the list or locate the event directly on the map" msgstr "" @@ -438,9 +447,3 @@ msgstr "" msgid "Invalid geometry value." msgstr "" - -msgid "Preparation duration" -msgstr "Preparation duration" - -msgid "Intervention duration" -msgstr "Intervention duration" \ No newline at end of file diff --git a/geotrek/tourism/locale/es/LC_MESSAGES/django.po b/geotrek/tourism/locale/es/LC_MESSAGES/django.po index e227ef9d9e..c5a7fcd43d 100644 --- a/geotrek/tourism/locale/es/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -327,7 +327,16 @@ msgstr "" msgid "Boolean indicating if Event is cancelled" msgstr "" -msgid "Select a place to auto-locate event on map" +msgid "Preparation duration" +msgstr "" + +msgid "In hours (1.5 = 1 h 30, 24 = 1 day, 48 = 2 days)" +msgstr "" + +msgid "Intervention duration" +msgstr "" + +msgid "Select a place in the list or locate the event directly on the map" msgstr "" msgid "Number of participants" diff --git a/geotrek/tourism/locale/fr/LC_MESSAGES/django.po b/geotrek/tourism/locale/fr/LC_MESSAGES/django.po index 04b3bbad05..c4bd4c6541 100644 --- a/geotrek/tourism/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/tourism/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2020-04-22 07:36+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" @@ -327,7 +327,16 @@ msgstr "" msgid "Boolean indicating if Event is cancelled" msgstr "" -msgid "Select a place to auto-locate event on map" +msgid "Preparation duration" +msgstr "" + +msgid "In hours (1.5 = 1 h 30, 24 = 1 day, 48 = 2 days)" +msgstr "" + +msgid "Intervention duration" +msgstr "" + +msgid "Select a place in the list or locate the event directly on the map" msgstr "" msgid "Number of participants" @@ -353,6 +362,12 @@ msgstr "touristic-event" msgid "Display order" msgstr "" +msgid "Participant category" +msgstr "" + +msgid "Participant categories" +msgstr "" + msgid "Published touristic events" msgstr "Pubblicato eventi turistici" diff --git a/geotrek/tourism/locale/nl/LC_MESSAGES/django.po b/geotrek/tourism/locale/nl/LC_MESSAGES/django.po index e227ef9d9e..c5a7fcd43d 100644 --- a/geotrek/tourism/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -327,7 +327,16 @@ msgstr "" msgid "Boolean indicating if Event is cancelled" msgstr "" -msgid "Select a place to auto-locate event on map" +msgid "Preparation duration" +msgstr "" + +msgid "In hours (1.5 = 1 h 30, 24 = 1 day, 48 = 2 days)" +msgstr "" + +msgid "Intervention duration" +msgstr "" + +msgid "Select a place in the list or locate the event directly on the map" msgstr "" msgid "Number of participants" diff --git a/geotrek/trekking/locale/de/LC_MESSAGES/django.po b/geotrek/trekking/locale/de/LC_MESSAGES/django.po index da13aa94a3..68a23eda53 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: 2022-12-12 16:05+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2015-10-21 11:16+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -527,6 +527,9 @@ msgstr "Roaming" msgid "Hike" msgstr "Wander" +msgid "Attached files" +msgstr "" + msgid "Attributes" msgstr "Informationen" diff --git a/geotrek/trekking/locale/en/LC_MESSAGES/django.po b/geotrek/trekking/locale/en/LC_MESSAGES/django.po index 3981eb1ad3..ae80cc2ed8 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: 2022-12-12 16:05+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -512,6 +512,9 @@ msgstr "" msgid "Hike" msgstr "" +msgid "Attached files" +msgstr "" + msgid "Attributes" msgstr "" diff --git a/geotrek/trekking/locale/es/LC_MESSAGES/django.po b/geotrek/trekking/locale/es/LC_MESSAGES/django.po index 5adf09a877..6062a0ff41 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: 2022-12-12 16:05+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2015-10-21 11:16+0200\n" "Last-Translator: jean-etienne.castagnede@makina-corpus.com\n" "Language-Team: \n" @@ -512,6 +512,9 @@ msgstr "" msgid "Hike" msgstr "Caminata" +msgid "Attached files" +msgstr "" + msgid "Attributes" msgstr "" diff --git a/geotrek/trekking/locale/fr/LC_MESSAGES/django.po b/geotrek/trekking/locale/fr/LC_MESSAGES/django.po index 1fa244f8d0..4c4bd43243 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: 2022-12-12 16:05+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: 2020-09-22 15:57+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/en/LC_MESSAGES/django.po b/geotrek/zoning/locale/en/LC_MESSAGES/django.po index afaa482145..05e8f7e820 100644 --- a/geotrek/zoning/locale/en/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/es/LC_MESSAGES/django.po b/geotrek/zoning/locale/es/LC_MESSAGES/django.po index afaa482145..05e8f7e820 100644 --- a/geotrek/zoning/locale/es/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/fr/LC_MESSAGES/django.po b/geotrek/zoning/locale/fr/LC_MESSAGES/django.po index c6eac0c6d1..667559852a 100644 --- a/geotrek/zoning/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/it/LC_MESSAGES/django.po b/geotrek/zoning/locale/it/LC_MESSAGES/django.po index 78d3a69ce4..dd93fe02a2 100644 --- a/geotrek/zoning/locale/it/LC_MESSAGES/django.po +++ b/geotrek/zoning/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/nl/LC_MESSAGES/django.po b/geotrek/zoning/locale/nl/LC_MESSAGES/django.po index afaa482145..05e8f7e820 100644 --- a/geotrek/zoning/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-10-03 13:51+0000\n" +"POT-Creation-Date: 2022-12-15 14:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" From 1f139c1e875f651f8c32cc221743e655cc800fa3 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Thu, 15 Dec 2022 16:44:31 +0100 Subject: [PATCH 092/103] :globe_with_meridians: Update translations --- .../altimetry/locale/de/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/en/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/es/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/fr/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/it/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/nl/LC_MESSAGES/django.po | 2 +- .../authent/locale/de/LC_MESSAGES/django.po | 2 +- .../authent/locale/en/LC_MESSAGES/django.po | 2 +- .../authent/locale/es/LC_MESSAGES/django.po | 2 +- .../authent/locale/fr/LC_MESSAGES/django.po | 2 +- .../authent/locale/it/LC_MESSAGES/django.po | 2 +- .../authent/locale/nl/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/de/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/en/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/es/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/fr/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/it/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/nl/LC_MESSAGES/django.po | 2 +- .../common/locale/de/LC_MESSAGES/django.po | 28 ++++++++++++++++- .../common/locale/en/LC_MESSAGES/django.po | 28 ++++++++++++++++- .../common/locale/es/LC_MESSAGES/django.po | 28 ++++++++++++++++- .../common/locale/fr/LC_MESSAGES/django.po | 31 ++++++++++++++++++- .../common/locale/it/LC_MESSAGES/django.po | 28 ++++++++++++++++- .../common/locale/nl/LC_MESSAGES/django.po | 28 ++++++++++++++++- .../common/hdviewpoint_annotation_form.html | 4 +-- .../common/hdviewpoint_detail_fragment.html | 2 +- geotrek/core/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/nl/LC_MESSAGES/django.po | 2 +- .../diving/locale/de/LC_MESSAGES/django.po | 2 +- .../diving/locale/en/LC_MESSAGES/django.po | 2 +- .../diving/locale/es/LC_MESSAGES/django.po | 2 +- .../diving/locale/fr/LC_MESSAGES/django.po | 2 +- .../diving/locale/it/LC_MESSAGES/django.po | 2 +- .../diving/locale/nl/LC_MESSAGES/django.po | 2 +- .../feedback/locale/de/LC_MESSAGES/django.po | 2 +- .../feedback/locale/en/LC_MESSAGES/django.po | 2 +- .../feedback/locale/es/LC_MESSAGES/django.po | 2 +- .../feedback/locale/fr/LC_MESSAGES/django.po | 2 +- .../feedback/locale/it/LC_MESSAGES/django.po | 2 +- .../feedback/locale/nl/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/de/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/en/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/es/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/fr/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/it/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/nl/LC_MESSAGES/django.po | 2 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/locale/nl/LC_MESSAGES/django.po | 2 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/de/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/en/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/es/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/fr/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/it/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/nl/LC_MESSAGES/django.po | 2 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- .../signage/locale/de/LC_MESSAGES/django.po | 2 +- .../signage/locale/en/LC_MESSAGES/django.po | 2 +- .../signage/locale/es/LC_MESSAGES/django.po | 2 +- .../signage/locale/fr/LC_MESSAGES/django.po | 2 +- .../signage/locale/it/LC_MESSAGES/django.po | 2 +- .../signage/locale/nl/LC_MESSAGES/django.po | 2 +- .../tourism/locale/de/LC_MESSAGES/django.po | 2 +- .../tourism/locale/en/LC_MESSAGES/django.po | 2 +- .../tourism/locale/es/LC_MESSAGES/django.po | 2 +- .../tourism/locale/fr/LC_MESSAGES/django.po | 2 +- .../tourism/locale/it/LC_MESSAGES/django.po | 2 +- .../tourism/locale/nl/LC_MESSAGES/django.po | 2 +- .../trekking/locale/de/LC_MESSAGES/django.po | 2 +- .../trekking/locale/en/LC_MESSAGES/django.po | 2 +- .../trekking/locale/es/LC_MESSAGES/django.po | 2 +- .../trekking/locale/fr/LC_MESSAGES/django.po | 2 +- .../trekking/locale/it/LC_MESSAGES/django.po | 2 +- .../trekking/locale/nl/LC_MESSAGES/django.po | 2 +- .../zoning/locale/de/LC_MESSAGES/django.po | 2 +- .../zoning/locale/en/LC_MESSAGES/django.po | 2 +- .../zoning/locale/es/LC_MESSAGES/django.po | 2 +- .../zoning/locale/fr/LC_MESSAGES/django.po | 2 +- .../zoning/locale/it/LC_MESSAGES/django.po | 2 +- .../zoning/locale/nl/LC_MESSAGES/django.po | 2 +- 116 files changed, 276 insertions(+), 117 deletions(-) diff --git a/geotrek/altimetry/locale/de/LC_MESSAGES/django.po b/geotrek/altimetry/locale/de/LC_MESSAGES/django.po index 92e043f8a8..100eab849b 100644 --- a/geotrek/altimetry/locale/de/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/en/LC_MESSAGES/django.po b/geotrek/altimetry/locale/en/LC_MESSAGES/django.po index 92e043f8a8..100eab849b 100644 --- a/geotrek/altimetry/locale/en/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/es/LC_MESSAGES/django.po b/geotrek/altimetry/locale/es/LC_MESSAGES/django.po index 92e043f8a8..100eab849b 100644 --- a/geotrek/altimetry/locale/es/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po b/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po index 2e0a0ab250..a54f68c851 100644 --- a/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2015-10-06 12:11+0100\n" "Language-Team: \n" "Language: fr\n" diff --git a/geotrek/altimetry/locale/it/LC_MESSAGES/django.po b/geotrek/altimetry/locale/it/LC_MESSAGES/django.po index 92e043f8a8..100eab849b 100644 --- a/geotrek/altimetry/locale/it/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po b/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po index 92e043f8a8..100eab849b 100644 --- a/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/de/LC_MESSAGES/django.po b/geotrek/api/locale/de/LC_MESSAGES/django.po index b147c8506c..3ac7f46be6 100644 --- a/geotrek/api/locale/de/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/en/LC_MESSAGES/django.po b/geotrek/api/locale/en/LC_MESSAGES/django.po index b147c8506c..3ac7f46be6 100644 --- a/geotrek/api/locale/en/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/es/LC_MESSAGES/django.po b/geotrek/api/locale/es/LC_MESSAGES/django.po index b147c8506c..3ac7f46be6 100644 --- a/geotrek/api/locale/es/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/fr/LC_MESSAGES/django.po b/geotrek/api/locale/fr/LC_MESSAGES/django.po index 574381f411..42e237f68e 100644 --- a/geotrek/api/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2020-10-20 16:33+0000\n" "Last-Translator: Bastien Potiron \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/nl/LC_MESSAGES/django.po b/geotrek/api/locale/nl/LC_MESSAGES/django.po index b147c8506c..3ac7f46be6 100644 --- a/geotrek/api/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/de/LC_MESSAGES/django.po b/geotrek/authent/locale/de/LC_MESSAGES/django.po index 5640f3a1ad..6179e8a37d 100644 --- a/geotrek/authent/locale/de/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/en/LC_MESSAGES/django.po b/geotrek/authent/locale/en/LC_MESSAGES/django.po index 5640f3a1ad..6179e8a37d 100644 --- a/geotrek/authent/locale/en/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/es/LC_MESSAGES/django.po b/geotrek/authent/locale/es/LC_MESSAGES/django.po index 5640f3a1ad..6179e8a37d 100644 --- a/geotrek/authent/locale/es/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/fr/LC_MESSAGES/django.po b/geotrek/authent/locale/fr/LC_MESSAGES/django.po index df8665d6ab..6482edede1 100644 --- a/geotrek/authent/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/it/LC_MESSAGES/django.po b/geotrek/authent/locale/it/LC_MESSAGES/django.po index 5640f3a1ad..6179e8a37d 100644 --- a/geotrek/authent/locale/it/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/nl/LC_MESSAGES/django.po b/geotrek/authent/locale/nl/LC_MESSAGES/django.po index 5640f3a1ad..6179e8a37d 100644 --- a/geotrek/authent/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po index f1f9e2f592..27e2b341aa 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po index f1f9e2f592..27e2b341aa 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po index f1f9e2f592..27e2b341aa 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po index da36edf2ab..5a10d2f0af 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po index f1f9e2f592..27e2b341aa 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po index f1f9e2f592..27e2b341aa 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/common/locale/de/LC_MESSAGES/django.po b/geotrek/common/locale/de/LC_MESSAGES/django.po index 3c0d5f7a79..74f89b91d6 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -533,6 +533,27 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Rectangle" +msgstr "" + +msgid "Square" +msgstr "" + +msgid "Ellispe" +msgstr "" + +msgid "Circle" +msgstr "" + +msgid "Polygon" +msgstr "" + +msgid "Point" +msgstr "" + +msgid "Line" +msgstr "" + msgid "Properties" msgstr "" @@ -557,6 +578,11 @@ msgstr "" msgid "Full history" msgstr "" +msgid "" +"Add very high resolution images that will be automatically tiled and add " +"annotations on it (points, lines, polygons and text)" +msgstr "" + msgid "You are not allowed to see HD views." msgstr "" diff --git a/geotrek/common/locale/en/LC_MESSAGES/django.po b/geotrek/common/locale/en/LC_MESSAGES/django.po index 3c0d5f7a79..74f89b91d6 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -533,6 +533,27 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Rectangle" +msgstr "" + +msgid "Square" +msgstr "" + +msgid "Ellispe" +msgstr "" + +msgid "Circle" +msgstr "" + +msgid "Polygon" +msgstr "" + +msgid "Point" +msgstr "" + +msgid "Line" +msgstr "" + msgid "Properties" msgstr "" @@ -557,6 +578,11 @@ msgstr "" msgid "Full history" msgstr "" +msgid "" +"Add very high resolution images that will be automatically tiled and add " +"annotations on it (points, lines, polygons and text)" +msgstr "" + msgid "You are not allowed to see HD views." msgstr "" diff --git a/geotrek/common/locale/es/LC_MESSAGES/django.po b/geotrek/common/locale/es/LC_MESSAGES/django.po index 114f081b66..eeef054843 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Olivia Duval \n" "Language-Team: LANGUAGE \n" @@ -535,6 +535,27 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Rectangle" +msgstr "" + +msgid "Square" +msgstr "" + +msgid "Ellispe" +msgstr "" + +msgid "Circle" +msgstr "" + +msgid "Polygon" +msgstr "" + +msgid "Point" +msgstr "" + +msgid "Line" +msgstr "" + msgid "Properties" msgstr "" @@ -559,6 +580,11 @@ msgstr "" msgid "Full history" msgstr "" +msgid "" +"Add very high resolution images that will be automatically tiled and add " +"annotations on it (points, lines, polygons and text)" +msgstr "" + msgid "You are not allowed to see HD views." msgstr "" diff --git a/geotrek/common/locale/fr/LC_MESSAGES/django.po b/geotrek/common/locale/fr/LC_MESSAGES/django.po index d0d95cdffe..54174058ba 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+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" @@ -533,6 +533,27 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Rectangle" +msgstr "" + +msgid "Square" +msgstr "" + +msgid "Ellispe" +msgstr "" + +msgid "Circle" +msgstr "" + +msgid "Polygon" +msgstr "" + +msgid "Point" +msgstr "" + +msgid "Line" +msgstr "" + msgid "Properties" msgstr "" @@ -557,6 +578,11 @@ msgstr "" msgid "Full history" msgstr "" +msgid "" +"Add very high resolution images that will be automatically tiled and add " +"annotations on it (points, lines, polygons and text)" +msgstr "" + msgid "You are not allowed to see HD views." msgstr "" diff --git a/geotrek/common/locale/nl/LC_MESSAGES/django.po b/geotrek/common/locale/nl/LC_MESSAGES/django.po index 3c0d5f7a79..74f89b91d6 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -533,6 +533,27 @@ msgstr "" msgid "Sync mobile" msgstr "" +msgid "Rectangle" +msgstr "" + +msgid "Square" +msgstr "" + +msgid "Ellispe" +msgstr "" + +msgid "Circle" +msgstr "" + +msgid "Polygon" +msgstr "" + +msgid "Point" +msgstr "" + +msgid "Line" +msgstr "" + msgid "Properties" msgstr "" @@ -557,6 +578,11 @@ msgstr "" msgid "Full history" msgstr "" +msgid "" +"Add very high resolution images that will be automatically tiled and add " +"annotations on it (points, lines, polygons and text)" +msgstr "" + msgid "You are not allowed to see HD views." msgstr "" diff --git a/geotrek/common/templates/common/hdviewpoint_annotation_form.html b/geotrek/common/templates/common/hdviewpoint_annotation_form.html index 9bedd88fe2..6a75ed7343 100644 --- a/geotrek/common/templates/common/hdviewpoint_annotation_form.html +++ b/geotrek/common/templates/common/hdviewpoint_annotation_form.html @@ -6,11 +6,11 @@
- +
{% comment %}
{% endcomment %}
-
Created Annotations
+
{% trans "Created annotations" %}
diff --git a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html index 94cdf1eaaf..b12824a5b6 100644 --- a/geotrek/common/templates/common/hdviewpoint_detail_fragment.html +++ b/geotrek/common/templates/common/hdviewpoint_detail_fragment.html @@ -1,7 +1,7 @@ {% load i18n mapentity_tags %}

{% trans "HD Views" %} - ? + ?

{% if not user.profile.structure == object.structure and not perms.authent.can_bypass_structure %}
diff --git a/geotrek/core/locale/de/LC_MESSAGES/django.po b/geotrek/core/locale/de/LC_MESSAGES/django.po index 1998d5d676..eacf2e85dc 100644 --- a/geotrek/core/locale/de/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/en/LC_MESSAGES/django.po b/geotrek/core/locale/en/LC_MESSAGES/django.po index 1998d5d676..eacf2e85dc 100644 --- a/geotrek/core/locale/en/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/es/LC_MESSAGES/django.po b/geotrek/core/locale/es/LC_MESSAGES/django.po index 1998d5d676..eacf2e85dc 100644 --- a/geotrek/core/locale/es/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/fr/LC_MESSAGES/django.po b/geotrek/core/locale/fr/LC_MESSAGES/django.po index da3ae0d227..53386722d8 100644 --- a/geotrek/core/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/core/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+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" diff --git a/geotrek/core/locale/nl/LC_MESSAGES/django.po b/geotrek/core/locale/nl/LC_MESSAGES/django.po index 1998d5d676..eacf2e85dc 100644 --- a/geotrek/core/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/de/LC_MESSAGES/django.po b/geotrek/diving/locale/de/LC_MESSAGES/django.po index 284df8a52c..7f69dc399f 100644 --- a/geotrek/diving/locale/de/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/en/LC_MESSAGES/django.po b/geotrek/diving/locale/en/LC_MESSAGES/django.po index 284df8a52c..7f69dc399f 100644 --- a/geotrek/diving/locale/en/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/es/LC_MESSAGES/django.po b/geotrek/diving/locale/es/LC_MESSAGES/django.po index 284df8a52c..7f69dc399f 100644 --- a/geotrek/diving/locale/es/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/fr/LC_MESSAGES/django.po b/geotrek/diving/locale/fr/LC_MESSAGES/django.po index 5258ab6af6..2465a5650a 100644 --- a/geotrek/diving/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2020-04-22 06:45+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/nl/LC_MESSAGES/django.po b/geotrek/diving/locale/nl/LC_MESSAGES/django.po index 284df8a52c..7f69dc399f 100644 --- a/geotrek/diving/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/de/LC_MESSAGES/django.po b/geotrek/feedback/locale/de/LC_MESSAGES/django.po index c151f38e92..d5582e1ed8 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/en/LC_MESSAGES/django.po b/geotrek/feedback/locale/en/LC_MESSAGES/django.po index c151f38e92..d5582e1ed8 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/es/LC_MESSAGES/django.po b/geotrek/feedback/locale/es/LC_MESSAGES/django.po index c151f38e92..d5582e1ed8 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/fr/LC_MESSAGES/django.po b/geotrek/feedback/locale/fr/LC_MESSAGES/django.po index 4375600a31..2837a16a6a 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/it/LC_MESSAGES/django.po b/geotrek/feedback/locale/it/LC_MESSAGES/django.po index c151f38e92..d5582e1ed8 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/nl/LC_MESSAGES/django.po b/geotrek/feedback/locale/nl/LC_MESSAGES/django.po index c151f38e92..d5582e1ed8 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/de/LC_MESSAGES/django.po b/geotrek/flatpages/locale/de/LC_MESSAGES/django.po index 64e9fafafd..66c34a306b 100644 --- a/geotrek/flatpages/locale/de/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/en/LC_MESSAGES/django.po b/geotrek/flatpages/locale/en/LC_MESSAGES/django.po index 64e9fafafd..66c34a306b 100644 --- a/geotrek/flatpages/locale/en/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/es/LC_MESSAGES/django.po b/geotrek/flatpages/locale/es/LC_MESSAGES/django.po index 64e9fafafd..66c34a306b 100644 --- a/geotrek/flatpages/locale/es/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po b/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po index 68d77a0bda..66b953c93f 100644 --- a/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/it/LC_MESSAGES/django.po b/geotrek/flatpages/locale/it/LC_MESSAGES/django.po index 64e9fafafd..66c34a306b 100644 --- a/geotrek/flatpages/locale/it/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po b/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po index 64e9fafafd..66c34a306b 100644 --- a/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po index 0504817560..25096496d6 100644 --- a/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po index 8096019b38..0a3e91d7bf 100644 --- a/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po index 8096019b38..0a3e91d7bf 100644 --- a/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po index b730647013..d4f7b605f0 100644 --- a/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2020-04-22 07:48+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po index 8096019b38..0a3e91d7bf 100644 --- a/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/de/LC_MESSAGES/django.po b/geotrek/land/locale/de/LC_MESSAGES/django.po index 0ce765bb2f..2498ac737f 100644 --- a/geotrek/land/locale/de/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/en/LC_MESSAGES/django.po b/geotrek/land/locale/en/LC_MESSAGES/django.po index 0ce765bb2f..2498ac737f 100644 --- a/geotrek/land/locale/en/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/es/LC_MESSAGES/django.po b/geotrek/land/locale/es/LC_MESSAGES/django.po index 0ce765bb2f..2498ac737f 100644 --- a/geotrek/land/locale/es/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/fr/LC_MESSAGES/django.po b/geotrek/land/locale/fr/LC_MESSAGES/django.po index 6ce183c76a..7e47be4248 100644 --- a/geotrek/land/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/it/LC_MESSAGES/django.po b/geotrek/land/locale/it/LC_MESSAGES/django.po index 0ce765bb2f..2498ac737f 100644 --- a/geotrek/land/locale/it/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/nl/LC_MESSAGES/django.po b/geotrek/land/locale/nl/LC_MESSAGES/django.po index 0ce765bb2f..2498ac737f 100644 --- a/geotrek/land/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/de/LC_MESSAGES/django.po b/geotrek/locale/de/LC_MESSAGES/django.po index 6d252291fa..530300941a 100644 --- a/geotrek/locale/de/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/en/LC_MESSAGES/django.po b/geotrek/locale/en/LC_MESSAGES/django.po index 6d252291fa..530300941a 100644 --- a/geotrek/locale/en/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/es/LC_MESSAGES/django.po b/geotrek/locale/es/LC_MESSAGES/django.po index 6d252291fa..530300941a 100644 --- a/geotrek/locale/es/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/fr/LC_MESSAGES/django.po b/geotrek/locale/fr/LC_MESSAGES/django.po index 6a6dc86e66..9484e1f54a 100644 --- a/geotrek/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+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" diff --git a/geotrek/locale/nl/LC_MESSAGES/django.po b/geotrek/locale/nl/LC_MESSAGES/django.po index 6d252291fa..530300941a 100644 --- a/geotrek/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/de/LC_MESSAGES/django.po b/geotrek/maintenance/locale/de/LC_MESSAGES/django.po index ca768b6207..fa53e086a6 100644 --- a/geotrek/maintenance/locale/de/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/en/LC_MESSAGES/django.po b/geotrek/maintenance/locale/en/LC_MESSAGES/django.po index ca768b6207..fa53e086a6 100644 --- a/geotrek/maintenance/locale/en/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/es/LC_MESSAGES/django.po b/geotrek/maintenance/locale/es/LC_MESSAGES/django.po index ca768b6207..fa53e086a6 100644 --- a/geotrek/maintenance/locale/es/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po b/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po index fe111e4f34..756e37434c 100644 --- a/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/it/LC_MESSAGES/django.po b/geotrek/maintenance/locale/it/LC_MESSAGES/django.po index ca768b6207..fa53e086a6 100644 --- a/geotrek/maintenance/locale/it/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po b/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po index ca768b6207..fa53e086a6 100644 --- a/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/de/LC_MESSAGES/django.po b/geotrek/outdoor/locale/de/LC_MESSAGES/django.po index 810aac3842..1eab43daf6 100644 --- a/geotrek/outdoor/locale/de/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/en/LC_MESSAGES/django.po b/geotrek/outdoor/locale/en/LC_MESSAGES/django.po index 810aac3842..1eab43daf6 100644 --- a/geotrek/outdoor/locale/en/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/es/LC_MESSAGES/django.po b/geotrek/outdoor/locale/es/LC_MESSAGES/django.po index 810aac3842..1eab43daf6 100644 --- a/geotrek/outdoor/locale/es/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po b/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po index 8200ea81c7..1da21cfc1d 100644 --- a/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/it/LC_MESSAGES/django.po b/geotrek/outdoor/locale/it/LC_MESSAGES/django.po index 810aac3842..1eab43daf6 100644 --- a/geotrek/outdoor/locale/it/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po b/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po index 810aac3842..1eab43daf6 100644 --- a/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po index fbfd80a102..7e6d1da7c0 100644 --- a/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po index fbfd80a102..7e6d1da7c0 100644 --- a/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po index fbfd80a102..7e6d1da7c0 100644 --- a/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po index 776882f990..51dac87292 100644 --- a/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2020-04-22 07:48+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po index fbfd80a102..7e6d1da7c0 100644 --- a/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/de/LC_MESSAGES/django.po b/geotrek/signage/locale/de/LC_MESSAGES/django.po index cb458db548..6ac8874604 100644 --- a/geotrek/signage/locale/de/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/en/LC_MESSAGES/django.po b/geotrek/signage/locale/en/LC_MESSAGES/django.po index cb458db548..6ac8874604 100644 --- a/geotrek/signage/locale/en/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/es/LC_MESSAGES/django.po b/geotrek/signage/locale/es/LC_MESSAGES/django.po index cb458db548..6ac8874604 100644 --- a/geotrek/signage/locale/es/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/fr/LC_MESSAGES/django.po b/geotrek/signage/locale/fr/LC_MESSAGES/django.po index 04cd41243d..643005a613 100644 --- a/geotrek/signage/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/signage/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2015-09-25 17:37+0100\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/geotrek/signage/locale/it/LC_MESSAGES/django.po b/geotrek/signage/locale/it/LC_MESSAGES/django.po index cb458db548..6ac8874604 100644 --- a/geotrek/signage/locale/it/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/nl/LC_MESSAGES/django.po b/geotrek/signage/locale/nl/LC_MESSAGES/django.po index cb458db548..6ac8874604 100644 --- a/geotrek/signage/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/de/LC_MESSAGES/django.po b/geotrek/tourism/locale/de/LC_MESSAGES/django.po index 327105079a..c1e46b6fbf 100644 --- a/geotrek/tourism/locale/de/LC_MESSAGES/django.po +++ b/geotrek/tourism/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2015-10-22 14:33+0200\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/geotrek/tourism/locale/en/LC_MESSAGES/django.po b/geotrek/tourism/locale/en/LC_MESSAGES/django.po index c5a7fcd43d..05cc94b291 100644 --- a/geotrek/tourism/locale/en/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/es/LC_MESSAGES/django.po b/geotrek/tourism/locale/es/LC_MESSAGES/django.po index c5a7fcd43d..05cc94b291 100644 --- a/geotrek/tourism/locale/es/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/fr/LC_MESSAGES/django.po b/geotrek/tourism/locale/fr/LC_MESSAGES/django.po index c4bd4c6541..fe4bcbdd0f 100644 --- a/geotrek/tourism/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/tourism/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2020-04-22 07:36+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/nl/LC_MESSAGES/django.po b/geotrek/tourism/locale/nl/LC_MESSAGES/django.po index c5a7fcd43d..05cc94b291 100644 --- a/geotrek/tourism/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/trekking/locale/de/LC_MESSAGES/django.po b/geotrek/trekking/locale/de/LC_MESSAGES/django.po index 68a23eda53..f34040d2b2 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2015-10-21 11:16+0200\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/geotrek/trekking/locale/en/LC_MESSAGES/django.po b/geotrek/trekking/locale/en/LC_MESSAGES/django.po index ae80cc2ed8..6ab5e6d588 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/trekking/locale/es/LC_MESSAGES/django.po b/geotrek/trekking/locale/es/LC_MESSAGES/django.po index 6062a0ff41..ae99d8ac07 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 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" diff --git a/geotrek/trekking/locale/fr/LC_MESSAGES/django.po b/geotrek/trekking/locale/fr/LC_MESSAGES/django.po index 4c4bd43243..acf6aae162 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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: 2020-09-22 15:57+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/en/LC_MESSAGES/django.po b/geotrek/zoning/locale/en/LC_MESSAGES/django.po index 05e8f7e820..316a853997 100644 --- a/geotrek/zoning/locale/en/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/es/LC_MESSAGES/django.po b/geotrek/zoning/locale/es/LC_MESSAGES/django.po index 05e8f7e820..316a853997 100644 --- a/geotrek/zoning/locale/es/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/fr/LC_MESSAGES/django.po b/geotrek/zoning/locale/fr/LC_MESSAGES/django.po index 667559852a..8d9402f3ec 100644 --- a/geotrek/zoning/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/it/LC_MESSAGES/django.po b/geotrek/zoning/locale/it/LC_MESSAGES/django.po index dd93fe02a2..c1e18a12a1 100644 --- a/geotrek/zoning/locale/it/LC_MESSAGES/django.po +++ b/geotrek/zoning/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/nl/LC_MESSAGES/django.po b/geotrek/zoning/locale/nl/LC_MESSAGES/django.po index 05e8f7e820..316a853997 100644 --- a/geotrek/zoning/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-12-15 14:39+0000\n" +"POT-Creation-Date: 2022-12-15 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" From 54ddddc0865c383620af69888aa8a1ad46ae82b5 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Fri, 16 Dec 2022 10:56:33 +0100 Subject: [PATCH 093/103] :globe_with_meridians: Update translations --- .../altimetry/locale/de/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/en/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/es/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/fr/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/it/LC_MESSAGES/django.po | 2 +- .../altimetry/locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/api/locale/nl/LC_MESSAGES/django.po | 2 +- .../authent/locale/de/LC_MESSAGES/django.po | 2 +- .../authent/locale/en/LC_MESSAGES/django.po | 2 +- .../authent/locale/es/LC_MESSAGES/django.po | 2 +- .../authent/locale/fr/LC_MESSAGES/django.po | 2 +- .../authent/locale/it/LC_MESSAGES/django.po | 2 +- .../authent/locale/nl/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/de/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/en/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/es/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/fr/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/it/LC_MESSAGES/django.po | 2 +- .../cirkwi/locale/nl/LC_MESSAGES/django.po | 2 +- .../common/locale/de/LC_MESSAGES/django.po | 7 +++++-- .../common/locale/en/LC_MESSAGES/django.po | 7 +++++-- .../common/locale/es/LC_MESSAGES/django.po | 7 +++++-- .../common/locale/fr/LC_MESSAGES/django.po | 21 +++++++++++-------- .../common/locale/it/LC_MESSAGES/django.po | 7 +++++-- .../common/locale/nl/LC_MESSAGES/django.po | 7 +++++-- geotrek/core/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/core/locale/nl/LC_MESSAGES/django.po | 2 +- .../diving/locale/de/LC_MESSAGES/django.po | 2 +- .../diving/locale/en/LC_MESSAGES/django.po | 2 +- .../diving/locale/es/LC_MESSAGES/django.po | 2 +- .../diving/locale/fr/LC_MESSAGES/django.po | 2 +- .../diving/locale/it/LC_MESSAGES/django.po | 2 +- .../diving/locale/nl/LC_MESSAGES/django.po | 2 +- .../feedback/locale/de/LC_MESSAGES/django.po | 2 +- .../feedback/locale/en/LC_MESSAGES/django.po | 2 +- .../feedback/locale/es/LC_MESSAGES/django.po | 2 +- .../feedback/locale/fr/LC_MESSAGES/django.po | 2 +- .../feedback/locale/it/LC_MESSAGES/django.po | 2 +- .../feedback/locale/nl/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/de/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/en/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/es/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/fr/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/it/LC_MESSAGES/django.po | 2 +- .../flatpages/locale/nl/LC_MESSAGES/django.po | 2 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/land/locale/nl/LC_MESSAGES/django.po | 2 +- geotrek/locale/de/LC_MESSAGES/django.po | 2 +- geotrek/locale/en/LC_MESSAGES/django.po | 2 +- geotrek/locale/es/LC_MESSAGES/django.po | 2 +- geotrek/locale/fr/LC_MESSAGES/django.po | 2 +- geotrek/locale/it/LC_MESSAGES/django.po | 2 +- geotrek/locale/nl/LC_MESSAGES/django.po | 2 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/de/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/en/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/es/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/fr/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/it/LC_MESSAGES/django.po | 2 +- .../outdoor/locale/nl/LC_MESSAGES/django.po | 2 +- .../locale/de/LC_MESSAGES/django.po | 2 +- .../locale/en/LC_MESSAGES/django.po | 2 +- .../locale/es/LC_MESSAGES/django.po | 2 +- .../locale/fr/LC_MESSAGES/django.po | 2 +- .../locale/it/LC_MESSAGES/django.po | 2 +- .../locale/nl/LC_MESSAGES/django.po | 2 +- .../signage/locale/de/LC_MESSAGES/django.po | 2 +- .../signage/locale/en/LC_MESSAGES/django.po | 2 +- .../signage/locale/es/LC_MESSAGES/django.po | 2 +- .../signage/locale/fr/LC_MESSAGES/django.po | 2 +- .../signage/locale/it/LC_MESSAGES/django.po | 2 +- .../signage/locale/nl/LC_MESSAGES/django.po | 2 +- .../tourism/locale/de/LC_MESSAGES/django.po | 2 +- .../tourism/locale/en/LC_MESSAGES/django.po | 2 +- .../tourism/locale/es/LC_MESSAGES/django.po | 2 +- .../tourism/locale/fr/LC_MESSAGES/django.po | 2 +- .../tourism/locale/it/LC_MESSAGES/django.po | 2 +- .../tourism/locale/nl/LC_MESSAGES/django.po | 2 +- .../trekking/locale/de/LC_MESSAGES/django.po | 2 +- .../trekking/locale/en/LC_MESSAGES/django.po | 2 +- .../trekking/locale/es/LC_MESSAGES/django.po | 2 +- .../trekking/locale/fr/LC_MESSAGES/django.po | 2 +- .../trekking/locale/it/LC_MESSAGES/django.po | 2 +- .../trekking/locale/nl/LC_MESSAGES/django.po | 2 +- .../zoning/locale/de/LC_MESSAGES/django.po | 2 +- .../zoning/locale/en/LC_MESSAGES/django.po | 2 +- .../zoning/locale/es/LC_MESSAGES/django.po | 2 +- .../zoning/locale/fr/LC_MESSAGES/django.po | 2 +- .../zoning/locale/it/LC_MESSAGES/django.po | 2 +- .../zoning/locale/nl/LC_MESSAGES/django.po | 2 +- 114 files changed, 145 insertions(+), 127 deletions(-) diff --git a/geotrek/altimetry/locale/de/LC_MESSAGES/django.po b/geotrek/altimetry/locale/de/LC_MESSAGES/django.po index 100eab849b..682963a726 100644 --- a/geotrek/altimetry/locale/de/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/en/LC_MESSAGES/django.po b/geotrek/altimetry/locale/en/LC_MESSAGES/django.po index 100eab849b..682963a726 100644 --- a/geotrek/altimetry/locale/en/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/es/LC_MESSAGES/django.po b/geotrek/altimetry/locale/es/LC_MESSAGES/django.po index 100eab849b..682963a726 100644 --- a/geotrek/altimetry/locale/es/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po b/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po index a54f68c851..fc677764e7 100644 --- a/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/altimetry/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2015-10-06 12:11+0100\n" "Language-Team: \n" "Language: fr\n" diff --git a/geotrek/altimetry/locale/it/LC_MESSAGES/django.po b/geotrek/altimetry/locale/it/LC_MESSAGES/django.po index 100eab849b..682963a726 100644 --- a/geotrek/altimetry/locale/it/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po b/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po index 100eab849b..682963a726 100644 --- a/geotrek/altimetry/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/altimetry/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/de/LC_MESSAGES/django.po b/geotrek/api/locale/de/LC_MESSAGES/django.po index 3ac7f46be6..590832e74b 100644 --- a/geotrek/api/locale/de/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/en/LC_MESSAGES/django.po b/geotrek/api/locale/en/LC_MESSAGES/django.po index 3ac7f46be6..590832e74b 100644 --- a/geotrek/api/locale/en/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/es/LC_MESSAGES/django.po b/geotrek/api/locale/es/LC_MESSAGES/django.po index 3ac7f46be6..590832e74b 100644 --- a/geotrek/api/locale/es/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/fr/LC_MESSAGES/django.po b/geotrek/api/locale/fr/LC_MESSAGES/django.po index 42e237f68e..18a3bcd29e 100644 --- a/geotrek/api/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2020-10-20 16:33+0000\n" "Last-Translator: Bastien Potiron \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/api/locale/nl/LC_MESSAGES/django.po b/geotrek/api/locale/nl/LC_MESSAGES/django.po index 3ac7f46be6..590832e74b 100644 --- a/geotrek/api/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/api/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/de/LC_MESSAGES/django.po b/geotrek/authent/locale/de/LC_MESSAGES/django.po index 6179e8a37d..ef81ec09f5 100644 --- a/geotrek/authent/locale/de/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/en/LC_MESSAGES/django.po b/geotrek/authent/locale/en/LC_MESSAGES/django.po index 6179e8a37d..ef81ec09f5 100644 --- a/geotrek/authent/locale/en/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/es/LC_MESSAGES/django.po b/geotrek/authent/locale/es/LC_MESSAGES/django.po index 6179e8a37d..ef81ec09f5 100644 --- a/geotrek/authent/locale/es/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/fr/LC_MESSAGES/django.po b/geotrek/authent/locale/fr/LC_MESSAGES/django.po index 6482edede1..cfdf2a60e3 100644 --- a/geotrek/authent/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/it/LC_MESSAGES/django.po b/geotrek/authent/locale/it/LC_MESSAGES/django.po index 6179e8a37d..ef81ec09f5 100644 --- a/geotrek/authent/locale/it/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/authent/locale/nl/LC_MESSAGES/django.po b/geotrek/authent/locale/nl/LC_MESSAGES/django.po index 6179e8a37d..ef81ec09f5 100644 --- a/geotrek/authent/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/authent/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/de/LC_MESSAGES/django.po index 27e2b341aa..c355d7621d 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/en/LC_MESSAGES/django.po index 27e2b341aa..c355d7621d 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/es/LC_MESSAGES/django.po index 27e2b341aa..c355d7621d 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/fr/LC_MESSAGES/django.po index 5a10d2f0af..a72ee443bf 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/it/LC_MESSAGES/django.po index 27e2b341aa..c355d7621d 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po b/geotrek/cirkwi/locale/nl/LC_MESSAGES/django.po index 27e2b341aa..c355d7621d 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/common/locale/de/LC_MESSAGES/django.po b/geotrek/common/locale/de/LC_MESSAGES/django.po index 74f89b91d6..a22c1c3211 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -539,7 +539,7 @@ msgstr "" msgid "Square" msgstr "" -msgid "Ellispe" +msgid "Ellipse" msgstr "" msgid "Circle" @@ -554,6 +554,9 @@ msgstr "" msgid "Line" msgstr "" +msgid "Created annotations" +msgstr "" + msgid "Properties" msgstr "" diff --git a/geotrek/common/locale/en/LC_MESSAGES/django.po b/geotrek/common/locale/en/LC_MESSAGES/django.po index 74f89b91d6..a22c1c3211 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -539,7 +539,7 @@ msgstr "" msgid "Square" msgstr "" -msgid "Ellispe" +msgid "Ellipse" msgstr "" msgid "Circle" @@ -554,6 +554,9 @@ msgstr "" msgid "Line" msgstr "" +msgid "Created annotations" +msgstr "" + msgid "Properties" msgstr "" diff --git a/geotrek/common/locale/es/LC_MESSAGES/django.po b/geotrek/common/locale/es/LC_MESSAGES/django.po index eeef054843..ba1ae09a4e 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Olivia Duval \n" "Language-Team: LANGUAGE \n" @@ -541,7 +541,7 @@ msgstr "" msgid "Square" msgstr "" -msgid "Ellispe" +msgid "Ellipse" msgstr "" msgid "Circle" @@ -556,6 +556,9 @@ msgstr "" msgid "Line" msgstr "" +msgid "Created annotations" +msgstr "" + msgid "Properties" msgstr "" diff --git a/geotrek/common/locale/fr/LC_MESSAGES/django.po b/geotrek/common/locale/fr/LC_MESSAGES/django.po index 54174058ba..857b7d4d1b 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+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" @@ -539,7 +539,7 @@ msgstr "" msgid "Square" msgstr "" -msgid "Ellispe" +msgid "Ellipse" msgstr "" msgid "Circle" @@ -554,6 +554,9 @@ msgstr "" msgid "Line" msgstr "" +msgid "Created annotations" +msgstr "" + msgid "Properties" msgstr "" diff --git a/geotrek/common/locale/nl/LC_MESSAGES/django.po b/geotrek/common/locale/nl/LC_MESSAGES/django.po index 74f89b91d6..a22c1c3211 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -539,7 +539,7 @@ msgstr "" msgid "Square" msgstr "" -msgid "Ellispe" +msgid "Ellipse" msgstr "" msgid "Circle" @@ -554,6 +554,9 @@ msgstr "" msgid "Line" msgstr "" +msgid "Created annotations" +msgstr "" + msgid "Properties" msgstr "" diff --git a/geotrek/core/locale/de/LC_MESSAGES/django.po b/geotrek/core/locale/de/LC_MESSAGES/django.po index eacf2e85dc..4092098ccd 100644 --- a/geotrek/core/locale/de/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/en/LC_MESSAGES/django.po b/geotrek/core/locale/en/LC_MESSAGES/django.po index eacf2e85dc..4092098ccd 100644 --- a/geotrek/core/locale/en/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/es/LC_MESSAGES/django.po b/geotrek/core/locale/es/LC_MESSAGES/django.po index eacf2e85dc..4092098ccd 100644 --- a/geotrek/core/locale/es/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/core/locale/fr/LC_MESSAGES/django.po b/geotrek/core/locale/fr/LC_MESSAGES/django.po index 53386722d8..47cd03c3cf 100644 --- a/geotrek/core/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/core/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+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" diff --git a/geotrek/core/locale/nl/LC_MESSAGES/django.po b/geotrek/core/locale/nl/LC_MESSAGES/django.po index eacf2e85dc..4092098ccd 100644 --- a/geotrek/core/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/core/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/de/LC_MESSAGES/django.po b/geotrek/diving/locale/de/LC_MESSAGES/django.po index 7f69dc399f..e9ddc48f8d 100644 --- a/geotrek/diving/locale/de/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/en/LC_MESSAGES/django.po b/geotrek/diving/locale/en/LC_MESSAGES/django.po index 7f69dc399f..e9ddc48f8d 100644 --- a/geotrek/diving/locale/en/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/es/LC_MESSAGES/django.po b/geotrek/diving/locale/es/LC_MESSAGES/django.po index 7f69dc399f..e9ddc48f8d 100644 --- a/geotrek/diving/locale/es/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/fr/LC_MESSAGES/django.po b/geotrek/diving/locale/fr/LC_MESSAGES/django.po index 2465a5650a..14f754d467 100644 --- a/geotrek/diving/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2020-04-22 06:45+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/diving/locale/nl/LC_MESSAGES/django.po b/geotrek/diving/locale/nl/LC_MESSAGES/django.po index 7f69dc399f..e9ddc48f8d 100644 --- a/geotrek/diving/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/diving/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/de/LC_MESSAGES/django.po b/geotrek/feedback/locale/de/LC_MESSAGES/django.po index d5582e1ed8..ed60e5edc1 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/en/LC_MESSAGES/django.po b/geotrek/feedback/locale/en/LC_MESSAGES/django.po index d5582e1ed8..ed60e5edc1 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/es/LC_MESSAGES/django.po b/geotrek/feedback/locale/es/LC_MESSAGES/django.po index d5582e1ed8..ed60e5edc1 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/fr/LC_MESSAGES/django.po b/geotrek/feedback/locale/fr/LC_MESSAGES/django.po index 2837a16a6a..a9a9f5c4cb 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/it/LC_MESSAGES/django.po b/geotrek/feedback/locale/it/LC_MESSAGES/django.po index d5582e1ed8..ed60e5edc1 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/feedback/locale/nl/LC_MESSAGES/django.po b/geotrek/feedback/locale/nl/LC_MESSAGES/django.po index d5582e1ed8..ed60e5edc1 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/de/LC_MESSAGES/django.po b/geotrek/flatpages/locale/de/LC_MESSAGES/django.po index 66c34a306b..b9f8fc6ff9 100644 --- a/geotrek/flatpages/locale/de/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/en/LC_MESSAGES/django.po b/geotrek/flatpages/locale/en/LC_MESSAGES/django.po index 66c34a306b..b9f8fc6ff9 100644 --- a/geotrek/flatpages/locale/en/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/es/LC_MESSAGES/django.po b/geotrek/flatpages/locale/es/LC_MESSAGES/django.po index 66c34a306b..b9f8fc6ff9 100644 --- a/geotrek/flatpages/locale/es/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po b/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po index 66b953c93f..b7ead1b032 100644 --- a/geotrek/flatpages/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/it/LC_MESSAGES/django.po b/geotrek/flatpages/locale/it/LC_MESSAGES/django.po index 66c34a306b..b9f8fc6ff9 100644 --- a/geotrek/flatpages/locale/it/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po b/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po index 66c34a306b..b9f8fc6ff9 100644 --- a/geotrek/flatpages/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/flatpages/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po index 25096496d6..8f34f483a6 100644 --- a/geotrek/infrastructure/locale/de/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po index 0a3e91d7bf..0bfc4c79f5 100644 --- a/geotrek/infrastructure/locale/en/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po index 0a3e91d7bf..0bfc4c79f5 100644 --- a/geotrek/infrastructure/locale/es/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po index d4f7b605f0..94f655d260 100644 --- a/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2020-04-22 07:48+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po b/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po index 0a3e91d7bf..0bfc4c79f5 100644 --- a/geotrek/infrastructure/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/infrastructure/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/de/LC_MESSAGES/django.po b/geotrek/land/locale/de/LC_MESSAGES/django.po index 2498ac737f..e1ef41213b 100644 --- a/geotrek/land/locale/de/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/en/LC_MESSAGES/django.po b/geotrek/land/locale/en/LC_MESSAGES/django.po index 2498ac737f..e1ef41213b 100644 --- a/geotrek/land/locale/en/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/es/LC_MESSAGES/django.po b/geotrek/land/locale/es/LC_MESSAGES/django.po index 2498ac737f..e1ef41213b 100644 --- a/geotrek/land/locale/es/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/fr/LC_MESSAGES/django.po b/geotrek/land/locale/fr/LC_MESSAGES/django.po index 7e47be4248..6c7ebf136e 100644 --- a/geotrek/land/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/it/LC_MESSAGES/django.po b/geotrek/land/locale/it/LC_MESSAGES/django.po index 2498ac737f..e1ef41213b 100644 --- a/geotrek/land/locale/it/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/land/locale/nl/LC_MESSAGES/django.po b/geotrek/land/locale/nl/LC_MESSAGES/django.po index 2498ac737f..e1ef41213b 100644 --- a/geotrek/land/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/land/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/de/LC_MESSAGES/django.po b/geotrek/locale/de/LC_MESSAGES/django.po index 530300941a..d87004af8f 100644 --- a/geotrek/locale/de/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/en/LC_MESSAGES/django.po b/geotrek/locale/en/LC_MESSAGES/django.po index 530300941a..d87004af8f 100644 --- a/geotrek/locale/en/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/es/LC_MESSAGES/django.po b/geotrek/locale/es/LC_MESSAGES/django.po index 530300941a..d87004af8f 100644 --- a/geotrek/locale/es/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/locale/fr/LC_MESSAGES/django.po b/geotrek/locale/fr/LC_MESSAGES/django.po index 9484e1f54a..b73d05123a 100644 --- a/geotrek/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+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" diff --git a/geotrek/locale/nl/LC_MESSAGES/django.po b/geotrek/locale/nl/LC_MESSAGES/django.po index 530300941a..d87004af8f 100644 --- a/geotrek/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/de/LC_MESSAGES/django.po b/geotrek/maintenance/locale/de/LC_MESSAGES/django.po index fa53e086a6..434260d4a0 100644 --- a/geotrek/maintenance/locale/de/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/en/LC_MESSAGES/django.po b/geotrek/maintenance/locale/en/LC_MESSAGES/django.po index fa53e086a6..434260d4a0 100644 --- a/geotrek/maintenance/locale/en/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/es/LC_MESSAGES/django.po b/geotrek/maintenance/locale/es/LC_MESSAGES/django.po index fa53e086a6..434260d4a0 100644 --- a/geotrek/maintenance/locale/es/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po b/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po index 756e37434c..1875df9846 100644 --- a/geotrek/maintenance/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/it/LC_MESSAGES/django.po b/geotrek/maintenance/locale/it/LC_MESSAGES/django.po index fa53e086a6..434260d4a0 100644 --- a/geotrek/maintenance/locale/it/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po b/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po index fa53e086a6..434260d4a0 100644 --- a/geotrek/maintenance/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/maintenance/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/de/LC_MESSAGES/django.po b/geotrek/outdoor/locale/de/LC_MESSAGES/django.po index 1eab43daf6..f3dc89fd9c 100644 --- a/geotrek/outdoor/locale/de/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/en/LC_MESSAGES/django.po b/geotrek/outdoor/locale/en/LC_MESSAGES/django.po index 1eab43daf6..f3dc89fd9c 100644 --- a/geotrek/outdoor/locale/en/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/es/LC_MESSAGES/django.po b/geotrek/outdoor/locale/es/LC_MESSAGES/django.po index 1eab43daf6..f3dc89fd9c 100644 --- a/geotrek/outdoor/locale/es/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po b/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po index 1da21cfc1d..f8b4a04d0e 100644 --- a/geotrek/outdoor/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/it/LC_MESSAGES/django.po b/geotrek/outdoor/locale/it/LC_MESSAGES/django.po index 1eab43daf6..f3dc89fd9c 100644 --- a/geotrek/outdoor/locale/it/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po b/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po index 1eab43daf6..f3dc89fd9c 100644 --- a/geotrek/outdoor/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/outdoor/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po index 7e6d1da7c0..1225ef8ccc 100644 --- a/geotrek/sensitivity/locale/de/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po index 7e6d1da7c0..1225ef8ccc 100644 --- a/geotrek/sensitivity/locale/en/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po index 7e6d1da7c0..1225ef8ccc 100644 --- a/geotrek/sensitivity/locale/es/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po index 51dac87292..d1647ed05d 100644 --- a/geotrek/sensitivity/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2020-04-22 07:48+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po b/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po index 7e6d1da7c0..1225ef8ccc 100644 --- a/geotrek/sensitivity/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/sensitivity/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/de/LC_MESSAGES/django.po b/geotrek/signage/locale/de/LC_MESSAGES/django.po index 6ac8874604..f718085c1e 100644 --- a/geotrek/signage/locale/de/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/en/LC_MESSAGES/django.po b/geotrek/signage/locale/en/LC_MESSAGES/django.po index 6ac8874604..f718085c1e 100644 --- a/geotrek/signage/locale/en/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/es/LC_MESSAGES/django.po b/geotrek/signage/locale/es/LC_MESSAGES/django.po index 6ac8874604..f718085c1e 100644 --- a/geotrek/signage/locale/es/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/fr/LC_MESSAGES/django.po b/geotrek/signage/locale/fr/LC_MESSAGES/django.po index 643005a613..6d9824600d 100644 --- a/geotrek/signage/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/signage/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2015-09-25 17:37+0100\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/geotrek/signage/locale/it/LC_MESSAGES/django.po b/geotrek/signage/locale/it/LC_MESSAGES/django.po index 6ac8874604..f718085c1e 100644 --- a/geotrek/signage/locale/it/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/signage/locale/nl/LC_MESSAGES/django.po b/geotrek/signage/locale/nl/LC_MESSAGES/django.po index 6ac8874604..f718085c1e 100644 --- a/geotrek/signage/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/signage/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/de/LC_MESSAGES/django.po b/geotrek/tourism/locale/de/LC_MESSAGES/django.po index c1e46b6fbf..ebc1e1ced2 100644 --- a/geotrek/tourism/locale/de/LC_MESSAGES/django.po +++ b/geotrek/tourism/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2015-10-22 14:33+0200\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/geotrek/tourism/locale/en/LC_MESSAGES/django.po b/geotrek/tourism/locale/en/LC_MESSAGES/django.po index 05cc94b291..b08e43f80d 100644 --- a/geotrek/tourism/locale/en/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/es/LC_MESSAGES/django.po b/geotrek/tourism/locale/es/LC_MESSAGES/django.po index 05cc94b291..b08e43f80d 100644 --- a/geotrek/tourism/locale/es/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/fr/LC_MESSAGES/django.po b/geotrek/tourism/locale/fr/LC_MESSAGES/django.po index fe4bcbdd0f..6f07eef2d5 100644 --- a/geotrek/tourism/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/tourism/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2020-04-22 07:36+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/tourism/locale/nl/LC_MESSAGES/django.po b/geotrek/tourism/locale/nl/LC_MESSAGES/django.po index 05cc94b291..b08e43f80d 100644 --- a/geotrek/tourism/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/tourism/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/trekking/locale/de/LC_MESSAGES/django.po b/geotrek/trekking/locale/de/LC_MESSAGES/django.po index f34040d2b2..d468a706b9 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2015-10-21 11:16+0200\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/geotrek/trekking/locale/en/LC_MESSAGES/django.po b/geotrek/trekking/locale/en/LC_MESSAGES/django.po index 6ab5e6d588..a05efb5a4a 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/trekking/locale/es/LC_MESSAGES/django.po b/geotrek/trekking/locale/es/LC_MESSAGES/django.po index ae99d8ac07..43af9429cc 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2015-10-21 11:16+0200\n" "Last-Translator: jean-etienne.castagnede@makina-corpus.com\n" "Language-Team: \n" diff --git a/geotrek/trekking/locale/fr/LC_MESSAGES/django.po b/geotrek/trekking/locale/fr/LC_MESSAGES/django.po index acf6aae162..bad30292d1 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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: 2020-09-22 15:57+0000\n" "Last-Translator: Emmanuelle Helly \n" "Language-Team: French \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/en/LC_MESSAGES/django.po b/geotrek/zoning/locale/en/LC_MESSAGES/django.po index 316a853997..e09b890550 100644 --- a/geotrek/zoning/locale/en/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/es/LC_MESSAGES/django.po b/geotrek/zoning/locale/es/LC_MESSAGES/django.po index 316a853997..e09b890550 100644 --- a/geotrek/zoning/locale/es/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/fr/LC_MESSAGES/django.po b/geotrek/zoning/locale/fr/LC_MESSAGES/django.po index 8d9402f3ec..7a3b0d070c 100644 --- a/geotrek/zoning/locale/fr/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/it/LC_MESSAGES/django.po b/geotrek/zoning/locale/it/LC_MESSAGES/django.po index c1e18a12a1..c18039535d 100644 --- a/geotrek/zoning/locale/it/LC_MESSAGES/django.po +++ b/geotrek/zoning/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/geotrek/zoning/locale/nl/LC_MESSAGES/django.po b/geotrek/zoning/locale/nl/LC_MESSAGES/django.po index 316a853997..e09b890550 100644 --- a/geotrek/zoning/locale/nl/LC_MESSAGES/django.po +++ b/geotrek/zoning/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: 2022-12-15 15:41+0000\n" +"POT-Creation-Date: 2022-12-16 09:52+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" From 9ff745e9dc8431d7407bb8c764d480992fabbc06 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 20 Dec 2022 17:15:54 +0100 Subject: [PATCH 094/103] :twisted_rightwards_arrows: Fix merge --- geotrek/common/migrations/0029_hdviewpoint.py | 4 ---- geotrek/common/tests/test_models.py | 3 --- geotrek/common/tests/test_views.py | 3 --- 3 files changed, 10 deletions(-) diff --git a/geotrek/common/migrations/0029_hdviewpoint.py b/geotrek/common/migrations/0029_hdviewpoint.py index bf2d023249..41f2754c4b 100644 --- a/geotrek/common/migrations/0029_hdviewpoint.py +++ b/geotrek/common/migrations/0029_hdviewpoint.py @@ -1,8 +1,4 @@ -<<<<<<< HEAD # Generated by Django 3.2.16 on 2022-12-20 16:02 -======= -# Generated by Django 3.2.16 on 2022-12-20 14:25 ->>>>>>> :recycle: Refactor HD Views using `MapEntityMixin` from django.conf import settings import django.contrib.gis.db.models.fields diff --git a/geotrek/common/tests/test_models.py b/geotrek/common/tests/test_models.py index e3e0061876..d3b1fd4416 100644 --- a/geotrek/common/tests/test_models.py +++ b/geotrek/common/tests/test_models.py @@ -73,10 +73,7 @@ def test_tiles_url(self): self.assertEqual( self.vp.get_generic_picture_tile_url(), f"/api/hdviewpoint/drf/hdviewpoints/{self.vp.pk}/tiles/{{z}}/{{x}}/{{y}}.png?source=vips" ) -<<<<<<< HEAD def test_properties(self): self.assertEqual(str(self.vp), 'Panorama') self.assertIn('admin/', self.vp.get_list_url()) -======= ->>>>>>> :recycle: Refactor HD Views using `MapEntityMixin` diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index f3c7797115..6522898ac9 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -421,7 +421,6 @@ def setUpTestData(cls): cls.directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data') cls.files = [f for f in os.listdir(cls.directory)] -<<<<<<< HEAD def test_crud_view(self): """ Test CRUD rights and views for HD View Point object @@ -486,8 +485,6 @@ def test_crud_view(self): self.assertEqual(response.status_code, 200) self.assertEqual(HDViewPoint.objects.count(), 0) -======= ->>>>>>> :recycle: Refactor HD Views using `MapEntityMixin` def test_tiles_view(self): """ Test access rights for HD View Point tile endpoint From 7715b12ca29131001af307e7ed9ebf15379eb7ef Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 20 Dec 2022 17:22:12 +0100 Subject: [PATCH 095/103] :twisted_rightwards_arrows: Fix merge --- geotrek/common/tests/test_views.py | 1 - geotrek/common/views.py | 1 - 2 files changed, 2 deletions(-) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 6522898ac9..e57dbe5a3d 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -26,7 +26,6 @@ from geotrek.common.tests.factories import (HDViewPointFactory, LicenseFactory, TargetPortalFactory) from geotrek.common.utils.testdata import get_dummy_uploaded_image -from geotrek.common.views import HDViewPointAPIViewSet from geotrek.core.models import Path from geotrek.trekking.models import Trek from geotrek.trekking.tests.factories import TrekFactory diff --git a/geotrek/common/views.py b/geotrek/common/views.py index ab73bf9a1b..d6088b23fa 100644 --- a/geotrek/common/views.py +++ b/geotrek/common/views.py @@ -27,7 +27,6 @@ from django.utils import timezone, translation from django.utils.decorators import method_decorator from django.utils.encoding import force_str -from django.utils.functional import classproperty from django.utils.translation import gettext as _ from django.views import static from django.views.decorators.http import require_http_methods, require_POST From 21fbe26c89a55a667f765a26270e62b9bf545504 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 21 Dec 2022 09:19:28 +0100 Subject: [PATCH 096/103] :white_check_mark: Add tests for HD Views API ViewSet and Serializer --- geotrek/common/tests/test_serializers.py | 20 ++++++++++++++++++++ geotrek/common/tests/test_views.py | 9 +++++++++ 2 files changed, 29 insertions(+) create mode 100644 geotrek/common/tests/test_serializers.py diff --git a/geotrek/common/tests/test_serializers.py b/geotrek/common/tests/test_serializers.py new file mode 100644 index 0000000000..efbdedf2f1 --- /dev/null +++ b/geotrek/common/tests/test_serializers.py @@ -0,0 +1,20 @@ + +from geotrek.common import serializers +from .factories import HDViewPointFactory +from geotrek.trekking.tests.factories import TrekFactory +from django.test import TestCase +from geotrek.common.serializers import HDViewPointGeoJSONSerializer + + +class HDViewPointSerializerTest(TestCase): + @classmethod + def setUpTestData(cls): + cls.trek = TrekFactory() + cls.vp = HDViewPointFactory(content_object=cls.trek) + + def test_geojson_serializer(self): + serializer = HDViewPointGeoJSONSerializer(instance=self.vp) + coords = serializer.data.get('geometry').get('coordinates') + geom_transformed = self.vp.geom.transform(4326, clone=True) + self.assertAlmostEqual(coords[0], geom_transformed.x) + self.assertAlmostEqual(coords[1], geom_transformed.y) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index e57dbe5a3d..4de0a3e14e 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -14,6 +14,7 @@ from django.test import TestCase from django.test.utils import override_settings from django.urls import reverse +from geotrek.common.views import HDViewPointViewSet from mapentity.tests.factories import SuperUserFactory, UserFactory from mapentity.views.generic import MapEntityList @@ -526,3 +527,11 @@ def test_annotate_view(self): response = self.client.get(vp.get_annotate_url()) self.assertEqual(response.status_code, 200) self.assertIsInstance(response.context['form'], HDViewPointAnnotationForm) + + def test_viewset(self): + self.client.force_login(user=self.user_perm) + vp = HDViewPointFactory(content_object=self.trek) + response = self.client.get(reverse('common:hdviewpoint-drf-detail', kwargs={'pk': vp.pk, 'format': 'geojson'})) + self.assertEqual(response.status_code, 200) + self.assertIn('id', response.json().get('properties')) + self.assertIn('title', response.json().get('properties')) From 0adaaea0815d80cdfa7adf70d5fac49982af2065 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 21 Dec 2022 09:19:28 +0100 Subject: [PATCH 097/103] :white_check_mark: Add tests for HD Views API ViewSet and Serializer --- geotrek/common/tests/test_serializers.py | 20 ++++++++++++++++++++ geotrek/common/tests/test_views.py | 9 +++++++++ 2 files changed, 29 insertions(+) create mode 100644 geotrek/common/tests/test_serializers.py diff --git a/geotrek/common/tests/test_serializers.py b/geotrek/common/tests/test_serializers.py new file mode 100644 index 0000000000..efbdedf2f1 --- /dev/null +++ b/geotrek/common/tests/test_serializers.py @@ -0,0 +1,20 @@ + +from geotrek.common import serializers +from .factories import HDViewPointFactory +from geotrek.trekking.tests.factories import TrekFactory +from django.test import TestCase +from geotrek.common.serializers import HDViewPointGeoJSONSerializer + + +class HDViewPointSerializerTest(TestCase): + @classmethod + def setUpTestData(cls): + cls.trek = TrekFactory() + cls.vp = HDViewPointFactory(content_object=cls.trek) + + def test_geojson_serializer(self): + serializer = HDViewPointGeoJSONSerializer(instance=self.vp) + coords = serializer.data.get('geometry').get('coordinates') + geom_transformed = self.vp.geom.transform(4326, clone=True) + self.assertAlmostEqual(coords[0], geom_transformed.x) + self.assertAlmostEqual(coords[1], geom_transformed.y) diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 07d555c95f..0d107c27a3 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -14,6 +14,7 @@ from django.test import TestCase from django.test.utils import override_settings from django.urls import reverse +from geotrek.common.views import HDViewPointViewSet from mapentity.tests.factories import SuperUserFactory, UserFactory from mapentity.views.generic import MapEntityList @@ -535,3 +536,11 @@ def test_API_viewset(self): api_geom = qs.first().api_geom self.assertAlmostEqual(api_geom.x, transformed_geom.x) self.assertAlmostEqual(api_geom.y, transformed_geom.y) + + def test_viewset(self): + self.client.force_login(user=self.user_perm) + vp = HDViewPointFactory(content_object=self.trek) + response = self.client.get(reverse('common:hdviewpoint-drf-detail', kwargs={'pk': vp.pk, 'format': 'geojson'})) + self.assertEqual(response.status_code, 200) + self.assertIn('id', response.json().get('properties')) + self.assertIn('title', response.json().get('properties')) From 06acf58341c5ce9e23af6bf5c8d54cf646c5b0d9 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 21 Dec 2022 09:26:00 +0100 Subject: [PATCH 098/103] :art: Codestyle --- geotrek/common/tests/test_serializers.py | 7 ++++--- geotrek/common/tests/test_views.py | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/geotrek/common/tests/test_serializers.py b/geotrek/common/tests/test_serializers.py index efbdedf2f1..a91d6b1649 100644 --- a/geotrek/common/tests/test_serializers.py +++ b/geotrek/common/tests/test_serializers.py @@ -1,9 +1,10 @@ -from geotrek.common import serializers -from .factories import HDViewPointFactory -from geotrek.trekking.tests.factories import TrekFactory from django.test import TestCase + from geotrek.common.serializers import HDViewPointGeoJSONSerializer +from geotrek.trekking.tests.factories import TrekFactory + +from .factories import HDViewPointFactory class HDViewPointSerializerTest(TestCase): diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index 0d107c27a3..f183458a5d 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -14,7 +14,6 @@ from django.test import TestCase from django.test.utils import override_settings from django.urls import reverse -from geotrek.common.views import HDViewPointViewSet from mapentity.tests.factories import SuperUserFactory, UserFactory from mapentity.views.generic import MapEntityList From e166638b6d2d2eec2243d769d2174626d2026a75 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 21 Dec 2022 09:32:33 +0100 Subject: [PATCH 099/103] :twisted_rightwards_arrows: Fix merge --- geotrek/common/migrations/0029_hdviewpoint.py | 1 + geotrek/common/models.py | 3 +++ geotrek/common/tests/test_views.py | 3 +-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/geotrek/common/migrations/0029_hdviewpoint.py b/geotrek/common/migrations/0029_hdviewpoint.py index 41f2754c4b..1a68f39539 100644 --- a/geotrek/common/migrations/0029_hdviewpoint.py +++ b/geotrek/common/migrations/0029_hdviewpoint.py @@ -35,6 +35,7 @@ class Migration(migrations.Migration): options={ 'verbose_name': 'HD View', 'verbose_name_plural': 'HD Views', + 'permissions': (('read_hdviewpoint', 'Can read hd view point'),), }, ), ] diff --git a/geotrek/common/models.py b/geotrek/common/models.py index b746401e37..7c00d633d5 100755 --- a/geotrek/common/models.py +++ b/geotrek/common/models.py @@ -300,6 +300,9 @@ class HDViewPoint(TimeStampedModelMixin, MapEntityMixin): class Meta: verbose_name = _("HD View") verbose_name_plural = _("HD Views") + permissions = ( + ("read_hdviewpoint", "Can read hd view point"), + ) def __str__(self): return self.title diff --git a/geotrek/common/tests/test_views.py b/geotrek/common/tests/test_views.py index dfd9184872..5a63bb1968 100644 --- a/geotrek/common/tests/test_views.py +++ b/geotrek/common/tests/test_views.py @@ -528,8 +528,7 @@ def test_annotate_view(self): self.assertEqual(response.status_code, 200) self.assertIsInstance(response.context['form'], HDViewPointAnnotationForm) - def test_viewset(self): - self.client.force_login(user=self.user_perm) + def test_API_viewset(self): vp = HDViewPointFactory(content_object=self.trek) qs = HDViewPointAPIViewSet().get_queryset() transformed_geom = vp.geom.transform(settings.API_SRID, clone=True) From dcda6cd17b32dffc2e448360fceead7ab1b66683 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 3 Jan 2023 16:53:51 +0100 Subject: [PATCH 100/103] :sparkles: Update SQL defaults file for HD Views --- .../templates/common/sql/post_90_defaults.sql | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/geotrek/common/templates/common/sql/post_90_defaults.sql b/geotrek/common/templates/common/sql/post_90_defaults.sql index f552ffc0b6..37a9b72dc9 100644 --- a/geotrek/common/templates/common/sql/post_90_defaults.sql +++ b/geotrek/common/templates/common/sql/post_90_defaults.sql @@ -82,4 +82,20 @@ ALTER TABLE common_label ALTER COLUMN date_update SET DEFAULT now(); -- TargetPortal ALTER TABLE common_targetportal ALTER COLUMN date_insert SET DEFAULT now(); -ALTER TABLE common_targetportal ALTER COLUMN date_update SET DEFAULT now(); \ No newline at end of file +ALTER TABLE common_targetportal ALTER COLUMN date_update SET DEFAULT now(); + +-- HDViewPoint +-------- +-- picture +-- geom +-- content_type +-- content_object +-- object_id +-- title +-- license +ALTER TABLE common_hdviewpoint ALTER COLUMN legend SET DEFAULT ''; +ALTER TABLE common_hdviewpoint ALTER COLUMN author SET DEFAULT ''; +ALTER TABLE common_hdviewpoint ALTER COLUMN uuid SET DEFAULT gen_random_uuid(); +ALTER TABLE common_hdviewpoint ALTER COLUMN annotations SET DEFAULT '{}'::jsonb; +ALTER TABLE common_hdviewpoint ALTER COLUMN date_insert SET DEFAULT now(); +ALTER TABLE common_hdviewpoint ALTER COLUMN date_update SET DEFAULT now(); From c65a6c9e22965f88229ac425ac2b1f964e84a63b Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Wed, 4 Jan 2023 12:03:06 +0100 Subject: [PATCH 101/103] :sparkles: Add setting to disable HD Views in templates --- geotrek/common/templatetags/geotrek_tags.py | 5 +++++ geotrek/outdoor/templates/outdoor/site_detail.html | 11 +++++++---- geotrek/settings/base.py | 2 ++ geotrek/trekking/templates/trekking/poi_detail.html | 11 +++++++---- geotrek/trekking/templates/trekking/trek_detail.html | 9 ++++++--- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/geotrek/common/templatetags/geotrek_tags.py b/geotrek/common/templatetags/geotrek_tags.py index 953567b8c0..075bcaa2b8 100644 --- a/geotrek/common/templatetags/geotrek_tags.py +++ b/geotrek/common/templatetags/geotrek_tags.py @@ -12,6 +12,11 @@ def is_photos_accessibilities_enabled(): return settings.ACCESSIBILITY_ATTACHMENTS_ENABLED +@register.simple_tag +def are_hdviews_enabled(): + return settings.ENABLE_HD_VIEWS + + @register.simple_tag def settings_value(name): return getattr(settings, name, "") diff --git a/geotrek/outdoor/templates/outdoor/site_detail.html b/geotrek/outdoor/templates/outdoor/site_detail.html index 2505d0a4c7..6a2f0faaf9 100644 --- a/geotrek/outdoor/templates/outdoor/site_detail.html +++ b/geotrek/outdoor/templates/outdoor/site_detail.html @@ -1,5 +1,5 @@ {% extends "common/common_detail.html" %} -{% load i18n l10n static thumbnail %} +{% load i18n l10n static thumbnail geotrek_tags %} {% block download %} {{ block.super }} @@ -26,7 +26,10 @@ {% block attachmentspanel %} {{ block.super }} -
-
- {% include "common/hdviewpoint_detail_fragment.html" %} + {% are_hdviews_enabled as are_hdviews_enabled %} + {% if are_hdviews_enabled %} +
+
+ {% include "common/hdviewpoint_detail_fragment.html" %} + {% endif %} {% endblock attachmentspanel %} diff --git a/geotrek/settings/base.py b/geotrek/settings/base.py index 7ed551997f..2aee4ea91a 100644 --- a/geotrek/settings/base.py +++ b/geotrek/settings/base.py @@ -834,6 +834,8 @@ def api_bbox(bbox, buffer): ALLOW_PATH_DELETION_TOPOLOGY = True +ENABLE_HD_VIEWS = True + # Override with prod/dev/tests/tests_nds settings ENV = os.getenv('ENV', 'prod') assert ENV in ('prod', 'dev', 'tests', 'tests_nds') diff --git a/geotrek/trekking/templates/trekking/poi_detail.html b/geotrek/trekking/templates/trekking/poi_detail.html index e8c38e5d7c..6a77617a82 100644 --- a/geotrek/trekking/templates/trekking/poi_detail.html +++ b/geotrek/trekking/templates/trekking/poi_detail.html @@ -1,5 +1,5 @@ {% extends "common/common_detail.html" %} -{% load static i18n mapentity_tags %} +{% load static i18n mapentity_tags geotrek_tags %} {% block attachments_extra_tab_nav %} {% with attachments_count=object.attachments.count|add:object.view_points.count %} @@ -13,9 +13,12 @@ {% block attachmentspanel %} {% include "trekking/ratio_info_fragment.html" %} {{ block.super }} -
-
- {% include "common/hdviewpoint_detail_fragment.html" %} + {% are_hdviews_enabled as are_hdviews_enabled %} + {% if are_hdviews_enabled %} +
+
+ {% include "common/hdviewpoint_detail_fragment.html" %} + {% endif %} {% endblock attachmentspanel %} diff --git a/geotrek/trekking/templates/trekking/trek_detail.html b/geotrek/trekking/templates/trekking/trek_detail.html index 9284f03eba..c88bfb74e5 100644 --- a/geotrek/trekking/templates/trekking/trek_detail.html +++ b/geotrek/trekking/templates/trekking/trek_detail.html @@ -45,9 +45,12 @@ {% block attachmentspanel %} {% include "trekking/ratio_info_fragment.html" %} {{ block.super }} -
-
- {% include "common/hdviewpoint_detail_fragment.html" %} + {% are_hdviews_enabled as are_hdviews_enabled %} + {% if are_hdviews_enabled %} +
+
+ {% include "common/hdviewpoint_detail_fragment.html" %} + {% endif %} {% endblock attachmentspanel %} {% block detailspanel %} From b054ff58685e5f83f74011d4b60704ce7a6ba3fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9lia?= Date: Mon, 16 Jan 2023 11:54:00 +0100 Subject: [PATCH 102/103] :memo: Update changelog with nginx warning --- docs/changelog.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 40f4de56a1..e133628fb6 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -36,6 +36,11 @@ In preparation for HD Views developments (PR #3298) - Recreate cache folders if missing. (#3384) +**Warning** + +- The default Nginx configuration template has been improved (https://github.com/GeotrekCE/Geotrek-admin/pull/3298/commits/f9c72d95c1fd7eee2dee26dc73a5927966a812bf) to allow uploading big images. It is highly recommanded to apply changes to your Nginx configuration template (in /opt/geotrek-admin/var/conf/nginx.conf.in). + + 2.94.0 (2022-12-12) ----------------------- From 9fe81adeb8da7b6c28c48742e4c8c87705472898 Mon Sep 17 00:00:00 2001 From: Chatewgne Date: Tue, 31 Jan 2023 17:38:21 +0100 Subject: [PATCH 103/103] :arrow_up: Update requirements --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index d16c014c2c..d81b840847 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: # # pip-compile #