53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
|
"""
|
||
|
Author: Michel Peltriaux
|
||
|
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||
|
Contact: michel.peltriaux@sgdnord.rlp.de
|
||
|
Created on: 16.11.20
|
||
|
|
||
|
"""
|
||
|
from django.http import HttpRequest
|
||
|
|
||
|
from konova.models import RoleGroup
|
||
|
from konova.sub_settings.context_settings import BASE_TITLE, WIKI_URL, BASE_FRONTEND_TITLE, RENDER_HEADER
|
||
|
from konova.utils.session import set_session_user_role
|
||
|
|
||
|
|
||
|
class BaseContext:
|
||
|
"""
|
||
|
Holds all base data which is needed for every context rendering
|
||
|
"""
|
||
|
context = {
|
||
|
"base_title": BASE_TITLE,
|
||
|
"base_frontend_title": BASE_FRONTEND_TITLE,
|
||
|
"language": "en",
|
||
|
"wiki_url": WIKI_URL,
|
||
|
"user": None,
|
||
|
"render_header": RENDER_HEADER,
|
||
|
"current_role": None,
|
||
|
}
|
||
|
|
||
|
def __init__(self, request: HttpRequest, additional_context: dict = {}):
|
||
|
self.context["language"] = request.LANGUAGE_CODE
|
||
|
self.context["user"] = request.user
|
||
|
self.__handle_current_role(request)
|
||
|
|
||
|
# Add additional context, derived from given parameters
|
||
|
self.context.update(additional_context)
|
||
|
|
||
|
def __handle_current_role(self, request: HttpRequest):
|
||
|
""" Reads/Writes current role from/to session
|
||
|
|
||
|
Args:
|
||
|
request (HttpRequest): The incoming request
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
"""
|
||
|
# Store current role in session object to reduce amount of db access
|
||
|
current_role = request.session.get("current_role", {})
|
||
|
|
||
|
if len(current_role) == 0 and request.user.is_authenticated:
|
||
|
role_group = RoleGroup.get_users_role_groups(request.user).first()
|
||
|
current_role = set_session_user_role(request, role_group)
|
||
|
|
||
|
self.context["current_role"] = current_role
|