From 1fc1b533cd1b2b9c5cbc69ff0c030cb6ce34c80f Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Tue, 21 Oct 2025 14:56:26 +0200 Subject: [PATCH] # Log view refactoring * refactors log views to inherit from BaseView --- compensation/views/compensation/log.py | 15 +++------------ compensation/views/eco_account/log.py | 15 +++------------ ema/views/log.py | 16 +++++----------- intervention/views/log.py | 14 +++----------- konova/views/log.py | 23 ++++++++++++++++------- 5 files changed, 30 insertions(+), 53 deletions(-) diff --git a/compensation/views/compensation/log.py b/compensation/views/compensation/log.py index 40b15a1e..78e0748b 100644 --- a/compensation/views/compensation/log.py +++ b/compensation/views/compensation/log.py @@ -5,20 +5,11 @@ Contact: ksp-servicestelle@sgdnord.rlp.de Created on: 19.08.22 """ -from django.contrib.auth.decorators import login_required -from django.utils.decorators import method_decorator +from django.contrib.auth.mixins import LoginRequiredMixin from compensation.models import Compensation -from konova.decorators import shared_access_required, default_group_required, login_required_modal from konova.views.log import AbstractLogView -class CompensationLogView(AbstractLogView): - model = Compensation - - @method_decorator(login_required_modal) - @method_decorator(login_required) - @method_decorator(default_group_required) - @method_decorator(shared_access_required(Compensation, "id")) - def dispatch(self, request, *args, **kwargs): - return super().dispatch(request, *args, **kwargs) +class CompensationLogView(LoginRequiredMixin, AbstractLogView): + _MODEL_CLS = Compensation diff --git a/compensation/views/eco_account/log.py b/compensation/views/eco_account/log.py index e18d945a..5c965f37 100644 --- a/compensation/views/eco_account/log.py +++ b/compensation/views/eco_account/log.py @@ -5,20 +5,11 @@ Contact: ksp-servicestelle@sgdnord.rlp.de Created on: 19.08.22 """ -from django.contrib.auth.decorators import login_required -from django.utils.decorators import method_decorator +from django.contrib.auth.mixins import LoginRequiredMixin from compensation.models import EcoAccount -from konova.decorators import shared_access_required, default_group_required, login_required_modal from konova.views.log import AbstractLogView -class EcoAccountLogView(AbstractLogView): - model = EcoAccount - - @method_decorator(login_required_modal) - @method_decorator(login_required) - @method_decorator(default_group_required) - @method_decorator(shared_access_required(EcoAccount, "id")) - def dispatch(self, request, *args, **kwargs): - return super().dispatch(request, *args, **kwargs) +class EcoAccountLogView(LoginRequiredMixin, AbstractLogView): + _MODEL_CLS = EcoAccount diff --git a/ema/views/log.py b/ema/views/log.py index 82162ba4..3f0ca939 100644 --- a/ema/views/log.py +++ b/ema/views/log.py @@ -5,20 +5,14 @@ Contact: ksp-servicestelle@sgdnord.rlp.de Created on: 19.08.22 """ -from django.contrib.auth.decorators import login_required -from django.utils.decorators import method_decorator +from django.contrib.auth.mixins import LoginRequiredMixin from ema.models import Ema -from konova.decorators import shared_access_required, conservation_office_group_required, login_required_modal from konova.views.log import AbstractLogView -class EmaLogView(AbstractLogView): - model = Ema +class EmaLogView(LoginRequiredMixin, AbstractLogView): + _MODEL_CLS = Ema - @method_decorator(login_required_modal) - @method_decorator(login_required) - @method_decorator(conservation_office_group_required) - @method_decorator(shared_access_required(Ema, "id")) - def dispatch(self, request, *args, **kwargs): - return super().dispatch(request, *args, **kwargs) + def _user_has_permission(self, user): + return user.is_ets_user() diff --git a/intervention/views/log.py b/intervention/views/log.py index 709829c6..f06f6cb2 100644 --- a/intervention/views/log.py +++ b/intervention/views/log.py @@ -5,19 +5,11 @@ Contact: ksp-servicestelle@sgdnord.rlp.de Created on: 19.08.22 """ -from django.contrib.auth.decorators import login_required -from django.utils.decorators import method_decorator +from django.contrib.auth.mixins import LoginRequiredMixin from intervention.models import Intervention -from konova.decorators import shared_access_required, default_group_required from konova.views.log import AbstractLogView -class InterventionLogView(AbstractLogView): - model = Intervention - - @method_decorator(login_required) - @method_decorator(default_group_required) - @method_decorator(shared_access_required(Intervention, "id")) - def dispatch(self, request, *args, **kwargs): - return super().dispatch(request, *args, **kwargs) +class InterventionLogView(LoginRequiredMixin, AbstractLogView): + _MODEL_CLS = Intervention diff --git a/konova/views/log.py b/konova/views/log.py index 7cc9d56a..df898808 100644 --- a/konova/views/log.py +++ b/konova/views/log.py @@ -6,14 +6,15 @@ Created on: 19.08.22 """ from django.shortcuts import get_object_or_404, render -from django.views import View from django.utils.translation import gettext_lazy as _ from konova.contexts import BaseContext +from konova.views.base import BaseView -class AbstractLogView(View): - model = None +class AbstractLogView(BaseView): + _MODEL_CLS = None + _TEMPLATE = "modal/modal_generic.html" class Meta: abstract = True @@ -28,14 +29,22 @@ class AbstractLogView(View): Returns: """ - intervention = get_object_or_404(self.model, id=id) - template = "modal/modal_generic.html" + intervention = get_object_or_404(self._MODEL_CLS, id=id) body_template = "log.html" context = { "modal_body_template": body_template, - "log": intervention.log.all(), + "log": intervention.log.iterator(), "modal_title": _("Log"), } context = BaseContext(request, context).context - return render(request, template, context) + return render(request, self._TEMPLATE, context) + + def _user_has_shared_access(self, user, **kwargs): + obj_id = kwargs.get('id', None) + assert obj_id is not None + obj = get_object_or_404(self._MODEL_CLS, id=obj_id) + return obj.is_shared_with(user) + + def _user_has_permission(self, user): + return user.is_default_user()