From b622f986b1188007090925262b6e21a5125615b5 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 19 Aug 2024 09:39:58 +0200 Subject: [PATCH 1/4] # Censor payments * censor payments if entry is not shared with user * updates translations --- .../detail/includes/payments.html | 12 +- locale/de/LC_MESSAGES/django.po | 115 ++++++++++-------- 2 files changed, 71 insertions(+), 56 deletions(-) diff --git a/intervention/templates/intervention/detail/includes/payments.html b/intervention/templates/intervention/detail/includes/payments.html index 5dde009..74cdcb8 100644 --- a/intervention/templates/intervention/detail/includes/payments.html +++ b/intervention/templates/intervention/detail/includes/payments.html @@ -46,12 +46,20 @@ {% for pay in obj.payments.all %} - {{ pay.amount|floatformat:2 }} € + {% if has_access %} + {{ pay.amount|floatformat:2 }} € + {% else %} + *** + {% endif %} {{ pay.due_on|default_if_none:"---" }}
- {{ pay.comment }} + {% if has_access %} + {{ pay.comment }} + {% else %} + {% trans 'This data is not shared with you' %} + {% endif %}
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 11b4622..9e02af8 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -43,7 +43,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-16 09:49+0100\n" +"POT-Creation-Date: 2024-08-19 09:38+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -259,7 +259,7 @@ msgstr "" #: analysis/templates/analysis/reports/includes/eco_account/deductions.html:14 #: analysis/templates/analysis/reports/includes/eco_account/deductions.html:16 -#: compensation/forms/modals/state.py:58 +#: compensation/forms/modals/state.py:59 #: compensation/templates/compensation/detail/compensation/includes/states-after.html:36 #: compensation/templates/compensation/detail/compensation/includes/states-before.html:36 #: compensation/templates/compensation/detail/eco_account/includes/states-after.html:36 @@ -447,7 +447,7 @@ msgid "Select the intervention for which this compensation compensates" msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist" #: compensation/forms/compensation.py:114 -#: compensation/views/compensation/compensation.py:119 +#: compensation/views/compensation/compensation.py:120 msgid "New compensation" msgstr "Neue Kompensation" @@ -474,7 +474,7 @@ msgid "When did the parties agree on this?" msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?" #: compensation/forms/eco_account.py:72 -#: compensation/views/eco_account/eco_account.py:100 +#: compensation/views/eco_account/eco_account.py:101 msgid "New Eco-Account" msgstr "Neues Ökokonto" @@ -696,46 +696,46 @@ msgid "If there is no date you can enter, please explain why." msgstr "Falls Sie kein Datum angeben können, erklären Sie bitte weshalb." #: compensation/forms/modals/payment.py:108 -#: intervention/templates/intervention/detail/includes/payments.html:59 +#: intervention/templates/intervention/detail/includes/payments.html:67 msgid "Edit payment" msgstr "Zahlung bearbeiten" -#: compensation/forms/modals/state.py:32 +#: compensation/forms/modals/state.py:33 msgid "Biotope Type" msgstr "Biotoptyp" -#: compensation/forms/modals/state.py:35 +#: compensation/forms/modals/state.py:36 msgid "Select the biotope type" msgstr "Biotoptyp wählen" -#: compensation/forms/modals/state.py:39 compensation/forms/modals/state.py:51 +#: compensation/forms/modals/state.py:40 compensation/forms/modals/state.py:52 msgid "Biotope additional type" msgstr "Zusatzbezeichnung" -#: compensation/forms/modals/state.py:42 +#: compensation/forms/modals/state.py:43 msgid "Select an additional biotope type" msgstr "Zusatzbezeichnung wählen" -#: compensation/forms/modals/state.py:61 +#: compensation/forms/modals/state.py:62 #: intervention/forms/modals/deduction.py:49 msgid "in m²" msgstr "" -#: compensation/forms/modals/state.py:72 +#: compensation/forms/modals/state.py:73 #: compensation/tests/compensation/unit/test_forms.py:175 msgid "New state" msgstr "Neuer Zustand" -#: compensation/forms/modals/state.py:73 +#: compensation/forms/modals/state.py:74 #: compensation/tests/compensation/unit/test_forms.py:176 msgid "Insert data for the new state" msgstr "Geben Sie die Daten des neuen Zustandes ein" -#: compensation/forms/modals/state.py:90 konova/forms/modals/base_form.py:32 +#: compensation/forms/modals/state.py:91 konova/forms/modals/base_form.py:32 msgid "Object removed" msgstr "Objekt entfernt" -#: compensation/forms/modals/state.py:145 +#: compensation/forms/modals/state.py:146 #: compensation/templates/compensation/detail/compensation/includes/states-after.html:62 #: compensation/templates/compensation/detail/compensation/includes/states-before.html:62 #: compensation/templates/compensation/detail/eco_account/includes/states-after.html:62 @@ -1287,44 +1287,44 @@ msgstr "" msgid "Responsible data" msgstr "Daten zu den verantwortlichen Stellen" -#: compensation/views/compensation/compensation.py:57 +#: compensation/views/compensation/compensation.py:58 msgid "Compensations - Overview" msgstr "Kompensationen - Übersicht" -#: compensation/views/compensation/compensation.py:180 +#: compensation/views/compensation/compensation.py:181 #: konova/utils/message_templates.py:40 msgid "Compensation {} edited" msgstr "Kompensation {} bearbeitet" -#: compensation/views/compensation/compensation.py:195 -#: compensation/views/eco_account/eco_account.py:172 ema/views/ema.py:230 -#: intervention/views/intervention.py:251 +#: compensation/views/compensation/compensation.py:196 +#: compensation/views/eco_account/eco_account.py:173 ema/views/ema.py:232 +#: intervention/views/intervention.py:253 msgid "Edit {}" msgstr "Bearbeite {}" #: compensation/views/compensation/report.py:34 #: compensation/views/eco_account/report.py:34 ema/views/report.py:34 -#: intervention/views/report.py:37 +#: intervention/views/report.py:35 msgid "Report {}" msgstr "Bericht {}" -#: compensation/views/eco_account/eco_account.py:52 +#: compensation/views/eco_account/eco_account.py:53 msgid "Eco-account - Overview" msgstr "Ökokonten - Übersicht" -#: compensation/views/eco_account/eco_account.py:85 +#: compensation/views/eco_account/eco_account.py:86 msgid "Eco-Account {} added" msgstr "Ökokonto {} hinzugefügt" -#: compensation/views/eco_account/eco_account.py:157 +#: compensation/views/eco_account/eco_account.py:158 msgid "Eco-Account {} edited" msgstr "Ökokonto {} bearbeitet" -#: compensation/views/eco_account/eco_account.py:286 +#: compensation/views/eco_account/eco_account.py:288 msgid "Eco-account removed" msgstr "Ökokonto entfernt" -#: ema/forms.py:42 ema/tests/unit/test_forms.py:27 ema/views/ema.py:101 +#: ema/forms.py:42 ema/tests/unit/test_forms.py:27 ema/views/ema.py:102 msgid "New EMA" msgstr "Neue EMA hinzufügen" @@ -1352,19 +1352,19 @@ msgstr "" msgid "Payment funded compensation" msgstr "Ersatzzahlungsmaßnahme" -#: ema/views/ema.py:52 +#: ema/views/ema.py:53 msgid "EMAs - Overview" msgstr "EMAs - Übersicht" -#: ema/views/ema.py:85 +#: ema/views/ema.py:86 msgid "EMA {} added" msgstr "EMA {} hinzugefügt" -#: ema/views/ema.py:215 +#: ema/views/ema.py:217 msgid "EMA {} edited" msgstr "EMA {} bearbeitet" -#: ema/views/ema.py:254 +#: ema/views/ema.py:256 msgid "EMA removed" msgstr "EMA entfernt" @@ -1428,7 +1428,7 @@ msgstr "Datum Bestandskraft bzw. Rechtskraft" #: intervention/forms/intervention.py:216 #: intervention/tests/unit/test_forms.py:36 -#: intervention/views/intervention.py:104 +#: intervention/views/intervention.py:105 msgid "New intervention" msgstr "Neuer Eingriff" @@ -1597,7 +1597,12 @@ msgctxt "money" msgid "Amount" msgstr "Betrag" -#: intervention/templates/intervention/detail/includes/payments.html:62 +#: intervention/templates/intervention/detail/includes/payments.html:61 +#: konova/utils/message_templates.py:25 +msgid "This data is not shared with you" +msgstr "Diese Daten sind für Sie nicht freigegeben" + +#: intervention/templates/intervention/detail/includes/payments.html:70 msgid "Remove payment" msgstr "Zahlung entfernen" @@ -1659,19 +1664,19 @@ msgstr "" msgid "Check performed" msgstr "Prüfung durchgeführt" -#: intervention/views/intervention.py:56 +#: intervention/views/intervention.py:57 msgid "Interventions - Overview" msgstr "Eingriffe - Übersicht" -#: intervention/views/intervention.py:89 +#: intervention/views/intervention.py:90 msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views/intervention.py:234 +#: intervention/views/intervention.py:236 msgid "Intervention {} edited" msgstr "Eingriff {} bearbeitet" -#: intervention/views/intervention.py:276 +#: intervention/views/intervention.py:278 msgid "{} removed" msgstr "{} entfernt" @@ -1911,11 +1916,11 @@ msgstr "Kontrolle am" msgid "Other" msgstr "Sonstige" -#: konova/sub_settings/django_settings.py:166 +#: konova/sub_settings/django_settings.py:157 msgid "German" msgstr "" -#: konova/sub_settings/django_settings.py:167 +#: konova/sub_settings/django_settings.py:158 msgid "English" msgstr "" @@ -2091,10 +2096,6 @@ msgstr "" "Eintrag ist verzeichnet. Um Daten zu bearbeiten, muss der Eintrag erst " "entzeichnet werden." -#: konova/utils/message_templates.py:25 -msgid "This data is not shared with you" -msgstr "Diese Daten sind für Sie nicht freigegeben" - #: konova/utils/message_templates.py:26 msgid "" "Remember: This data has not been shared with you, yet. This means you can " @@ -2817,11 +2818,17 @@ msgstr "Mehr" msgid "Reports" msgstr "Berichte" -#: templates/navbars/navbar.html:56 user/templates/user/index.html:31 +#: templates/navbars/navbar.html:57 +#, fuzzy +#| msgid "Admins" +msgid "Admin" +msgstr "Administratoren" + +#: templates/navbars/navbar.html:59 user/templates/user/index.html:31 msgid "Settings" msgstr "Einstellungen" -#: templates/navbars/navbar.html:57 +#: templates/navbars/navbar.html:60 msgid "Logout" msgstr "Abmelden" @@ -3032,7 +3039,7 @@ msgid "Manage teams" msgstr "" #: user/templates/user/index.html:53 user/templates/user/team/index.html:19 -#: user/views.py:171 +#: user/views/views.py:171 msgid "Teams" msgstr "" @@ -3084,43 +3091,43 @@ msgstr "Token noch nicht freigeschaltet" msgid "Valid until" msgstr "Läuft ab am" -#: user/views.py:35 +#: user/views/views.py:35 msgid "User settings" msgstr "Einstellungen" -#: user/views.py:61 +#: user/views/views.py:61 msgid "Notifications edited" msgstr "Benachrichtigungen bearbeitet" -#: user/views.py:73 +#: user/views/views.py:73 msgid "User notifications" msgstr "Benachrichtigungen" -#: user/views.py:96 +#: user/views/views.py:96 msgid "New token generated. Administrators need to validate." msgstr "Neuer Token generiert. Administratoren sind informiert." -#: user/views.py:107 +#: user/views/views.py:107 msgid "User API token" msgstr "API Nutzer Token" -#: user/views.py:183 +#: user/views/views.py:183 msgid "New team added" msgstr "Neues Team hinzugefügt" -#: user/views.py:198 +#: user/views/views.py:198 msgid "Team edited" msgstr "Team bearbeitet" -#: user/views.py:213 +#: user/views/views.py:213 msgid "Team removed" msgstr "Team gelöscht" -#: user/views.py:228 +#: user/views/views.py:228 msgid "You are not a member of this team" msgstr "Sie sind kein Mitglied dieses Teams" -#: user/views.py:235 +#: user/views/views.py:235 msgid "Left Team" msgstr "Team verlassen" From 4e56f47b475c5deb3bd3ca4dbea9aeb1967f2658 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 19 Aug 2024 09:44:45 +0200 Subject: [PATCH 2/4] # Variable refactoring * renames variable `has_access` into `is_entry_shared` for better understanding in various places (mostly html related) --- .../detail/compensation/includes/actions.html | 6 +++--- .../detail/compensation/includes/controls.html | 2 +- .../detail/compensation/includes/deadlines.html | 6 +++--- .../detail/compensation/includes/documents.html | 6 +++--- .../detail/compensation/includes/states-after.html | 6 +++--- .../detail/compensation/includes/states-before.html | 6 +++--- .../compensation/detail/compensation/view.html | 2 +- .../detail/eco_account/includes/actions.html | 6 +++--- .../detail/eco_account/includes/controls.html | 2 +- .../detail/eco_account/includes/deadlines.html | 4 ++-- .../detail/eco_account/includes/deductions.html | 2 +- .../detail/eco_account/includes/documents.html | 4 ++-- .../detail/eco_account/includes/states-after.html | 6 +++--- .../detail/eco_account/includes/states-before.html | 6 +++--- .../compensation/detail/eco_account/view.html | 2 +- compensation/views/compensation/compensation.py | 2 +- compensation/views/compensation/report.py | 2 +- compensation/views/eco_account/eco_account.py | 2 +- compensation/views/eco_account/report.py | 2 +- ema/templates/ema/detail/includes/actions.html | 4 ++-- ema/templates/ema/detail/includes/controls.html | 2 +- ema/templates/ema/detail/includes/deadlines.html | 4 ++-- ema/templates/ema/detail/includes/documents.html | 4 ++-- ema/templates/ema/detail/includes/states-after.html | 4 ++-- ema/templates/ema/detail/includes/states-before.html | 4 ++-- ema/templates/ema/detail/view.html | 2 +- ema/views/ema.py | 4 ++-- ema/views/report.py | 2 +- .../intervention/detail/includes/compensations.html | 6 +++--- .../intervention/detail/includes/controls.html | 2 +- .../intervention/detail/includes/deductions.html | 6 +++--- .../intervention/detail/includes/documents.html | 6 +++--- .../intervention/detail/includes/payments.html | 10 +++++----- .../intervention/detail/includes/revocation.html | 6 +++--- intervention/templates/intervention/detail/view.html | 2 +- intervention/views/intervention.py | 2 +- konova/utils/tables.py | 6 +++--- 37 files changed, 75 insertions(+), 75 deletions(-) diff --git a/compensation/templates/compensation/detail/compensation/includes/actions.html b/compensation/templates/compensation/detail/compensation/includes/actions.html index d832ad1..0a8b88e 100644 --- a/compensation/templates/compensation/detail/compensation/includes/actions.html +++ b/compensation/templates/compensation/detail/compensation/includes/actions.html @@ -11,7 +11,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/compensation/includes/controls.html b/compensation/templates/compensation/detail/compensation/includes/controls.html index 4119480..ef8b92e 100644 --- a/compensation/templates/compensation/detail/compensation/includes/controls.html +++ b/compensation/templates/compensation/detail/compensation/includes/controls.html @@ -11,7 +11,7 @@ {% fa5_icon 'file-alt' %} - {% if has_access %} + {% if is_entry_shared %} diff --git a/compensation/templates/compensation/detail/compensation/includes/deadlines.html b/compensation/templates/compensation/detail/compensation/includes/deadlines.html index 7f32880..2564fdf 100644 --- a/compensation/templates/compensation/detail/compensation/includes/deadlines.html +++ b/compensation/templates/compensation/detail/compensation/includes/deadlines.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/compensation/includes/documents.html b/compensation/templates/compensation/detail/compensation/includes/documents.html index 1733827..6e3c780 100644 --- a/compensation/templates/compensation/detail/compensation/includes/documents.html +++ b/compensation/templates/compensation/detail/compensation/includes/documents.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/compensation/includes/states-after.html b/compensation/templates/compensation/detail/compensation/includes/states-after.html index 39e6204..15ec95c 100644 --- a/compensation/templates/compensation/detail/compensation/includes/states-after.html +++ b/compensation/templates/compensation/detail/compensation/includes/states-after.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/compensation/includes/states-before.html b/compensation/templates/compensation/detail/compensation/includes/states-before.html index 25524c0..93249cc 100644 --- a/compensation/templates/compensation/detail/compensation/includes/states-before.html +++ b/compensation/templates/compensation/detail/compensation/includes/states-before.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/compensation/view.html b/compensation/templates/compensation/detail/compensation/view.html index 26800a8..64b2fe4 100644 --- a/compensation/templates/compensation/detail/compensation/view.html +++ b/compensation/templates/compensation/detail/compensation/view.html @@ -123,7 +123,7 @@ {% include 'user/includes/team_data_modal_button.html' %} {% endfor %}
- {% if has_access %} + {% if is_entry_shared %} {% for user in obj.intervention.shared_users %} {% include 'user/includes/contact_modal_button.html' %} {% endfor %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/actions.html b/compensation/templates/compensation/detail/eco_account/includes/actions.html index d83820a..3c78638 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/actions.html +++ b/compensation/templates/compensation/detail/eco_account/includes/actions.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/controls.html b/compensation/templates/compensation/detail/eco_account/includes/controls.html index c26883a..8fafd66 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/controls.html +++ b/compensation/templates/compensation/detail/eco_account/includes/controls.html @@ -11,7 +11,7 @@ {% fa5_icon 'file-alt' %} - {% if has_access %} + {% if is_entry_shared %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/deadlines.html b/compensation/templates/compensation/detail/eco_account/includes/deadlines.html index 4a88b88..b04a611 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/deadlines.html +++ b/compensation/templates/compensation/detail/eco_account/includes/deadlines.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/deductions.html b/compensation/templates/compensation/detail/eco_account/includes/deductions.html index 03f6bf3..9334f3e 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/deductions.html +++ b/compensation/templates/compensation/detail/eco_account/includes/deductions.html @@ -61,7 +61,7 @@ {{ deduction.surface|floatformat:2|intcomma }} m² {{ deduction.created.timestamp|default_if_none:""|naturalday}} - {% if is_default_member and has_access or is_default_member and user in deduction.intervention.shared_users %} + {% if is_default_member and is_entry_shared or is_default_member and user in deduction.intervention.shared_users %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/documents.html b/compensation/templates/compensation/detail/eco_account/includes/documents.html index bf61f13..8e2b01c 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/documents.html +++ b/compensation/templates/compensation/detail/eco_account/includes/documents.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/states-after.html b/compensation/templates/compensation/detail/eco_account/includes/states-after.html index 02ac15c..64d7800 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/states-after.html +++ b/compensation/templates/compensation/detail/eco_account/includes/states-after.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/states-before.html b/compensation/templates/compensation/detail/eco_account/includes/states-before.html index 135c4c0..e268416 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/states-before.html +++ b/compensation/templates/compensation/detail/eco_account/includes/states-before.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/compensation/templates/compensation/detail/eco_account/view.html b/compensation/templates/compensation/detail/eco_account/view.html index c5bd2c5..750295c 100644 --- a/compensation/templates/compensation/detail/eco_account/view.html +++ b/compensation/templates/compensation/detail/eco_account/view.html @@ -101,7 +101,7 @@ {% include 'user/includes/team_data_modal_button.html' %} {% endfor %}
- {% if has_access %} + {% if is_entry_shared %} {% for user in obj.users.all %} {% include 'user/includes/contact_modal_button.html' %} {% endfor %} diff --git a/compensation/views/compensation/compensation.py b/compensation/views/compensation/compensation.py index 276b8eb..158495c 100644 --- a/compensation/views/compensation/compensation.py +++ b/compensation/views/compensation/compensation.py @@ -259,7 +259,7 @@ def detail_view(request: HttpRequest, id: str): "last_checked_tooltip": last_checked_tooltip, "geom_form": geom_form, "parcels": parcels, - "has_access": is_data_shared, + "is_entry_shared": is_data_shared, "actions": actions, "before_states": before_states, "after_states": after_states, diff --git a/compensation/views/compensation/report.py b/compensation/views/compensation/report.py index e81cb1d..3176c15 100644 --- a/compensation/views/compensation/report.py +++ b/compensation/views/compensation/report.py @@ -67,7 +67,7 @@ def report_view(request: HttpRequest, id: str): "img": qrcode_img_lanis, "url": qrcode_lanis_url, }, - "has_access": False, # disables action buttons during rendering + "is_entry_shared": False, # disables action buttons during rendering "before_states": before_states, "after_states": after_states, "geom_form": geom_form, diff --git a/compensation/views/eco_account/eco_account.py b/compensation/views/eco_account/eco_account.py index b20cf64..798e73c 100644 --- a/compensation/views/eco_account/eco_account.py +++ b/compensation/views/eco_account/eco_account.py @@ -237,7 +237,7 @@ def detail_view(request: HttpRequest, id: str): "obj": acc, "geom_form": geom_form, "parcels": parcels, - "has_access": is_data_shared, + "is_entry_shared": is_data_shared, "before_states": before_states, "after_states": after_states, "sum_before_states": sum_before_states, diff --git a/compensation/views/eco_account/report.py b/compensation/views/eco_account/report.py index 47b2a10..ba8212b 100644 --- a/compensation/views/eco_account/report.py +++ b/compensation/views/eco_account/report.py @@ -73,7 +73,7 @@ def report_view(request: HttpRequest, id: str): "img": qrcode_img_lanis, "url": qrcode_lanis_url, }, - "has_access": False, # disables action buttons during rendering + "is_entry_shared": False, # disables action buttons during rendering "before_states": before_states, "after_states": after_states, "geom_form": geom_form, diff --git a/ema/templates/ema/detail/includes/actions.html b/ema/templates/ema/detail/includes/actions.html index 0088bfe..713cb34 100644 --- a/ema/templates/ema/detail/includes/actions.html +++ b/ema/templates/ema/detail/includes/actions.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/ema/templates/ema/detail/includes/controls.html b/ema/templates/ema/detail/includes/controls.html index 182be48..96c7bbb 100644 --- a/ema/templates/ema/detail/includes/controls.html +++ b/ema/templates/ema/detail/includes/controls.html @@ -11,7 +11,7 @@ {% fa5_icon 'file-alt' %} - {% if has_access %} + {% if is_entry_shared %} diff --git a/ema/templates/ema/detail/includes/deadlines.html b/ema/templates/ema/detail/includes/deadlines.html index bc267dd..738ff61 100644 --- a/ema/templates/ema/detail/includes/deadlines.html +++ b/ema/templates/ema/detail/includes/deadlines.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/ema/templates/ema/detail/includes/documents.html b/ema/templates/ema/detail/includes/documents.html index d1f60a0..3ba797a 100644 --- a/ema/templates/ema/detail/includes/documents.html +++ b/ema/templates/ema/detail/includes/documents.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/ema/templates/ema/detail/includes/states-after.html b/ema/templates/ema/detail/includes/states-after.html index fbee289..d82541c 100644 --- a/ema/templates/ema/detail/includes/states-after.html +++ b/ema/templates/ema/detail/includes/states-after.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/ema/templates/ema/detail/includes/states-before.html b/ema/templates/ema/detail/includes/states-before.html index a69709a..336724c 100644 --- a/ema/templates/ema/detail/includes/states-before.html +++ b/ema/templates/ema/detail/includes/states-before.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/ema/templates/ema/detail/view.html b/ema/templates/ema/detail/view.html index 3e0d701..c91d347 100644 --- a/ema/templates/ema/detail/view.html +++ b/ema/templates/ema/detail/view.html @@ -87,7 +87,7 @@ {% include 'user/includes/team_data_modal_button.html' %} {% endfor %}
- {% if has_access %} + {% if is_entry_shared %} {% for user in obj.users.all %} {% include 'user/includes/contact_modal_button.html' %} {% endfor %} diff --git a/ema/views/ema.py b/ema/views/ema.py index 67fbde5..4136e91 100644 --- a/ema/views/ema.py +++ b/ema/views/ema.py @@ -142,7 +142,7 @@ def detail_view(request: HttpRequest, id: str): geom_form = SimpleGeomForm(instance=ema) parcels = ema.get_underlying_parcels() _user = request.user - is_data_shared = ema.is_shared_with(_user) + is_entry_shared = ema.is_shared_with(_user) # Order states according to surface before_states = ema.before_states.all().order_by("-surface") @@ -167,7 +167,7 @@ def detail_view(request: HttpRequest, id: str): "obj": ema, "geom_form": geom_form, "parcels": parcels, - "has_access": is_data_shared, + "is_entry_shared": is_entry_shared, "before_states": before_states, "after_states": after_states, "sum_before_states": sum_before_states, diff --git a/ema/views/report.py b/ema/views/report.py index 6b7840f..1da1ba6 100644 --- a/ema/views/report.py +++ b/ema/views/report.py @@ -67,7 +67,7 @@ def report_view(request:HttpRequest, id: str): "img": qrcode_img_lanis, "url": qrcode_lanis_url }, - "has_access": False, # disables action buttons during rendering + "is_entry_shared": False, # disables action buttons during rendering "before_states": before_states, "after_states": after_states, "geom_form": geom_form, diff --git a/intervention/templates/intervention/detail/includes/compensations.html b/intervention/templates/intervention/detail/includes/compensations.html index 758d0a8..ad99fd0 100644 --- a/intervention/templates/intervention/detail/includes/compensations.html +++ b/intervention/templates/intervention/detail/includes/compensations.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/intervention/templates/intervention/detail/includes/controls.html b/intervention/templates/intervention/detail/includes/controls.html index 7008c10..89358eb 100644 --- a/intervention/templates/intervention/detail/includes/controls.html +++ b/intervention/templates/intervention/detail/includes/controls.html @@ -11,7 +11,7 @@ {% fa5_icon 'file-alt' %} - {% if has_access %} + {% if is_entry_shared %} diff --git a/intervention/templates/intervention/detail/includes/deductions.html b/intervention/templates/intervention/detail/includes/deductions.html index 66a5504..5e081ac 100644 --- a/intervention/templates/intervention/detail/includes/deductions.html +++ b/intervention/templates/intervention/detail/includes/deductions.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/intervention/templates/intervention/detail/includes/documents.html b/intervention/templates/intervention/detail/includes/documents.html index 2374694..fd4fa0a 100644 --- a/intervention/templates/intervention/detail/includes/documents.html +++ b/intervention/templates/intervention/detail/includes/documents.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/intervention/templates/intervention/detail/includes/payments.html b/intervention/templates/intervention/detail/includes/payments.html index 74cdcb8..44e3602 100644 --- a/intervention/templates/intervention/detail/includes/payments.html +++ b/intervention/templates/intervention/detail/includes/payments.html @@ -10,7 +10,7 @@
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/intervention/templates/intervention/detail/includes/revocation.html b/intervention/templates/intervention/detail/includes/revocation.html index 60cedfc..6eb8640 100644 --- a/intervention/templates/intervention/detail/includes/revocation.html +++ b/intervention/templates/intervention/detail/includes/revocation.html @@ -13,7 +13,7 @@ {% comment %} Only show add-button if no revocation exists, yet. {% endcomment %} - {% if is_default_member and has_access and not obj.legal.revocation %} + {% if is_default_member and is_entry_shared and not obj.legal.revocation %}
- {% if is_default_member and has_access %} + {% if is_default_member and is_entry_shared %} diff --git a/intervention/templates/intervention/detail/view.html b/intervention/templates/intervention/detail/view.html index 8a7799d..a0eb601 100644 --- a/intervention/templates/intervention/detail/view.html +++ b/intervention/templates/intervention/detail/view.html @@ -129,7 +129,7 @@ {% include 'user/includes/team_data_modal_button.html' %} {% endfor %}
- {% if has_access %} + {% if is_entry_shared %} {% for user in obj.users.all %} {% include 'user/includes/contact_modal_button.html' %} {% endfor %} diff --git a/intervention/views/intervention.py b/intervention/views/intervention.py index f40498d..be89056 100644 --- a/intervention/views/intervention.py +++ b/intervention/views/intervention.py @@ -185,7 +185,7 @@ def detail_view(request: HttpRequest, id: str): "last_checked": last_checked, "last_checked_tooltip": last_checked_tooltip, "compensations": compensations, - "has_access": is_data_shared, + "is_entry_shared": is_data_shared, "geom_form": geom_form, "is_default_member": _user.in_group(DEFAULT_GROUP), "is_zb_member": _user.in_group(ZB_GROUP), diff --git a/konova/utils/tables.py b/konova/utils/tables.py index 4878548..a3d83dd 100644 --- a/konova/utils/tables.py +++ b/konova/utils/tables.py @@ -216,11 +216,11 @@ class TableRenderMixin: """ html = "" - has_access = record.is_shared_with(self.user) + is_entry_shared = record.is_shared_with(self.user) html += self.render_icn( - tooltip=_("Full access granted") if has_access else _("Access not granted"), - icn_class="fas fa-edit rlp-r-inv" if has_access else "far fa-edit", + tooltip=_("Full access granted") if is_entry_shared else _("Access not granted"), + icn_class="fas fa-edit rlp-r-inv" if is_entry_shared else "far fa-edit", ) return format_html(html) From e9f9420f0fd721f64288c75140d20e8b9cd75c50 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 19 Aug 2024 10:23:05 +0200 Subject: [PATCH 3/4] # Codelist migration optimization * adds boolean to de-/activate migration logic inside of 0002_migrate_975_to_288.py --- .../migrations/0002_migrate_975_to_288.py | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/codelist/migrations/0002_migrate_975_to_288.py b/codelist/migrations/0002_migrate_975_to_288.py index cf0d87c..b083793 100644 --- a/codelist/migrations/0002_migrate_975_to_288.py +++ b/codelist/migrations/0002_migrate_975_to_288.py @@ -1,5 +1,6 @@ # Generated by Django 5.0.7 on 2024-08-06 13:40 +from django.core.exceptions import ObjectDoesNotExist from django.db import migrations from django.db.models import Q @@ -10,9 +11,12 @@ def migrate_975_to_288(apps, schema_editor): KonovaCodeList = apps.get_model('codelist', 'KonovaCodeList') CompensationState = apps.get_model('compensation', 'CompensationState') - list_288 = KonovaCodeList.objects.get( - id=CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID - ).codes.all() + try: + list_288 = KonovaCodeList.objects.get( + id=CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID + ).codes.all() + except ObjectDoesNotExist: + raise AssertionError("KonovaCodeList 288 does not exist. Did you run 'update_codelist' before migrating?") states_with_extra_code = CompensationState.objects.filter( ~Q(biotope_type_details=None) @@ -42,8 +46,15 @@ class Migration(migrations.Migration): dependencies = [ ('codelist', '0001_initial'), + ('compensation', '0003_auto_20220202_0846'), ] - operations = [ - migrations.RunPython(migrate_975_to_288) - ] + # If migration of codelist is not necessary, this variable can shut down the logic whilst not disturbing the + # migration history + EXECUTE_CODELIST_MIGRATION = True + + operations = [] + + if EXECUTE_CODELIST_MIGRATION: + operations.append(migrations.RunPython(migrate_975_to_288)) + From fd7ed40c911120c7efa49c5755b8b5560e432ad2 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 19 Aug 2024 11:38:09 +0200 Subject: [PATCH 4/4] # User filtering * adds query filter to search for logged users on entries --- konova/filters/mixins/user_log.py | 55 ++++++++++++++++++++++++++++++ konova/filters/table_filters.py | 4 ++- locale/de/LC_MESSAGES/django.mo | Bin 45500 -> 45741 bytes locale/de/LC_MESSAGES/django.po | 14 +++++++- 4 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 konova/filters/mixins/user_log.py diff --git a/konova/filters/mixins/user_log.py b/konova/filters/mixins/user_log.py new file mode 100644 index 0000000..7ed08df --- /dev/null +++ b/konova/filters/mixins/user_log.py @@ -0,0 +1,55 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 19.08.24 + +""" +import django_filters +from django import forms +from django.db.models import QuerySet, Q +from django.utils.translation import gettext_lazy as _ + + +class UserLoggedTableFilterMixin(django_filters.FilterSet): + ul = django_filters.CharFilter( + method="filter_user_log", + label=_(""), + label_suffix=_(""), + widget=forms.TextInput( + attrs={ + "placeholder": _("Logged user"), + "title": _("Search for entries where this person has been participated according to log history"), + "class": "form-control", + } + ), + ) + + class Meta: + abstract = True + + def filter_user_log(self, queryset, name, value) -> QuerySet: + """ Filters queryset depending on value of input + + Args: + queryset (QuerySet): Incoming (prefiltered) queryset + name (str): Name of input field + value (str): Value of input field + + Returns: + + """ + value = value.replace(",", " ") + value = value.strip() + values = value.split(" ") + + q = Q() + for val in values: + q &= ( + Q(log__user__username__icontains=val) | + Q(log__user__first_name__icontains=val) | + Q(log__user__last_name__icontains=val) + ) + + queryset = queryset.filter(q) + return queryset diff --git a/konova/filters/table_filters.py b/konova/filters/table_filters.py index 323bf1e..a9891d5 100644 --- a/konova/filters/table_filters.py +++ b/konova/filters/table_filters.py @@ -14,6 +14,7 @@ from konova.filters.mixins.office import ConservationOfficeTableFilterMixin, Reg from konova.filters.mixins.record import RecordableTableFilterMixin from konova.filters.mixins.self_created import SelfCreatedTableFilterMixin from konova.filters.mixins.share import ShareableTableFilterMixin +from konova.filters.mixins.user_log import UserLoggedTableFilterMixin class AbstractTableFilter(django_filters.FilterSet): @@ -40,7 +41,8 @@ class SelectionTableFilter(RegistrationOfficeTableFilterMixin, class QueryTableFilter(KeywordTableFilterMixin, FileNumberTableFilterMixin, - GeoReferencedTableFilterMixin): + GeoReferencedTableFilterMixin, + UserLoggedTableFilterMixin): """ TableFilter holding different filter options for query related filtering """ diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 16e986185f16e57b02d653f05a10f1b91cd24c8b..176949462bf5e1a407e824d18768d38fe5b0d69f 100644 GIT binary patch delta 11882 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 VtE1_NO+V(?eKm)7F)Y`7!xfXmm?C&5 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\n" "Language-Team: LANGUAGE \n" @@ -1786,6 +1787,17 @@ msgstr "" "Wenn aktiviert werden auch Einträge angezeigt, die nicht für Sie freigegeben " "sind" +#: konova/filters/mixins/user_log.py:21 +msgid "Logged user" +msgstr "Bearbeitender Nutzer" + +#: konova/filters/mixins/user_log.py:22 +msgid "" +"Search for entries where this person has been participated according to log " +"history" +msgstr "" +"Sucht nach Einträgen, an denen diese Person gearbeitet hat" + #: konova/forms/base_form.py:23 templates/form/collapsable/form.html:62 msgid "Save" msgstr "Speichern"