Skip to content

Commit

Permalink
✨ [FEAT] Add 'provider' field and filter to Report (refs #4085)
Browse files Browse the repository at this point in the history
  • Loading branch information
Chatewgne committed Jun 5, 2024
1 parent 445ff22 commit e802e6a
Show file tree
Hide file tree
Showing 21 changed files with 102 additions and 18 deletions.
6 changes: 5 additions & 1 deletion docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,15 @@ CHANGELOG

https://geotrek.readthedocs.io/en/latest/install/upgrade.html#postgresql

**New features**

- Add filter by creation year and update year to Report list (#4085)
- Add provider field and filter to Report (refs #4085)

**Improvements**

- ApidaeTrekParser now imports field `membreProprietaire` as the structure
- Exclude deleted areas from OpenAir export (fixes #4140)
- Add filter by creation year and update year to Report list (#4085)
- Make email address optional in `Report` form (#4085)
- Add more information to email received by managers on new `Report` (#4085)

Expand Down
6 changes: 4 additions & 2 deletions docs/install/advanced-configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1674,7 +1674,8 @@ A (nearly?) exhaustive list of attributes available for display and export as co
"created_in_suricate",
"last_updated_in_suricate",
"assigned_user",
"uses_timers"
"uses_timers",
"provider"
]
COLUMNS_LISTS["sensitivity_view"] = [
"structure",
Expand Down Expand Up @@ -2218,7 +2219,8 @@ A (nearly?) exhaustive list of attributes available for display and export as co
"created_in_suricate",
"last_updated_in_suricate",
"assigned_user",
"uses_timers"
"uses_timers",
"provider"
]
COLUMNS_LISTS["sensitivity_export"] = [
"species",
Expand Down
4 changes: 4 additions & 0 deletions geotrek/api/v2/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -1656,6 +1656,10 @@ class Meta:
'geom': {'write_only': True},
}

def create(self, validated_data):
validated_data['provider'] = "API"
return super().create(validated_data)

def validate_geom(self, value):
return GEOSGeometry(value, srid=4326)

Expand Down
1 change: 0 additions & 1 deletion geotrek/common/mixins/managers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

from django.db import models
from django.db.models import Manager as DefaultManager
from django.views.generic.dates import timezone_today
Expand Down
12 changes: 9 additions & 3 deletions geotrek/feedback/filters.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.utils.translation import gettext_lazy as _
from django_filters import MultipleChoiceFilter
from django_filters import ChoiceFilter, MultipleChoiceFilter
from mapentity.filters import MapEntityFilterSet

from geotrek.zoning.filters import ZoningFilterSet
Expand All @@ -18,14 +18,20 @@ class ReportFilterSet(ZoningFilterSet, MapEntityFilterSet):
field_name='date_update__year',
choices=lambda: Report.objects.year_update_choices()
)
provider = ChoiceFilter(
field_name='provider',
empty_label=_("Provider"),
label=_("Provider"),
choices=lambda: Report.objects.provider_choices()
)

class Meta(MapEntityFilterSet.Meta):
model = Report
fields = ['activity', 'category', 'status', 'problem_magnitude', 'assigned_user']
fields = ['activity', 'category', 'status', 'problem_magnitude', 'assigned_user', 'provider']


class ReportEmailFilterSet(ReportFilterSet):

class Meta(MapEntityFilterSet.Meta):
model = Report
fields = ['activity', 'email', 'category', 'status', 'problem_magnitude', 'assigned_user']
fields = ['activity', 'email', 'category', 'status', 'problem_magnitude', 'assigned_user', 'provider']
4 changes: 3 additions & 1 deletion geotrek/feedback/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,5 +165,7 @@ def save(self, *args, **kwargs):
report.change_position_in_suricate(force=force_gps)
elif report.status and report.uses_timers and (creation or self.old_status != report.status): # Outside of workflow, create timer if report is new or if its status changed
TimerEvent.objects.create(step=report.status, report=report)

elif creation and not settings.SURICATE_WORKFLOW_ENABLED:
report.provider = "Geotrek-admin"
report.save()
return report
8 changes: 7 additions & 1 deletion geotrek/feedback/locale/de/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-04 08:04+0000\n"
"POT-Creation-Date: 2024-06-04 15:20+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand All @@ -27,6 +27,9 @@ msgstr ""
msgid "Update year"
msgstr ""

msgid "Provider"
msgstr ""

msgid "Leave this field empty not to forward Report to Suricate"
msgstr ""

Expand Down Expand Up @@ -316,6 +319,9 @@ msgstr ""
msgid "Trek"
msgstr ""

msgid "Report origin"
msgstr ""

#, python-format
msgid ""
"\n"
Expand Down
8 changes: 7 additions & 1 deletion geotrek/feedback/locale/en/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-04 08:04+0000\n"
"POT-Creation-Date: 2024-06-04 15:20+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand All @@ -27,6 +27,9 @@ msgstr ""
msgid "Update year"
msgstr ""

msgid "Provider"
msgstr ""

msgid "Leave this field empty not to forward Report to Suricate"
msgstr ""

Expand Down Expand Up @@ -316,6 +319,9 @@ msgstr ""
msgid "Trek"
msgstr ""

msgid "Report origin"
msgstr ""

#, python-format
msgid ""
"\n"
Expand Down
8 changes: 7 additions & 1 deletion geotrek/feedback/locale/es/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-04 08:04+0000\n"
"POT-Creation-Date: 2024-06-04 15:20+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand All @@ -27,6 +27,9 @@ msgstr ""
msgid "Update year"
msgstr ""

msgid "Provider"
msgstr ""

msgid "Leave this field empty not to forward Report to Suricate"
msgstr ""

Expand Down Expand Up @@ -316,6 +319,9 @@ msgstr ""
msgid "Trek"
msgstr ""

msgid "Report origin"
msgstr ""

#, python-format
msgid ""
"\n"
Expand Down
8 changes: 7 additions & 1 deletion geotrek/feedback/locale/fr/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-04 08:04+0000\n"
"POT-Creation-Date: 2024-06-04 15:20+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand All @@ -26,6 +26,9 @@ msgstr "Année de création"
msgid "Update year"
msgstr "Année de mise à jour"

msgid "Provider"
msgstr "Fournisseur"

msgid "Leave this field empty not to forward Report to Suricate"
msgstr ""
"Le signalement ne sera pas transmis à Suricate si ce champ est laissé vide."
Expand Down Expand Up @@ -328,6 +331,9 @@ msgstr "Commentaire : %(comment)s"
msgid "Trek"
msgstr "Itinéraire"

msgid "Report origin"
msgstr "Provenance du signalement"

#, python-format
msgid ""
"\n"
Expand Down
8 changes: 7 additions & 1 deletion geotrek/feedback/locale/it/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-04 08:04+0000\n"
"POT-Creation-Date: 2024-06-04 15:20+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand All @@ -27,6 +27,9 @@ msgstr ""
msgid "Update year"
msgstr ""

msgid "Provider"
msgstr ""

msgid "Leave this field empty not to forward Report to Suricate"
msgstr ""

Expand Down Expand Up @@ -316,6 +319,9 @@ msgstr ""
msgid "Trek"
msgstr ""

msgid "Report origin"
msgstr ""

#, python-format
msgid ""
"\n"
Expand Down
8 changes: 7 additions & 1 deletion geotrek/feedback/locale/nl/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-04 08:04+0000\n"
"POT-Creation-Date: 2024-06-04 15:20+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand All @@ -27,6 +27,9 @@ msgstr ""
msgid "Update year"
msgstr ""

msgid "Provider"
msgstr ""

msgid "Leave this field empty not to forward Report to Suricate"
msgstr ""

Expand Down Expand Up @@ -316,6 +319,9 @@ msgstr ""
msgid "Trek"
msgstr ""

msgid "Report origin"
msgstr ""

#, python-format
msgid ""
"\n"
Expand Down
4 changes: 2 additions & 2 deletions geotrek/feedback/managers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.contrib.gis.db import models

from geotrek.common.mixins.managers import NoDeleteManager, TimestampedChoicesMixin
from geotrek.common.mixins.managers import NoDeleteManager, ProviderChoicesMixin, TimestampedChoicesMixin


class SelectableUserManager(models.Manager):
Expand All @@ -9,5 +9,5 @@ def get_queryset(self):
return super().get_queryset().filter(userprofile__isnull=False)


class ReportManager(NoDeleteManager, TimestampedChoicesMixin):
class ReportManager(NoDeleteManager, TimestampedChoicesMixin, ProviderChoicesMixin):
pass
18 changes: 18 additions & 0 deletions geotrek/feedback/migrations/0043_report_provider.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.13 on 2024-05-29 08:15

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('feedback', '0042_alter_report_email'),
]

operations = [
migrations.AddField(
model_name='report',
name='provider',
field=models.CharField(blank=True, db_index=True, max_length=1024, verbose_name='Provider'),
),
]
1 change: 1 addition & 0 deletions geotrek/feedback/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ class Report(GeotrekMapEntityMixin, PicturesMixin, TimeStampedModelMixin, NoDele
uses_timers = models.BooleanField(verbose_name=_("Use timers"), default=False, help_text=_("Launch timers to alert supervisor if report is not being treated on time"))
sync_errors = models.IntegerField(verbose_name=_("Synchronisation error"), default=0, help_text=_("Synchronisation with Suricate is currently pending due to connection problems"))
mail_errors = models.IntegerField(verbose_name=_("Mail error"), default=0, help_text=_("A notification email could not be sent. Please contact an administrator"))
provider = models.CharField(verbose_name=_("Provider"), db_index=True, max_length=1024, blank=True)

objects = ReportManager()

Expand Down
3 changes: 2 additions & 1 deletion geotrek/feedback/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,8 @@ def parse_report(self, report):
"problem_magnitude": rep_magnitude,
"created_in_suricate": rep_creation,
"last_updated_in_suricate": rep_updated,
"eid": str(report["shortkeylink"])
"eid": str(report["shortkeylink"]),
"provider": "Suricate"
}

if should_update_status:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ <h3>{% trans "Attributes" %}</h3>
{% else %}<span class="none">{% trans "None" %}</span>{% endif %}
</td>
</tr>
<tr>
<th>{% trans "Provider" %}</th>
<td>{% if report.provider %}{{ report.provider|safe }}
{% else %}<span class="none">{% trans "None" %}</span>{% endif %}
</td>
</tr>
{% if suricate_workflow_enabled %}
<tr>
<th>{{ report|verbose:"created_in_suricate" }}</th>
Expand Down
2 changes: 2 additions & 0 deletions geotrek/feedback/templates/feedback/report_email.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

{% trans "Report" %} {% if report.eid|length %}{{ report.eid }}{% else %}{{ report.id }}{% endif %} : https://{{report.full_url}}

{% if report.provider %}{% trans "Report origin" %} : {{ report.provider }}{% endif %}

{% if report.geom %}{% blocktrans with lat=report.geom_wgs84.y|stringformat:".6f" lng=report.geom_wgs84.x|stringformat:".6f" %}
Lat : {{ lat }} / Lon : {{ lng }}
https://www.openstreetmap.org/?mlat={{lat}}&mlon={{lng}}
Expand Down
1 change: 1 addition & 0 deletions geotrek/feedback/templates/feedback/sql/post_10_views.sql
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ SELECT a.id,
a.date_insert AS "Insertion date",
a.date_update AS "Update date",
a.comment AS "Comment",
a.provider AS "Provider",
a.geom
FROM public.feedback_report a
LEFT JOIN public.feedback_reportactivity b ON a.activity_id = b.id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ ALTER TABLE feedback_report ALTER COLUMN origin SET DEFAULT 'unknown';
ALTER TABLE feedback_report ALTER COLUMN date_insert SET DEFAULT now();
ALTER TABLE feedback_report ALTER COLUMN date_update SET DEFAULT now();
ALTER TABLE feedback_report ALTER COLUMN deleted SET DEFAULT False;
ALTER TABLE feedback_report ALTER COLUMN provider SET DEFAULT '';


-- ReportActivity
Expand Down
3 changes: 2 additions & 1 deletion geotrek/feedback/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ class ReportFormatList(mapentity_views.MapEntityFormat, ReportList):
default_extra_columns = [
'activity', 'comment', 'category',
'problem_magnitude', 'status', 'related_trek',
'date_insert', 'date_update', 'assigned_user'
'date_insert', 'date_update', 'assigned_user',
'provider'
]

def get_columns(self):
Expand Down

0 comments on commit e802e6a

Please sign in to comment.