Permission rethinking

* No detailed permissions due to django constraints on model-based permissions
* instead: logic controlled permission by group membership
* adds translations
This commit is contained in:
mipel
2021-07-02 09:30:50 +02:00
parent a81351f468
commit b4d1aea37f
6 changed files with 211 additions and 259 deletions

View File

@@ -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()

View File

@@ -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,
]
},
]

View File

@@ -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