From b4d1aea37f7975bd65c8cd40003ca1eec20442c0 Mon Sep 17 00:00:00 2001 From: mipel Date: Fri, 2 Jul 2021 09:30:50 +0200 Subject: [PATCH] Permission rethinking * No detailed permissions due to django constraints on model-based permissions * instead: logic controlled permission by group membership * adds translations --- compensation/models.py | 1 + konova/management/commands/setup.py | 12 +- konova/management/commands/setup_data.py | 22 -- konova/models.py | 21 +- locale/de/LC_MESSAGES/django.mo | Bin 6583 -> 5318 bytes locale/de/LC_MESSAGES/django.po | 414 +++++++++++------------ 6 files changed, 211 insertions(+), 259 deletions(-) diff --git a/compensation/models.py b/compensation/models.py index 9d3e0ca5..1af74cf7 100644 --- a/compensation/models.py +++ b/compensation/models.py @@ -74,6 +74,7 @@ class Compensation(BaseObject): geometry = models.ForeignKey(Geometry, null=True, blank=True, on_delete=models.SET_NULL) documents = models.ManyToManyField("konova.Document", blank=True) + @staticmethod def _generate_new_identifier() -> str: """ Generates a new identifier for the intervention object diff --git a/konova/management/commands/setup.py b/konova/management/commands/setup.py index 7df15c1f..74335fa3 100644 --- a/konova/management/commands/setup.py +++ b/konova/management/commands/setup.py @@ -83,18 +83,10 @@ class Command(BaseCommand): self._write_warning("--- Groups ---") for group_data in GROUPS_DATA: name = group_data.get("name") - perms_data = group_data.get("permissions") - perms_objects = [ - Permission.objects.get_or_create( - codename=perm[0], - name=perm[1] - ) - for perm in perms_data - ] - group = Group.objects.get_or_create( + Group.objects.get_or_create( name=name, ) - group.permissions.set(perms_objects) + self._write_success(CREATED_TEMPLATE.format(name)) self._break_line() diff --git a/konova/management/commands/setup_data.py b/konova/management/commands/setup_data.py index e2c6da35..7f082f11 100644 --- a/konova/management/commands/setup_data.py +++ b/konova/management/commands/setup_data.py @@ -26,36 +26,14 @@ TEST_ORGANISATION_DATA = [ }, ] -# Groups permissions are declared in konova/settings.py GROUPS_DATA = [ { "name": _("Default"), - "permissions": [ - ADD_INTERVENTION, - EDIT_INTERVENTION, - DELETE_INTERVENTION, - ADD_COMPENSATION, - EDIT_COMPENSATION, - DELETE_COMPENSATION, - ADD_ECOACCOUNT, - EDIT_ECOACCOUNT, - DELETE_ECOACCOUNT, - CREATE_SHARE_LINK, - ] }, { "name": _("Registration office"), - "permissions": [ - VALIDITY_CHECK, - ] }, { "name": _("Conservation office"), - "permissions": [ - RECORD_DATA, - ADD_EMA, - EDIT_EMA, - DELETE_EMA, - ] }, ] \ No newline at end of file diff --git a/konova/models.py b/konova/models.py index 689a46e3..5bf5b2a8 100644 --- a/konova/models.py +++ b/konova/models.py @@ -7,7 +7,7 @@ Created on: 17.11.20 """ import uuid -from django.contrib.auth.models import User, Group +from django.contrib.auth.models import User from django.contrib.gis.db.models import MultiPolygonField from django.db import models @@ -43,25 +43,6 @@ class BaseObject(BaseResource): abstract = True -class KonovaPermission(models.Model): - """ - Custom permissions for konova - - """ - name = models.CharField(max_length=255, blank=False, null=False) - description = models.TextField() - is_active = models.BooleanField(default=True) - - -class KonovaGroup(models.Model): - """ - Custom group model - - """ - name = models.CharField(max_length=255, null=False, blank=False) - permissions = models.ManyToManyField(KonovaPermission) - - class Deadline(BaseResource): """ Defines a deadline, which can be used to define dates with a semantic meaning diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index a9af9f6c9143e9b2ef7faa0c83e9bf60e6173034..d7ae08ecdbdf1535621a012d0e9f5c38a15a3b1e 100644 GIT binary patch literal 5318 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 literal 6583 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 22249695..2f712edf 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -3,16 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#: konova/forms.py:73 process/forms.py:29 process/forms.py:36 -#: process/forms.py:43 process/forms.py:50 process/forms.py:64 -#: process/forms.py:70 process/forms.py:76 process/forms.py:90 -#: process/forms.py:96 +#: konova/forms.py:67 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-12-18 10:50+0100\n" +"POT-Creation-Date: 2021-07-02 09:22+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,66 +19,59 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: compensation/tables.py:18 compensation/tables.py:73 intervention/forms.py:26 -#: intervention/tables.py:19 process/forms.py:28 +#: compensation/tables.py:18 compensation/tables.py:68 intervention/forms.py:26 +#: intervention/tables.py:19 msgid "Identifier" msgstr "Kennung" -#: compensation/tables.py:23 compensation/tables.py:78 intervention/forms.py:33 -#: intervention/tables.py:24 process/forms.py:35 process/tables.py:28 +#: compensation/tables.py:23 compensation/tables.py:73 intervention/forms.py:33 +#: intervention/tables.py:24 msgid "Title" msgstr "Titel" -#: compensation/tables.py:28 intervention/tables.py:29 process/tables.py:80 -#: process/tables.py:116 process/templates/process/open.html:8 -#: templates/authenticated-user-navbar.html:17 -msgid "Process" -msgstr "Vorgang" - -#: compensation/tables.py:33 compensation/tables.py:83 -#: intervention/tables.py:34 process/tables.py:52 +#: compensation/tables.py:28 compensation/tables.py:78 +#: intervention/tables.py:29 msgid "Created on" msgstr "Erstellt" -#: compensation/tables.py:38 compensation/tables.py:88 -#: intervention/tables.py:39 process/tables.py:57 +#: compensation/tables.py:33 compensation/tables.py:83 +#: intervention/tables.py:34 msgid "Actions" msgstr "Aktionen" -#: compensation/tables.py:46 process/templates/process/open.html:57 +#: compensation/tables.py:41 msgid "Compensations" msgstr "Kompensationen" -#: compensation/tables.py:53 compensation/tables.py:103 +#: compensation/tables.py:48 compensation/tables.py:98 #: templates/authenticated-user-navbar.html:45 msgid "Compensation" msgstr "Kompensation" -#: compensation/tables.py:56 compensation/tables.py:106 -#: intervention/tables.py:62 intervention/tables.py:76 process/tables.py:80 -#: process/tables.py:119 +#: compensation/tables.py:51 compensation/tables.py:101 +#: intervention/tables.py:57 intervention/tables.py:71 msgid "Open {}" msgstr "Öffne {}" -#: compensation/tables.py:61 compensation/tables.py:111 -#: intervention/tables.py:80 process/tables.py:123 +#: compensation/tables.py:56 compensation/tables.py:106 +#: intervention/tables.py:75 msgid "Edit {}" msgstr "Bearbeite {}" -#: compensation/tables.py:65 compensation/tables.py:115 -#: intervention/tables.py:84 process/tables.py:127 +#: compensation/tables.py:60 compensation/tables.py:110 +#: intervention/tables.py:79 msgid "Delete {}" msgstr "Lösche {}" -#: compensation/tables.py:96 +#: compensation/tables.py:91 msgid "Eco Accounts" msgstr "Ökokonten" -#: intervention/forms.py:29 process/forms.py:30 +#: intervention/forms.py:29 msgid "Generated automatically if none was given" msgstr "Wird automatisch erzeugt, falls nicht angegeben" -#: intervention/forms.py:38 process/forms.py:42 +#: intervention/forms.py:38 msgid "Type" msgstr "Typ" @@ -105,7 +95,7 @@ msgstr "Eingriffsverursacher" msgid "Who performs the intervention" msgstr "Wer führt den Eingriff durch" -#: intervention/forms.py:56 organisation/settings.py:19 +#: intervention/forms.py:56 msgid "Data provider" msgstr "Datenbereitsteller" @@ -113,8 +103,7 @@ msgstr "Datenbereitsteller" msgid "Who provides the data for the intervention" msgstr "Wer stellt die Daten für den Eingriff zur Verfügung" -#: intervention/forms.py:63 process/forms.py:56 process/forms.py:82 -#: templates/authenticated-user-navbar.html:90 +#: intervention/forms.py:63 templates/authenticated-user-navbar.html:90 #: templates/authenticated-user-navbar.html:93 msgid "Organization" msgstr "Organisation" @@ -143,227 +132,140 @@ msgstr "Dateien" msgid "New intervention" msgstr "Neuer Eingriff" -#: intervention/forms.py:145 +#: intervention/forms.py:145 konova/settings.py:56 msgid "Edit intervention" msgstr "Eingriff bearbeiten" -#: intervention/tables.py:47 +#: intervention/tables.py:42 msgid "Interventions" msgstr "Eingriffe" -#: intervention/tables.py:62 intervention/tables.py:73 +#: intervention/tables.py:57 intervention/tables.py:68 #: intervention/templates/intervention/open.html:8 -#: process/templates/process/open.html:48 #: templates/authenticated-user-navbar.html:31 msgid "Intervention" msgstr "Eingriff" #: intervention/templates/intervention/open.html:12 -#: process/templates/process/open.html:13 msgid "Edit" msgstr "Bearbeiten" -#: intervention/views.py:62 -msgid "" -"Interventions must be part of a process. Please fill in the missing data for " -"the process" -msgstr "" -"Eingriffe müssen zu einem Vorgang gehören. Bitte geben SIe die fehlenden " -"Daten für den Vorgang ein." - -#: intervention/views.py:65 +#: intervention/views.py:56 msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views.py:68 intervention/views.py:121 intervention/views.py:160 -#: process/views.py:69 process/views.py:121 process/views.py:157 +#: intervention/views.py:59 intervention/views.py:112 msgid "Invalid input" msgstr "Eingabe fehlerhaft" -#: intervention/views.py:118 process/views.py:118 +#: intervention/views.py:109 msgid "{} edited" msgstr "{} bearbeitet" -#: intervention/views.py:157 -msgid "Intervention {} removed" -msgstr "Eingriff {} gelöscht" - -#: konova/decorators.py:34 +#: konova/decorators.py:27 msgid "You need to be staff to perform this action!" msgstr "Hierfür müssen Sie Mitarbeiter sein!" -#: konova/decorators.py:49 +#: konova/decorators.py:42 msgid "You need to be administrator to perform this action!" msgstr "Hierfür müssen Sie Administrator sein!" -#: konova/decorators.py:89 -msgid "Your current role is not allowed to do this" -msgstr "" - -#: konova/forms.py:46 +#: konova/forms.py:40 msgid "Not editable" msgstr "Nicht editierbar" -#: konova/forms.py:72 +#: konova/forms.py:66 msgid "Confirm" msgstr "Bestätigen" -#: konova/forms.py:84 +#: konova/forms.py:78 msgid "Remove" msgstr "Entferne" -#: konova/forms.py:86 +#: konova/forms.py:80 msgid "You are about to remove {} {}" msgstr "Sie sind dabei {} {} zu löschen" -#: konova/forms.py:106 -msgid "You are working as" -msgstr "Sie arbeiten gerade als " +#: konova/management/commands/setup_data.py:32 +msgid "Default" +msgstr "" -#: konova/templates/konova/home.html:11 +#: konova/management/commands/setup_data.py:47 +msgid "Registration office" +msgstr "Zulassungsbehörde" + +#: konova/management/commands/setup_data.py:53 +msgid "Conservation office" +msgstr "Naturschutzbehörde" + +#: konova/settings.py:55 +msgid "Add new intervention" +msgstr "Neuen Eingriff hinzufügen" + +#: konova/settings.py:57 +msgid "Delete intervention" +msgstr "Eingriff löschen" + +#: konova/settings.py:58 +msgid "Add new compensation" +msgstr "Neue Kompensation hinzufügen" + +#: konova/settings.py:59 +msgid "Edit compensation" +msgstr "Kompensation bearbeiten" + +#: konova/settings.py:60 +msgid "Delete compensation" +msgstr "Kompensation löschen" + +#: konova/settings.py:61 +msgid "Add new eco account" +msgstr "Neues Ökokonto hinzufügen" + +#: konova/settings.py:62 +msgid "Edit eco account" +msgstr "Ökokonto" + +#: konova/settings.py:63 +msgid "Delete eco account" +msgstr "Ökokonto löschen" + +#: konova/settings.py:64 +msgid "Create share link" +msgstr "Freigabelink erstellen" + +#: konova/settings.py:67 +msgid "Confirm check on data" +msgstr "Datenprüfung bestätigen" + +#: konova/settings.py:70 +msgid "Record data" +msgstr "Daten verzeichnen" + +#: konova/settings.py:71 +msgid "Add new EMA" +msgstr "Neue EMA hinzufügen" + +#: konova/settings.py:72 +msgid "Edit EMA" +msgstr "Bearbeite EMA" + +#: konova/settings.py:73 +msgid "Delete EMA" +msgstr "Lösche EMA" + +#: konova/templates/kspneo/home.html:11 msgid "Proceed with login" msgstr "Mit Login fortfahren" -#: konova/templates/konova/home.html:16 +#: konova/templates/kspneo/home.html:16 msgid "Logged in as" msgstr "Eingeloggt als" -#: konova/templates/konova/home.html:18 +#: konova/templates/kspneo/home.html:18 msgid "Last login on" msgstr "Zuletzt eingeloggt am" -#: konova/views.py:53 -msgid "Role changed" -msgstr "Rolle geändert" - -#: konova/views.py:55 -msgid "Invalid role" -msgstr "Rolle ungültig" - -#: organisation/settings.py:13 -msgid "Official" -msgstr "Amtlich" - -#: organisation/settings.py:14 -msgid "Company" -msgstr "Firma" - -#: organisation/settings.py:15 -msgid "NGO" -msgstr "NGO" - -#: organisation/settings.py:20 process/forms.py:49 -#: process/templates/process/open.html:23 -msgid "Licencing Authority" -msgstr "Zulassungsbehörde" - -#: organisation/settings.py:21 process/forms.py:75 -#: process/templates/process/open.html:31 -msgid "Registration office" -msgstr "Eintragungsstelle" - -#: process/forms.py:37 -msgid "Proper title of the process" -msgstr "Titel des Vorgangs" - -#: process/forms.py:44 -msgid "Which process type is this" -msgstr "Welcher Vorgangstyp" - -#: process/forms.py:63 process/templates/process/open.html:27 -msgid "Licencing document identifier" -msgstr "Aktenzeichen Zulassungsbehörde" - -#: process/forms.py:69 -msgid "Comment licensing authority" -msgstr "Kommentar Zulassungsbehörde" - -#: process/forms.py:89 process/templates/process/open.html:35 -msgid "Registration document identifier" -msgstr "Aktenzeichen Eintragungsstelle" - -#: process/forms.py:95 -msgid "Comment registration office" -msgstr "Kommentar Eintragungsstelle" - -#: process/forms.py:104 -msgid "Add new process" -msgstr "Neuen Vorgang hinzufügen" - -#: process/forms.py:105 -msgid "Enter these basic information for the new process." -msgstr "Geben Sie die grundlegenden Informationen für einen neuen Vorgang ein." - -#: process/forms.py:146 process/tables.py:47 -#: process/templates/process/open.html:39 -#: process/templates/process/open.html:41 -msgid "Status" -msgstr "" - -#: process/forms.py:157 -msgid "Edit process" -msgstr "Vorgang bearbeiten" - -#: process/settings.py:14 -msgid "private" -msgstr "privat" - -#: process/settings.py:15 -msgid "accessible" -msgstr "bereitgestellt" - -#: process/settings.py:16 -msgid "licensed" -msgstr "genehmigt" - -#: process/settings.py:17 -msgid "official" -msgstr "bestandskräftig" - -#: process/settings.py:18 -msgid "recorded" -msgstr "verzeichnet" - -#: process/tables.py:23 -msgid "Intervention identifier" -msgstr "Eingriffskennung" - -#: process/tables.py:65 -msgid "Processes" -msgstr "Vorgänge" - -#: process/templates/process/open.html:64 -msgid "Add a new compensation" -msgstr "Neue Kompensation hinzufügen" - -#: process/templates/process/open.html:66 templates/table.html:16 -msgid "New" -msgstr "Neu" - -#: process/templates/process/open.html:84 -msgid "No compensation" -msgstr "Keine Kompensation" - -#: process/views.py:66 -msgid "" -"A process is based on an intervention. Please fill in the missing data for " -"this intervention" -msgstr "" -"Ein Vorgang basiert immer auf einem Eingriff. Bitte geben Sie die fehlenden " -"Daten für diesen Eingriff ein" - -#: process/views.py:154 -msgid "Process {} removed" -msgstr "Vorgang {} gelöscht" - -#: process/views.py:191 -msgid "{} status changed from {} to {}" -msgstr "{} Status von {} auf {} geändert" - -#: process/views.py:212 -msgid "Please fill in the data for this compensation" -msgstr "" - #: templates/anonymous-user-navbar.html:7 #: templates/authenticated-user-navbar.html:8 msgid "Menu" @@ -371,11 +273,15 @@ msgstr "Menü" #: templates/anonymous-user-navbar.html:14 #: templates/anonymous-user-navbar.html:15 -#: templates/authenticated-user-navbar.html:14 templates/base.html:29 -#: templates/base.html:30 +#: templates/authenticated-user-navbar.html:14 templates/base.html:25 +#: templates/base.html:26 msgid "Home" msgstr "Home" +#: templates/authenticated-user-navbar.html:17 +msgid "Process" +msgstr "Vorgang" + #: templates/authenticated-user-navbar.html:20 msgid "Process management" msgstr "Vorgangsverwaltung" @@ -469,11 +375,11 @@ msgstr "Sie arbeiten gerade als " msgid "Change..." msgstr "Ändern..." -#: templates/base.html:88 +#: templates/base.html:84 msgid "About this site" msgstr "" -#: templates/base.html:91 +#: templates/base.html:87 msgid "Privacy policy" msgstr "" @@ -493,10 +399,20 @@ msgstr "Speichern" msgid "New entry" msgstr "Neuer Eintrag" +#: templates/table.html:16 +msgid "New" +msgstr "Neu" + #: templates/table.html:31 msgid "Results per page" msgstr "Treffer pro Seite" +#: venv/lib/python3.7/site-packages/bootstrap4/components.py:17 +#: venv/lib/python3.7/site-packages/bootstrap4/templates/bootstrap4/form_errors.html:3 +#: venv/lib/python3.7/site-packages/bootstrap4/templates/bootstrap4/messages.html:4 +msgid "close" +msgstr "" + #: venv/lib/python3.7/site-packages/django/contrib/messages/apps.py:7 msgid "Messages" msgstr "Nachrichten" @@ -1686,6 +1602,90 @@ msgstr "" msgid "A fontawesome icon field" msgstr "" +#~ msgid "" +#~ "Interventions must be part of a process. Please fill in the missing data " +#~ "for the process" +#~ msgstr "" +#~ "Eingriffe müssen zu einem Vorgang gehören. Bitte geben SIe die fehlenden " +#~ "Daten für den Vorgang ein." + +#~ msgid "Intervention {} removed" +#~ msgstr "Eingriff {} gelöscht" + +#~ msgid "You are working as" +#~ msgstr "Sie arbeiten gerade als " + +#~ msgid "Role changed" +#~ msgstr "Rolle geändert" + +#~ msgid "Invalid role" +#~ msgstr "Rolle ungültig" + +#~ msgid "Official" +#~ msgstr "Amtlich" + +#~ msgid "Company" +#~ msgstr "Firma" + +#~ msgid "NGO" +#~ msgstr "NGO" + +#~ msgid "Licencing Authority" +#~ msgstr "Zulassungsbehörde" + +#~ msgid "Proper title of the process" +#~ msgstr "Titel des Vorgangs" + +#~ msgid "Which process type is this" +#~ msgstr "Welcher Vorgangstyp" + +#~ msgid "Licencing document identifier" +#~ msgstr "Aktenzeichen Zulassungsbehörde" + +#~ msgid "Comment licensing authority" +#~ msgstr "Kommentar Zulassungsbehörde" + +#~ msgid "Registration document identifier" +#~ msgstr "Aktenzeichen Eintragungsstelle" + +#~ msgid "Enter these basic information for the new process." +#~ msgstr "" +#~ "Geben Sie die grundlegenden Informationen für einen neuen Vorgang ein." + +#~ msgid "Edit process" +#~ msgstr "Vorgang bearbeiten" + +#~ msgid "private" +#~ msgstr "privat" + +#~ msgid "accessible" +#~ msgstr "bereitgestellt" + +#~ msgid "licensed" +#~ msgstr "genehmigt" + +#~ msgid "official" +#~ msgstr "bestandskräftig" + +#~ msgid "Intervention identifier" +#~ msgstr "Eingriffskennung" + +#~ msgid "Processes" +#~ msgstr "Vorgänge" + +#~ msgid "" +#~ "A process is based on an intervention. Please fill in the missing data " +#~ "for this intervention" +#~ msgstr "" +#~ "Ein Vorgang basiert immer auf einem Eingriff. Bitte geben Sie die " +#~ "fehlenden Daten für diesen Eingriff ein" + +#~ msgid "Process {} removed" +#~ msgstr "Vorgang {} gelöscht" + +#~ msgid "{} status changed from {} to {}" +#~ msgstr "{} Status von {} auf {} geändert" + #~ msgid "Process {} added" #~ msgstr "Vorgang {} hinzugefügt"