# Deadline views refactored

* refactors AbstractDeadlineViews (new, edit, remove) to inherit from BaseModalFormView
* refactors KOM, OEK, EMA views for deadline views
This commit is contained in:
2025-10-21 09:04:57 +02:00
parent c7a4c309bf
commit 6056a8882d
6 changed files with 64 additions and 169 deletions

View File

@@ -5,102 +5,57 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
Created on: 22.08.22
"""
from django.shortcuts import get_object_or_404
from django.urls import reverse
from django.views import View
from django.contrib.auth.mixins import LoginRequiredMixin
from compensation.forms.modals.deadline import NewDeadlineModalForm, EditDeadlineModalForm
from konova.forms.modals import RemoveDeadlineModalForm
from konova.models import Deadline
from konova.utils.message_templates import DEADLINE_ADDED, DEADLINE_EDITED, DEADLINE_REMOVED
from konova.views.base import BaseModalFormView
class AbstractNewDeadlineView(View):
model = None
redirect_url = None
class AbstractNewDeadlineView(LoginRequiredMixin, BaseModalFormView):
_MODEL_CLS = None
_FORM_CLS = NewDeadlineModalForm
_REDIRECT_URL = None
_MSG_SUCCESS = DEADLINE_ADDED
class Meta:
abstract = True
def get(self, request, id: str):
""" Renders a form for adding new deadlines
def _get_redirect_url(self, *args, **kwargs):
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
Args:
request (HttpRequest): The incoming request
id (str): The account's id to which the new state will be related
Returns:
"""
obj = get_object_or_404(self.model, id=id)
form = NewDeadlineModalForm(request.POST or None, instance=obj, request=request)
return form.process_request(
request,
msg_success=DEADLINE_ADDED,
redirect_url=reverse(self.redirect_url, args=(id,)) + "#related_data"
)
def post(self, request, id: str):
return self.get(request, id)
def _user_has_permission(self, user):
return user.is_default_user()
class AbstractEditDeadlineView(View):
model = None
redirect_url = None
class AbstractEditDeadlineView(LoginRequiredMixin, BaseModalFormView):
_MODEL_CLS = None
_FORM_CLS = EditDeadlineModalForm
_REDIRECT_URL = None
_MSG_SUCCESS = DEADLINE_EDITED
class Meta:
abstract = True
def get(self, request, id: str, deadline_id: str):
""" Renders a form for editing deadlines
def _get_redirect_url(self, *args, **kwargs):
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
Args:
request (HttpRequest): The incoming request
id (str): The compensation's id
deadline_id (str): The deadline's id
Returns:
"""
obj = get_object_or_404(self.model, id=id)
deadline = get_object_or_404(Deadline, id=deadline_id)
form = EditDeadlineModalForm(request.POST or None, instance=obj, deadline=deadline, request=request)
return form.process_request(
request,
msg_success=DEADLINE_EDITED,
redirect_url=reverse(self.redirect_url, args=(id,)) + "#related_data"
)
def post(self, request, id: str, deadline_id: str):
return self.get(request, id, deadline_id)
def _user_has_permission(self, user):
return user.is_default_user()
class AbstractRemoveDeadlineView(View):
model = None
redirect_url = None
class AbstractRemoveDeadlineView(LoginRequiredMixin, BaseModalFormView):
_MODEL_CLS = None
_FORM_CLS = RemoveDeadlineModalForm
_REDIRECT_URL = None
_MSG_SUCCESS = DEADLINE_REMOVED
class Meta:
abstract = True
def get(self, request, id: str, deadline_id: str):
""" Renders a form for removing deadlines
def _get_redirect_url(self, *args, **kwargs):
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
Args:
request (HttpRequest): The incoming request
id (str): The compensation's id
deadline_id (str): The deadline's id
Returns:
"""
obj = get_object_or_404(self.model, id=id)
deadline = get_object_or_404(Deadline, id=deadline_id)
form = RemoveDeadlineModalForm(request.POST or None, instance=obj, deadline=deadline, request=request)
return form.process_request(
request,
msg_success=DEADLINE_REMOVED,
redirect_url=reverse(self.redirect_url, args=(id,)) + "#related_data"
)
def post(self, request, id: str, deadline_id: str):
return self.get(request, id, deadline_id)
def _user_has_permission(self, user):
return user.is_default_user()