From bc2e901ca91d5ecb28ef2e5f078a19a5c4337dcb Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Tue, 4 Nov 2025 09:09:05 +0100 Subject: [PATCH] # Refactoring payment view * refactors views for adding, editing and removing payments --- compensation/forms/modals/payment.py | 9 ++- compensation/urls/payment.py | 8 +-- compensation/views/payment.py | 88 +++++++--------------------- 3 files changed, 31 insertions(+), 74 deletions(-) diff --git a/compensation/forms/modals/payment.py b/compensation/forms/modals/payment.py index eed2e702..fa69dd15 100644 --- a/compensation/forms/modals/payment.py +++ b/compensation/forms/modals/payment.py @@ -6,8 +6,10 @@ Created on: 18.08.22 """ from django import forms +from django.shortcuts import get_object_or_404 from django.utils.translation import pgettext_lazy as _con, gettext_lazy as _ +from compensation.models import Payment from konova.forms.modals import RemoveModalForm, BaseModalForm from konova.utils import validators from konova.utils.message_templates import PAYMENT_EDITED @@ -103,7 +105,8 @@ class EditPaymentModalForm(NewPaymentForm): payment = None def __init__(self, *args, **kwargs): - self.payment = kwargs.pop("payment", None) + payment_id = kwargs.pop("payment_id", None) + self.payment = get_object_or_404(Payment, id=payment_id) super().__init__(*args, **kwargs) self.form_title = _("Edit payment") form_date = { @@ -133,8 +136,8 @@ class RemovePaymentModalForm(RemoveModalForm): payment = None def __init__(self, *args, **kwargs): - payment = kwargs.pop("payment", None) - self.payment = payment + payment_id = kwargs.pop("payment_id", None) + self.payment = get_object_or_404(Payment, id=payment_id) super().__init__(*args, **kwargs) def save(self): diff --git a/compensation/urls/payment.py b/compensation/urls/payment.py index b51384dd..2c4d39a6 100644 --- a/compensation/urls/payment.py +++ b/compensation/urls/payment.py @@ -6,11 +6,11 @@ Created on: 24.08.21 """ from django.urls import path -from compensation.views.payment import * +from compensation.views.payment import NewPaymentView, RemovePaymentView, EditPaymentView app_name = "pay" urlpatterns = [ - path('/new', new_payment_view, name='new'), - path('/remove/', payment_remove_view, name='remove'), - path('/edit/', payment_edit_view, name='edit'), + path('/new', NewPaymentView.as_view(), name='new'), + path('/remove/', RemovePaymentView.as_view(), name='remove'), + path('/edit/', EditPaymentView.as_view(), name='edit'), ] diff --git a/compensation/views/payment.py b/compensation/views/payment.py index 29e89ac3..49ea8ede 100644 --- a/compensation/views/payment.py +++ b/compensation/views/payment.py @@ -5,84 +5,38 @@ Contact: michel.peltriaux@sgdnord.rlp.de Created on: 09.08.21 """ -from django.urls import reverse -from django.contrib.auth.decorators import login_required -from django.http import HttpRequest -from django.shortcuts import get_object_or_404 +from django.contrib.auth.mixins import LoginRequiredMixin from compensation.forms.modals.payment import NewPaymentForm, RemovePaymentModalForm, EditPaymentModalForm -from compensation.models import Payment from intervention.models import Intervention -from konova.decorators import default_group_required, shared_access_required from konova.utils.message_templates import PAYMENT_ADDED, PAYMENT_REMOVED, PAYMENT_EDITED +from konova.views.base import BaseModalFormView -@login_required -@default_group_required -@shared_access_required(Intervention, "id") -def new_payment_view(request: HttpRequest, id: str): - """ Renders a modal view for adding new payments +class BasePaymentView(LoginRequiredMixin, BaseModalFormView): + _MODEL_CLS = Intervention + _REDIRECT_URL = "intervention:detail" - Args: - request (HttpRequest): The incoming request - id (str): The intervention's id for which a new payment shall be added + class Meta: + abstract = True - Returns: + def _get_redirect_url(self, *args, **kwargs): + url = super()._get_redirect_url(*args, **kwargs) + return f"{url}#related_data" - """ - intervention = get_object_or_404(Intervention, id=id) - form = NewPaymentForm(request.POST or None, instance=intervention, request=request) - return form.process_request( - request, - msg_success=PAYMENT_ADDED, - redirect_url=reverse("intervention:detail", args=(id,)) + "#related_data" - ) + def _user_has_permission(self, user): + return user.is_default_user() -@login_required -@default_group_required -@shared_access_required(Intervention, "id") -def payment_remove_view(request: HttpRequest, id: str, payment_id: str): - """ Renders a modal view for removing payments - - Args: - request (HttpRequest): The incoming request - id (str): The intervention's id - payment_id (str): The payment's id - - Returns: - - """ - intervention = get_object_or_404(Intervention, id=id) - payment = get_object_or_404(Payment, id=payment_id) - form = RemovePaymentModalForm(request.POST or None, instance=intervention, payment=payment, request=request) - return form.process_request( - request=request, - msg_success=PAYMENT_REMOVED, - redirect_url=reverse("intervention:detail", args=(payment.intervention_id,)) + "#related_data" - ) +class NewPaymentView(BasePaymentView): + _FORM_CLS = NewPaymentForm + _MSG_SUCCESS = PAYMENT_ADDED -@login_required -@default_group_required -@shared_access_required(Intervention, "id") -def payment_edit_view(request: HttpRequest, id: str, payment_id: str): - """ Renders a modal view for editing payments - - Args: - request (HttpRequest): The incoming request - id (str): The intervention's id - payment_id (str): The payment's id - - Returns: - - """ - intervention = get_object_or_404(Intervention, id=id) - payment = get_object_or_404(Payment, id=payment_id) - form = EditPaymentModalForm(request.POST or None, instance=intervention, payment=payment, request=request) - return form.process_request( - request=request, - msg_success=PAYMENT_EDITED, - redirect_url=reverse("intervention:detail", args=(payment.intervention_id,)) + "#related_data" - ) +class EditPaymentView(BasePaymentView): + _MSG_SUCCESS = PAYMENT_EDITED + _FORM_CLS = EditPaymentModalForm +class RemovePaymentView(BasePaymentView): + _MSG_SUCCESS = PAYMENT_REMOVED + _FORM_CLS = RemovePaymentModalForm