# 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:
parent
c7a4c309bf
commit
6056a8882d
@ -6,10 +6,11 @@ Created on: 18.08.22
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.shortcuts import get_object_or_404
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from konova.forms.modals import BaseModalForm
|
from konova.forms.modals import BaseModalForm
|
||||||
from konova.models import DeadlineType
|
from konova.models import DeadlineType, Deadline
|
||||||
from konova.utils import validators
|
from konova.utils import validators
|
||||||
from konova.utils.message_templates import DEADLINE_EDITED
|
from konova.utils.message_templates import DEADLINE_EDITED
|
||||||
|
|
||||||
@ -90,7 +91,8 @@ class EditDeadlineModalForm(NewDeadlineModalForm):
|
|||||||
deadline = None
|
deadline = None
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.deadline = kwargs.pop("deadline", None)
|
deadline_id = kwargs.pop("deadline_id", None)
|
||||||
|
self.deadline = get_object_or_404(Deadline, id=deadline_id)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.form_title = _("Edit deadline")
|
self.form_title = _("Edit deadline")
|
||||||
form_data = {
|
form_data = {
|
||||||
|
|||||||
@ -5,45 +5,21 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
|
|||||||
Created on: 19.08.22
|
Created on: 19.08.22
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.utils.decorators import method_decorator
|
|
||||||
|
|
||||||
from compensation.models import Compensation
|
from compensation.models import Compensation
|
||||||
from konova.decorators import shared_access_required, default_group_required, login_required_modal
|
|
||||||
from konova.views.deadline import AbstractRemoveDeadlineView, AbstractEditDeadlineView, AbstractNewDeadlineView
|
from konova.views.deadline import AbstractRemoveDeadlineView, AbstractEditDeadlineView, AbstractNewDeadlineView
|
||||||
|
|
||||||
|
_COMPENSATION_DETAIL_URL_NAME = "compensation:detail"
|
||||||
|
|
||||||
class NewCompensationDeadlineView(AbstractNewDeadlineView):
|
class NewCompensationDeadlineView(AbstractNewDeadlineView):
|
||||||
model = Compensation
|
_MODEL_CLS = Compensation
|
||||||
redirect_url = "compensation:detail"
|
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
||||||
|
|
||||||
@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 EditCompensationDeadlineView(AbstractEditDeadlineView):
|
class EditCompensationDeadlineView(AbstractEditDeadlineView):
|
||||||
model = Compensation
|
_MODEL_CLS = Compensation
|
||||||
redirect_url = "compensation:detail"
|
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
||||||
|
|
||||||
@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 RemoveCompensationDeadlineView(AbstractRemoveDeadlineView):
|
class RemoveCompensationDeadlineView(AbstractRemoveDeadlineView):
|
||||||
model = Compensation
|
_MODEL_CLS = Compensation
|
||||||
redirect_url = "compensation:detail"
|
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
||||||
|
|
||||||
@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)
|
|
||||||
|
|||||||
@ -5,45 +5,22 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
|
|||||||
Created on: 19.08.22
|
Created on: 19.08.22
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.utils.decorators import method_decorator
|
|
||||||
|
|
||||||
from compensation.models import EcoAccount
|
from compensation.models import EcoAccount
|
||||||
from konova.decorators import shared_access_required, default_group_required, login_required_modal
|
|
||||||
from konova.views.deadline import AbstractNewDeadlineView, AbstractEditDeadlineView, AbstractRemoveDeadlineView
|
from konova.views.deadline import AbstractNewDeadlineView, AbstractEditDeadlineView, AbstractRemoveDeadlineView
|
||||||
|
|
||||||
|
_ECO_ACCOUNT_DETAIL_URL_NAME = "compensation:acc:detail"
|
||||||
|
|
||||||
class NewEcoAccountDeadlineView(AbstractNewDeadlineView):
|
class NewEcoAccountDeadlineView(AbstractNewDeadlineView):
|
||||||
model = EcoAccount
|
_MODEL_CLS = EcoAccount
|
||||||
redirect_url = "compensation:acc:detail"
|
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
||||||
|
|
||||||
@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 EditEcoAccountDeadlineView(AbstractEditDeadlineView):
|
class EditEcoAccountDeadlineView(AbstractEditDeadlineView):
|
||||||
model = EcoAccount
|
_MODEL_CLS = EcoAccount
|
||||||
redirect_url = "compensation:acc:detail"
|
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
||||||
|
|
||||||
@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 RemoveEcoAccountDeadlineView(AbstractRemoveDeadlineView):
|
class RemoveEcoAccountDeadlineView(AbstractRemoveDeadlineView):
|
||||||
model = EcoAccount
|
_MODEL_CLS = EcoAccount
|
||||||
redirect_url = "compensation:acc:detail"
|
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
||||||
|
|
||||||
@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)
|
|
||||||
|
|||||||
@ -5,46 +5,30 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
|
|||||||
Created on: 19.08.22
|
Created on: 19.08.22
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.utils.decorators import method_decorator
|
|
||||||
|
|
||||||
from ema.models import Ema
|
from ema.models import Ema
|
||||||
from konova.decorators import shared_access_required, conservation_office_group_required, login_required_modal
|
|
||||||
from konova.views.deadline import AbstractNewDeadlineView, AbstractRemoveDeadlineView, AbstractEditDeadlineView
|
from konova.views.deadline import AbstractNewDeadlineView, AbstractRemoveDeadlineView, AbstractEditDeadlineView
|
||||||
|
|
||||||
|
_EMA_DETAIL_URL_NAME = "ema:detail"
|
||||||
|
|
||||||
class NewEmaDeadlineView(AbstractNewDeadlineView):
|
class NewEmaDeadlineView(AbstractNewDeadlineView):
|
||||||
model = Ema
|
_MODEL_CLS = Ema
|
||||||
redirect_url = "ema:detail"
|
_REDIRECT_URL = _EMA_DETAIL_URL_NAME
|
||||||
|
|
||||||
@method_decorator(login_required_modal)
|
def _user_has_permission(self, user):
|
||||||
@method_decorator(login_required)
|
return user.is_ets_user()
|
||||||
@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)
|
|
||||||
|
|
||||||
|
|
||||||
class EditEmaDeadlineView(AbstractEditDeadlineView):
|
class EditEmaDeadlineView(AbstractEditDeadlineView):
|
||||||
model = Ema
|
_MODEL_CLS = Ema
|
||||||
redirect_url = "ema:detail"
|
_REDIRECT_URL = _EMA_DETAIL_URL_NAME
|
||||||
|
|
||||||
@method_decorator(login_required_modal)
|
def _user_has_permission(self, user):
|
||||||
@method_decorator(login_required)
|
return user.is_ets_user()
|
||||||
@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)
|
|
||||||
|
|
||||||
|
|
||||||
class RemoveEmaDeadlineView(AbstractRemoveDeadlineView):
|
class RemoveEmaDeadlineView(AbstractRemoveDeadlineView):
|
||||||
model = Ema
|
_MODEL_CLS = Ema
|
||||||
redirect_url = "ema:detail"
|
_REDIRECT_URL = _EMA_DETAIL_URL_NAME
|
||||||
|
|
||||||
@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()
|
||||||
|
|||||||
@ -6,10 +6,11 @@ Created on: 15.08.22
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.shortcuts import get_object_or_404
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from konova.forms.modals.base_form import BaseModalForm
|
from konova.forms.modals.base_form import BaseModalForm
|
||||||
from konova.models import BaseObject
|
from konova.models import BaseObject, Deadline
|
||||||
|
|
||||||
|
|
||||||
class RemoveModalForm(BaseModalForm):
|
class RemoveModalForm(BaseModalForm):
|
||||||
@ -51,8 +52,8 @@ class RemoveDeadlineModalForm(RemoveModalForm):
|
|||||||
deadline = None
|
deadline = None
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
deadline = kwargs.pop("deadline", None)
|
deadline_id = kwargs.pop("deadline_id", None)
|
||||||
self.deadline = deadline
|
self.deadline = get_object_or_404(Deadline, id=deadline_id)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
|||||||
@ -5,102 +5,57 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
|
|||||||
Created on: 22.08.22
|
Created on: 22.08.22
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from django.shortcuts import get_object_or_404
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.urls import reverse
|
|
||||||
from django.views import View
|
|
||||||
|
|
||||||
from compensation.forms.modals.deadline import NewDeadlineModalForm, EditDeadlineModalForm
|
from compensation.forms.modals.deadline import NewDeadlineModalForm, EditDeadlineModalForm
|
||||||
from konova.forms.modals import RemoveDeadlineModalForm
|
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.utils.message_templates import DEADLINE_ADDED, DEADLINE_EDITED, DEADLINE_REMOVED
|
||||||
|
from konova.views.base import BaseModalFormView
|
||||||
|
|
||||||
|
|
||||||
class AbstractNewDeadlineView(View):
|
class AbstractNewDeadlineView(LoginRequiredMixin, BaseModalFormView):
|
||||||
model = None
|
_MODEL_CLS = None
|
||||||
redirect_url = None
|
_FORM_CLS = NewDeadlineModalForm
|
||||||
|
_REDIRECT_URL = None
|
||||||
|
_MSG_SUCCESS = DEADLINE_ADDED
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def get(self, request, id: str):
|
def _get_redirect_url(self, *args, **kwargs):
|
||||||
""" Renders a form for adding new deadlines
|
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
|
||||||
|
|
||||||
Args:
|
def _user_has_permission(self, user):
|
||||||
request (HttpRequest): The incoming request
|
return user.is_default_user()
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
class AbstractEditDeadlineView(View):
|
class AbstractEditDeadlineView(LoginRequiredMixin, BaseModalFormView):
|
||||||
model = None
|
_MODEL_CLS = None
|
||||||
redirect_url = None
|
_FORM_CLS = EditDeadlineModalForm
|
||||||
|
_REDIRECT_URL = None
|
||||||
|
_MSG_SUCCESS = DEADLINE_EDITED
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def get(self, request, id: str, deadline_id: str):
|
def _get_redirect_url(self, *args, **kwargs):
|
||||||
""" Renders a form for editing deadlines
|
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
|
||||||
|
|
||||||
Args:
|
def _user_has_permission(self, user):
|
||||||
request (HttpRequest): The incoming request
|
return user.is_default_user()
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
class AbstractRemoveDeadlineView(View):
|
class AbstractRemoveDeadlineView(LoginRequiredMixin, BaseModalFormView):
|
||||||
model = None
|
_MODEL_CLS = None
|
||||||
redirect_url = None
|
_FORM_CLS = RemoveDeadlineModalForm
|
||||||
|
_REDIRECT_URL = None
|
||||||
|
_MSG_SUCCESS = DEADLINE_REMOVED
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def get(self, request, id: str, deadline_id: str):
|
def _get_redirect_url(self, *args, **kwargs):
|
||||||
""" Renders a form for removing deadlines
|
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
|
||||||
|
|
||||||
Args:
|
def _user_has_permission(self, user):
|
||||||
request (HttpRequest): The incoming request
|
return user.is_default_user()
|
||||||
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)
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user