Group access constraints
* adds new decorators for all three important groups * reorganize some default group settings for setup_data.py
This commit is contained in:
parent
50d98b2a83
commit
39c1d9eb12
@ -13,6 +13,8 @@ from django.shortcuts import redirect
|
|||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
from konova.settings import DEFAULT_GROUP, ETS_GROUP, ZB_GROUP
|
||||||
|
|
||||||
|
|
||||||
def staff_required(function):
|
def staff_required(function):
|
||||||
"""
|
"""
|
||||||
@ -41,4 +43,64 @@ def superuser_required(function):
|
|||||||
else:
|
else:
|
||||||
messages.info(request, _("You need to be administrator to perform this action!"))
|
messages.info(request, _("You need to be administrator to perform this action!"))
|
||||||
return redirect(request.META.get("HTTP_REFERER", reverse("home")))
|
return redirect(request.META.get("HTTP_REFERER", reverse("home")))
|
||||||
|
return wrap
|
||||||
|
|
||||||
|
|
||||||
|
def default_group_required(function):
|
||||||
|
"""
|
||||||
|
A decorator for functions which shall only be usable for users of specific groups.
|
||||||
|
Group identifiers can be found in konova/settings.py
|
||||||
|
|
||||||
|
"""
|
||||||
|
@wraps(function)
|
||||||
|
def wrap(request, *args, **kwargs):
|
||||||
|
user = request.user
|
||||||
|
has_group = user.groups.filter(
|
||||||
|
name=DEFAULT_GROUP
|
||||||
|
).exists()
|
||||||
|
if has_group:
|
||||||
|
return function(request, *args, **kwargs)
|
||||||
|
else:
|
||||||
|
messages.info(request, _("You need to be part of another user group."))
|
||||||
|
return redirect(request.META.get("HTTP_REFERER", reverse("home")))
|
||||||
|
return wrap
|
||||||
|
|
||||||
|
|
||||||
|
def registration_office_group_required(function):
|
||||||
|
"""
|
||||||
|
A decorator for functions which shall only be usable for users of specific groups.
|
||||||
|
Group identifiers can be found in konova/settings.py
|
||||||
|
|
||||||
|
"""
|
||||||
|
@wraps(function)
|
||||||
|
def wrap(request, *args, **kwargs):
|
||||||
|
user = request.user
|
||||||
|
has_group = user.groups.filter(
|
||||||
|
name=ZB_GROUP
|
||||||
|
).exists()
|
||||||
|
if has_group:
|
||||||
|
return function(request, *args, **kwargs)
|
||||||
|
else:
|
||||||
|
messages.info(request, _("You need to be part of another user group."))
|
||||||
|
return redirect(request.META.get("HTTP_REFERER", reverse("home")))
|
||||||
|
return wrap
|
||||||
|
|
||||||
|
|
||||||
|
def conservation_office_group_required(function):
|
||||||
|
"""
|
||||||
|
A decorator for functions which shall only be usable for users of specific groups.
|
||||||
|
Group identifiers can be found in konova/settings.py
|
||||||
|
|
||||||
|
"""
|
||||||
|
@wraps(function)
|
||||||
|
def wrap(request, *args, **kwargs):
|
||||||
|
user = request.user
|
||||||
|
has_group = user.groups.filter(
|
||||||
|
name=ETS_GROUP
|
||||||
|
).exists()
|
||||||
|
if has_group:
|
||||||
|
return function(request, *args, **kwargs)
|
||||||
|
else:
|
||||||
|
messages.info(request, _("You need to be part of another user group."))
|
||||||
|
return redirect(request.META.get("HTTP_REFERER", reverse("home")))
|
||||||
return wrap
|
return wrap
|
@ -27,13 +27,13 @@ TEST_ORGANISATION_DATA = [
|
|||||||
|
|
||||||
GROUPS_DATA = [
|
GROUPS_DATA = [
|
||||||
{
|
{
|
||||||
"name": DEFAULT_GROUP,
|
"name": _(DEFAULT_GROUP),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": ZB_GROUP,
|
"name": _(ZB_GROUP),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": ETS_GROUP,
|
"name": _(ETS_GROUP),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -11,8 +11,6 @@ from django.contrib.auth.models import User
|
|||||||
from django.contrib.gis.db.models import MultiPolygonField
|
from django.contrib.gis.db.models import MultiPolygonField
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
from konova.enums import ServerMessageImportance
|
|
||||||
|
|
||||||
|
|
||||||
class BaseResource(models.Model):
|
class BaseResource(models.Model):
|
||||||
"""
|
"""
|
||||||
|
@ -52,9 +52,9 @@ DEFAULT_LON = 7.00
|
|||||||
DEFAULT_ZOOM = 8.0
|
DEFAULT_ZOOM = 8.0
|
||||||
|
|
||||||
# GROUPS
|
# GROUPS
|
||||||
DEFAULT_GROUP = _("Default")
|
DEFAULT_GROUP = "Default"
|
||||||
ZB_GROUP = _("Registration office")
|
ZB_GROUP = "Registration office"
|
||||||
ETS_GROUP = _("Conservation office")
|
ETS_GROUP = "Conservation office"
|
||||||
|
|
||||||
# ServerMessageImportance bootstrap resolver
|
# ServerMessageImportance bootstrap resolver
|
||||||
SVI_BOOTSTRAP_CLS_MAP = {
|
SVI_BOOTSTRAP_CLS_MAP = {
|
||||||
|
Loading…
Reference in New Issue
Block a user