Compare commits
No commits in common. "d5accb214359bea5afc2098de4071dcbdd607671" and "a7b23935a12af9e5d6f8a6627c7fb98c5892c01c" have entirely different histories.
d5accb2143
...
a7b23935a1
@ -7,12 +7,10 @@ Created on: 18.08.22
|
|||||||
"""
|
"""
|
||||||
from dal import autocomplete
|
from dal import autocomplete
|
||||||
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 codelist.models import KonovaCode
|
from codelist.models import KonovaCode
|
||||||
from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID
|
from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID
|
||||||
from compensation.models import CompensationAction
|
|
||||||
from intervention.inputs import CompensationActionTreeCheckboxSelectMultiple
|
from intervention.inputs import CompensationActionTreeCheckboxSelectMultiple
|
||||||
from konova.forms.modals import BaseModalForm, RemoveModalForm
|
from konova.forms.modals import BaseModalForm, RemoveModalForm
|
||||||
from konova.utils.message_templates import COMPENSATION_ACTION_EDITED, ADDED_COMPENSATION_ACTION
|
from konova.utils.message_templates import COMPENSATION_ACTION_EDITED, ADDED_COMPENSATION_ACTION
|
||||||
@ -116,8 +114,7 @@ class EditCompensationActionModalForm(NewCompensationActionModalForm):
|
|||||||
action = None
|
action = None
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
action_id = kwargs.pop("action_id", None)
|
self.action = kwargs.pop("action", None)
|
||||||
self.action = get_object_or_404(CompensationAction, id=action_id)
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.form_title = _("Edit action")
|
self.form_title = _("Edit action")
|
||||||
form_data = {
|
form_data = {
|
||||||
@ -150,8 +147,8 @@ class RemoveCompensationActionModalForm(RemoveModalForm):
|
|||||||
action = None
|
action = None
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
action_id = kwargs.pop("action_id", None)
|
action = kwargs.pop("action", None)
|
||||||
self.action = get_object_or_404(CompensationAction, id=action_id)
|
self.action = action
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
|||||||
@ -6,11 +6,10 @@ 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, Deadline
|
from konova.models import DeadlineType
|
||||||
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
|
||||||
|
|
||||||
@ -91,8 +90,7 @@ class EditDeadlineModalForm(NewDeadlineModalForm):
|
|||||||
deadline = None
|
deadline = None
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
deadline_id = kwargs.pop("deadline_id", None)
|
self.deadline = kwargs.pop("deadline", 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 = {
|
||||||
|
|||||||
@ -80,11 +80,7 @@ class EditCompensationActionModalFormTestCase(NewCompensationActionModalFormTest
|
|||||||
self.compensation.actions.add(self.comp_action)
|
self.compensation.actions.add(self.comp_action)
|
||||||
|
|
||||||
def test_init(self):
|
def test_init(self):
|
||||||
form = EditCompensationActionModalForm(
|
form = EditCompensationActionModalForm(request=self.request, instance=self.compensation, action=self.comp_action)
|
||||||
request=self.request,
|
|
||||||
instance=self.compensation,
|
|
||||||
action_id=self.comp_action.id
|
|
||||||
)
|
|
||||||
self.assertEqual(form.form_title, str(_("Edit action")))
|
self.assertEqual(form.form_title, str(_("Edit action")))
|
||||||
self.assertEqual(len(form.fields["action_type"].initial), self.comp_action.action_type.count())
|
self.assertEqual(len(form.fields["action_type"].initial), self.comp_action.action_type.count())
|
||||||
self.assertEqual(len(form.fields["action_type_details"].initial), self.comp_action.action_type_details.count())
|
self.assertEqual(len(form.fields["action_type_details"].initial), self.comp_action.action_type_details.count())
|
||||||
@ -105,7 +101,7 @@ class EditCompensationActionModalFormTestCase(NewCompensationActionModalFormTest
|
|||||||
"comment": comment,
|
"comment": comment,
|
||||||
}
|
}
|
||||||
|
|
||||||
form = EditCompensationActionModalForm(data, request=self.request, instance=self.compensation, action_id=self.comp_action.id)
|
form = EditCompensationActionModalForm(data, request=self.request, instance=self.compensation, action=self.comp_action)
|
||||||
|
|
||||||
self.assertTrue(form.is_valid())
|
self.assertTrue(form.is_valid())
|
||||||
action = form.save()
|
action = form.save()
|
||||||
@ -130,7 +126,7 @@ class RemoveCompensationActionModalFormTestCase(EditCompensationActionModalFormT
|
|||||||
|
|
||||||
def test_init(self):
|
def test_init(self):
|
||||||
self.assertIn(self.comp_action, self.compensation.actions.all())
|
self.assertIn(self.comp_action, self.compensation.actions.all())
|
||||||
form = RemoveCompensationActionModalForm(request=self.request, instance=self.compensation, action_id=self.comp_action.id)
|
form = RemoveCompensationActionModalForm(request=self.request, instance=self.compensation, action=self.comp_action)
|
||||||
self.assertEqual(form.action, self.comp_action)
|
self.assertEqual(form.action, self.comp_action)
|
||||||
|
|
||||||
def test_save(self):
|
def test_save(self):
|
||||||
@ -141,7 +137,7 @@ class RemoveCompensationActionModalFormTestCase(EditCompensationActionModalFormT
|
|||||||
data,
|
data,
|
||||||
request=self.request,
|
request=self.request,
|
||||||
instance=self.compensation,
|
instance=self.compensation,
|
||||||
action_id=self.comp_action.id
|
action=self.comp_action
|
||||||
)
|
)
|
||||||
self.assertTrue(form.is_valid())
|
self.assertTrue(form.is_valid())
|
||||||
self.assertIn(self.comp_action, self.compensation.actions.all())
|
self.assertIn(self.comp_action, self.compensation.actions.all())
|
||||||
|
|||||||
@ -36,7 +36,7 @@ class AbstractCompensationModelTestCase(BaseTestCase):
|
|||||||
data,
|
data,
|
||||||
request=self.request,
|
request=self.request,
|
||||||
instance=self.compensation,
|
instance=self.compensation,
|
||||||
deadline_id=self.finished_deadline.id,
|
deadline=self.finished_deadline,
|
||||||
)
|
)
|
||||||
self.assertTrue(form.is_valid(), msg=form.errors)
|
self.assertTrue(form.is_valid(), msg=form.errors)
|
||||||
self.assertIn(self.finished_deadline, self.compensation.deadlines.all())
|
self.assertIn(self.finished_deadline, self.compensation.deadlines.all())
|
||||||
|
|||||||
@ -5,23 +5,53 @@ 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.http import HttpRequest
|
||||||
|
from django.shortcuts import get_object_or_404
|
||||||
|
from django.urls import reverse
|
||||||
|
from django.utils.decorators import method_decorator
|
||||||
|
|
||||||
from compensation.models import Compensation
|
from compensation.forms.modals.compensation_action import RemoveCompensationActionModalForm, \
|
||||||
|
EditCompensationActionModalForm, NewCompensationActionModalForm
|
||||||
|
from compensation.models import Compensation, CompensationAction
|
||||||
|
from konova.decorators import shared_access_required, default_group_required, login_required_modal
|
||||||
|
from konova.utils.message_templates import COMPENSATION_ACTION_REMOVED, COMPENSATION_ACTION_EDITED, \
|
||||||
|
COMPENSATION_ACTION_ADDED
|
||||||
from konova.views.action import AbstractNewCompensationActionView, AbstractEditCompensationActionView, \
|
from konova.views.action import AbstractNewCompensationActionView, AbstractEditCompensationActionView, \
|
||||||
AbstractRemoveCompensationActionView
|
AbstractRemoveCompensationActionView
|
||||||
|
|
||||||
_COMPENSATION_DETAIL_URL_NAME = "compensation:detail"
|
|
||||||
|
|
||||||
class NewCompensationActionView(AbstractNewCompensationActionView):
|
class NewCompensationActionView(AbstractNewCompensationActionView):
|
||||||
_MODEL_CLS = Compensation
|
model = Compensation
|
||||||
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
redirect_url = "compensation:detail"
|
||||||
|
|
||||||
|
@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 EditCompensationActionView(AbstractEditCompensationActionView):
|
class EditCompensationActionView(AbstractEditCompensationActionView):
|
||||||
_MODEL_CLS = Compensation
|
model = Compensation
|
||||||
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
redirect_url = "compensation:detail"
|
||||||
|
|
||||||
|
@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 RemoveCompensationActionView(AbstractRemoveCompensationActionView):
|
class RemoveCompensationActionView(AbstractRemoveCompensationActionView):
|
||||||
_MODEL_CLS = Compensation
|
model = Compensation
|
||||||
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
redirect_url = "compensation:detail"
|
||||||
|
|
||||||
|
@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,21 +5,45 @@ 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_CLS = Compensation
|
model = Compensation
|
||||||
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
redirect_url = "compensation:detail"
|
||||||
|
|
||||||
|
@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_CLS = Compensation
|
model = Compensation
|
||||||
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
redirect_url = "compensation:detail"
|
||||||
|
|
||||||
|
@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_CLS = Compensation
|
model = Compensation
|
||||||
_REDIRECT_URL = _COMPENSATION_DETAIL_URL_NAME
|
redirect_url = "compensation:detail"
|
||||||
|
|
||||||
|
@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,22 +5,46 @@ 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.action import AbstractNewCompensationActionView, AbstractEditCompensationActionView, \
|
from konova.views.action import AbstractNewCompensationActionView, AbstractEditCompensationActionView, \
|
||||||
AbstractRemoveCompensationActionView
|
AbstractRemoveCompensationActionView
|
||||||
|
|
||||||
_ECO_ACCOUNT_DETAIL_URL_NAME = "compensation:acc:detail"
|
|
||||||
|
|
||||||
class NewEcoAccountActionView(AbstractNewCompensationActionView):
|
class NewEcoAccountActionView(AbstractNewCompensationActionView):
|
||||||
_MODEL_CLS = EcoAccount
|
model = EcoAccount
|
||||||
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "compensation:acc:detail"
|
||||||
|
|
||||||
|
@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 EditEcoAccountActionView(AbstractEditCompensationActionView):
|
class EditEcoAccountActionView(AbstractEditCompensationActionView):
|
||||||
_MODEL_CLS = EcoAccount
|
model = EcoAccount
|
||||||
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "compensation:acc:detail"
|
||||||
|
|
||||||
|
@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 RemoveEcoAccountActionView(AbstractRemoveCompensationActionView):
|
class RemoveEcoAccountActionView(AbstractRemoveCompensationActionView):
|
||||||
_MODEL_CLS = EcoAccount
|
model = EcoAccount
|
||||||
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "compensation:acc:detail"
|
||||||
|
|
||||||
|
@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,22 +5,45 @@ 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_CLS = EcoAccount
|
model = EcoAccount
|
||||||
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "compensation:acc:detail"
|
||||||
|
|
||||||
|
@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_CLS = EcoAccount
|
model = EcoAccount
|
||||||
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "compensation:acc:detail"
|
||||||
|
|
||||||
|
@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_CLS = EcoAccount
|
model = EcoAccount
|
||||||
_REDIRECT_URL = _ECO_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "compensation:acc:detail"
|
||||||
|
|
||||||
|
@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,31 +5,46 @@ 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.action import AbstractNewCompensationActionView, AbstractEditCompensationActionView, \
|
from konova.views.action import AbstractNewCompensationActionView, AbstractEditCompensationActionView, \
|
||||||
AbstractRemoveCompensationActionView
|
AbstractRemoveCompensationActionView
|
||||||
|
|
||||||
_EMA_ACCOUNT_DETAIL_URL_NAME = "ema:detail"
|
|
||||||
|
|
||||||
class NewEmaActionView(AbstractNewCompensationActionView):
|
class NewEmaActionView(AbstractNewCompensationActionView):
|
||||||
_MODEL_CLS = Ema
|
model = Ema
|
||||||
_REDIRECT_URL = _EMA_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "ema:detail"
|
||||||
|
|
||||||
|
@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()
|
|
||||||
|
|
||||||
class EditEmaActionView(AbstractEditCompensationActionView):
|
class EditEmaActionView(AbstractEditCompensationActionView):
|
||||||
_MODEL_CLS = Ema
|
model = Ema
|
||||||
_REDIRECT_URL = _EMA_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "ema:detail"
|
||||||
|
|
||||||
def _user_has_permission(self, user):
|
@method_decorator(login_required_modal)
|
||||||
return user.is_ets_user()
|
@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)
|
||||||
|
|
||||||
|
|
||||||
class RemoveEmaActionView(AbstractRemoveCompensationActionView):
|
class RemoveEmaActionView(AbstractRemoveCompensationActionView):
|
||||||
_MODEL_CLS = Ema
|
model = Ema
|
||||||
_REDIRECT_URL = _EMA_ACCOUNT_DETAIL_URL_NAME
|
redirect_url = "ema:detail"
|
||||||
|
|
||||||
def _user_has_permission(self, user):
|
@method_decorator(login_required_modal)
|
||||||
return user.is_ets_user()
|
@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)
|
||||||
|
|||||||
@ -5,30 +5,46 @@ 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_CLS = Ema
|
model = Ema
|
||||||
_REDIRECT_URL = _EMA_DETAIL_URL_NAME
|
redirect_url = "ema:detail"
|
||||||
|
|
||||||
def _user_has_permission(self, user):
|
@method_decorator(login_required_modal)
|
||||||
return user.is_ets_user()
|
@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)
|
||||||
|
|
||||||
|
|
||||||
class EditEmaDeadlineView(AbstractEditDeadlineView):
|
class EditEmaDeadlineView(AbstractEditDeadlineView):
|
||||||
_MODEL_CLS = Ema
|
model = Ema
|
||||||
_REDIRECT_URL = _EMA_DETAIL_URL_NAME
|
redirect_url = "ema:detail"
|
||||||
|
|
||||||
def _user_has_permission(self, user):
|
@method_decorator(login_required_modal)
|
||||||
return user.is_ets_user()
|
@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)
|
||||||
|
|
||||||
|
|
||||||
class RemoveEmaDeadlineView(AbstractRemoveDeadlineView):
|
class RemoveEmaDeadlineView(AbstractRemoveDeadlineView):
|
||||||
_MODEL_CLS = Ema
|
model = Ema
|
||||||
_REDIRECT_URL = _EMA_DETAIL_URL_NAME
|
redirect_url = "ema:detail"
|
||||||
|
|
||||||
|
@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,11 +6,10 @@ 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, Deadline
|
from konova.models import BaseObject
|
||||||
|
|
||||||
|
|
||||||
class RemoveModalForm(BaseModalForm):
|
class RemoveModalForm(BaseModalForm):
|
||||||
@ -52,8 +51,8 @@ class RemoveDeadlineModalForm(RemoveModalForm):
|
|||||||
deadline = None
|
deadline = None
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
deadline_id = kwargs.pop("deadline_id", None)
|
deadline = kwargs.pop("deadline", None)
|
||||||
self.deadline = get_object_or_404(Deadline, id=deadline_id)
|
self.deadline = deadline
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
|||||||
@ -103,7 +103,7 @@ class EditDeadlineModalFormTestCase(NewDeadlineModalFormTestCase):
|
|||||||
data,
|
data,
|
||||||
request=self.request,
|
request=self.request,
|
||||||
instance=self.compensation,
|
instance=self.compensation,
|
||||||
deadline_id=self.finished_deadline.id,
|
deadline=self.finished_deadline,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertTrue(form.is_valid(), msg=form.errors)
|
self.assertTrue(form.is_valid(), msg=form.errors)
|
||||||
|
|||||||
@ -256,7 +256,7 @@ class RemoveDeadlineTestCase(BaseTestCase):
|
|||||||
form = RemoveDeadlineModalForm(
|
form = RemoveDeadlineModalForm(
|
||||||
request=self.request,
|
request=self.request,
|
||||||
instance=self.compensation,
|
instance=self.compensation,
|
||||||
deadline_id=self.finished_deadline.id
|
deadline=self.finished_deadline
|
||||||
)
|
)
|
||||||
self.assertEqual(form.form_title, str(_("Remove")))
|
self.assertEqual(form.form_title, str(_("Remove")))
|
||||||
self.assertEqual(form.form_caption, str(_("Are you sure?")))
|
self.assertEqual(form.form_caption, str(_("Are you sure?")))
|
||||||
@ -273,7 +273,7 @@ class RemoveDeadlineTestCase(BaseTestCase):
|
|||||||
data,
|
data,
|
||||||
request=self.request,
|
request=self.request,
|
||||||
instance=self.compensation,
|
instance=self.compensation,
|
||||||
deadline_id=self.finished_deadline.id
|
deadline=self.finished_deadline
|
||||||
)
|
)
|
||||||
self.assertTrue(form.is_valid(), msg=form.errors)
|
self.assertTrue(form.is_valid(), msg=form.errors)
|
||||||
form.save()
|
form.save()
|
||||||
|
|||||||
@ -19,11 +19,7 @@ IDENTIFIER_REPLACED = _("The identifier '{}' had to be changed to '{}' since ano
|
|||||||
ENTRY_REMOVE_MISSING_PERMISSION = _("Only conservation or registration office users are allowed to remove entries.")
|
ENTRY_REMOVE_MISSING_PERMISSION = _("Only conservation or registration office users are allowed to remove entries.")
|
||||||
MISSING_GROUP_PERMISSION = _("You need to be part of another user group.")
|
MISSING_GROUP_PERMISSION = _("You need to be part of another user group.")
|
||||||
CHECK_STATE_RESET = _("Status of Checked reset")
|
CHECK_STATE_RESET = _("Status of Checked reset")
|
||||||
|
|
||||||
# RECORDING
|
|
||||||
RECORDED_BLOCKS_EDIT = _("Entry is recorded. To edit data, the entry first needs to be unrecorded.")
|
RECORDED_BLOCKS_EDIT = _("Entry is recorded. To edit data, the entry first needs to be unrecorded.")
|
||||||
ENTRY_RECORDED = _("{} recorded")
|
|
||||||
ENTRY_UNRECORDED = _("{} unrecorded")
|
|
||||||
|
|
||||||
# SHARE
|
# SHARE
|
||||||
DATA_UNSHARED = _("This data is not shared with you")
|
DATA_UNSHARED = _("This data is not shared with you")
|
||||||
|
|||||||
@ -5,47 +5,104 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
|
|||||||
Created on: 22.08.22
|
Created on: 22.08.22
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.shortcuts import get_object_or_404
|
||||||
|
from django.urls import reverse
|
||||||
|
from django.views import View
|
||||||
|
|
||||||
from compensation.forms.modals.compensation_action import NewCompensationActionModalForm, \
|
from compensation.forms.modals.compensation_action import NewCompensationActionModalForm, \
|
||||||
EditCompensationActionModalForm, RemoveCompensationActionModalForm
|
EditCompensationActionModalForm, RemoveCompensationActionModalForm
|
||||||
|
from compensation.models import CompensationAction
|
||||||
from konova.utils.message_templates import COMPENSATION_STATE_ADDED, COMPENSATION_STATE_EDITED, \
|
from konova.utils.message_templates import COMPENSATION_STATE_ADDED, COMPENSATION_STATE_EDITED, \
|
||||||
COMPENSATION_STATE_REMOVED
|
COMPENSATION_STATE_REMOVED
|
||||||
from konova.views.base import BaseModalFormView
|
|
||||||
|
|
||||||
|
|
||||||
class AbstractCompensationActionView(LoginRequiredMixin, BaseModalFormView):
|
class AbstractCompensationActionView(View):
|
||||||
_MODEL_CLS = None
|
model = None
|
||||||
_REDIRECT_URL = None
|
redirect_url = None
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def _user_has_permission(self, user):
|
|
||||||
return user.is_default_user()
|
|
||||||
|
|
||||||
def _get_redirect_url(self, *args, **kwargs):
|
|
||||||
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
|
|
||||||
|
|
||||||
class AbstractNewCompensationActionView(AbstractCompensationActionView):
|
class AbstractNewCompensationActionView(AbstractCompensationActionView):
|
||||||
_FORM_CLS = NewCompensationActionModalForm
|
|
||||||
_MSG_SUCCESS = COMPENSATION_STATE_ADDED
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
def get(self, request, id: str):
|
||||||
|
""" Renders a form for adding new actions
|
||||||
|
|
||||||
|
Args:
|
||||||
|
request (HttpRequest): The incoming request
|
||||||
|
id (str): The object's id to which the new action will be related
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
"""
|
||||||
|
obj = get_object_or_404(self.model, id=id)
|
||||||
|
form = NewCompensationActionModalForm(request.POST or None, instance=obj, request=request)
|
||||||
|
return form.process_request(
|
||||||
|
request,
|
||||||
|
msg_success=COMPENSATION_STATE_ADDED,
|
||||||
|
redirect_url=reverse(self.redirect_url, args=(id,)) + "#related_data"
|
||||||
|
)
|
||||||
|
|
||||||
|
def post(self, request, id: str):
|
||||||
|
return self.get(request, id)
|
||||||
|
|
||||||
|
|
||||||
class AbstractEditCompensationActionView(AbstractCompensationActionView):
|
class AbstractEditCompensationActionView(AbstractCompensationActionView):
|
||||||
_FORM_CLS = EditCompensationActionModalForm
|
|
||||||
_MSG_SUCCESS = COMPENSATION_STATE_EDITED
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
def get(self, request, id: str, action_id: str):
|
||||||
|
""" Renders a form for editing a action
|
||||||
|
|
||||||
|
Args:
|
||||||
|
request (HttpRequest): The incoming request
|
||||||
|
id (str): The object id
|
||||||
|
action_id (str): The action's id
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
"""
|
||||||
|
obj = get_object_or_404(self.model, id=id)
|
||||||
|
action = get_object_or_404(CompensationAction, id=action_id)
|
||||||
|
form = EditCompensationActionModalForm(request.POST or None, instance=obj, action=action, request=request)
|
||||||
|
return form.process_request(
|
||||||
|
request,
|
||||||
|
msg_success=COMPENSATION_STATE_EDITED,
|
||||||
|
redirect_url=reverse(self.redirect_url, args=(id,)) + "#related_data"
|
||||||
|
)
|
||||||
|
|
||||||
|
def post(self, request, id: str, action_id: str):
|
||||||
|
return self.get(request, id, action_id)
|
||||||
|
|
||||||
|
|
||||||
class AbstractRemoveCompensationActionView(AbstractCompensationActionView):
|
class AbstractRemoveCompensationActionView(AbstractCompensationActionView):
|
||||||
_FORM_CLS = RemoveCompensationActionModalForm
|
|
||||||
_MSG_SUCCESS = COMPENSATION_STATE_REMOVED
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
def get(self, request, id: str, action_id: str):
|
||||||
|
""" Renders a form for removing aaction
|
||||||
|
|
||||||
|
Args:
|
||||||
|
request (HttpRequest): The incoming request
|
||||||
|
id (str): The object id
|
||||||
|
action_id (str): The action's id
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
"""
|
||||||
|
obj = get_object_or_404(self.model, id=id)
|
||||||
|
action = get_object_or_404(CompensationAction, id=action_id)
|
||||||
|
form = RemoveCompensationActionModalForm(request.POST or None, instance=obj, action=action, request=request)
|
||||||
|
return form.process_request(
|
||||||
|
request,
|
||||||
|
msg_success=COMPENSATION_STATE_REMOVED,
|
||||||
|
redirect_url=reverse(self.redirect_url, args=(id,)) + "#related_data"
|
||||||
|
)
|
||||||
|
|
||||||
|
def post(self, request, id: str, action_id: str):
|
||||||
|
return self.get(request, id, action_id)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -5,57 +5,102 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
|
|||||||
Created on: 22.08.22
|
Created on: 22.08.22
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.shortcuts import get_object_or_404
|
||||||
|
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(LoginRequiredMixin, BaseModalFormView):
|
class AbstractNewDeadlineView(View):
|
||||||
_MODEL_CLS = None
|
model = None
|
||||||
_FORM_CLS = NewDeadlineModalForm
|
redirect_url = None
|
||||||
_REDIRECT_URL = None
|
|
||||||
_MSG_SUCCESS = DEADLINE_ADDED
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def _get_redirect_url(self, *args, **kwargs):
|
def get(self, request, id: str):
|
||||||
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
|
""" Renders a form for adding new deadlines
|
||||||
|
|
||||||
def _user_has_permission(self, user):
|
Args:
|
||||||
return user.is_default_user()
|
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)
|
||||||
|
|
||||||
|
|
||||||
class AbstractEditDeadlineView(LoginRequiredMixin, BaseModalFormView):
|
class AbstractEditDeadlineView(View):
|
||||||
_MODEL_CLS = None
|
model = None
|
||||||
_FORM_CLS = EditDeadlineModalForm
|
redirect_url = None
|
||||||
_REDIRECT_URL = None
|
|
||||||
_MSG_SUCCESS = DEADLINE_EDITED
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def _get_redirect_url(self, *args, **kwargs):
|
def get(self, request, id: str, deadline_id: str):
|
||||||
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
|
""" Renders a form for editing deadlines
|
||||||
|
|
||||||
def _user_has_permission(self, user):
|
Args:
|
||||||
return user.is_default_user()
|
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)
|
||||||
|
|
||||||
|
|
||||||
class AbstractRemoveDeadlineView(LoginRequiredMixin, BaseModalFormView):
|
class AbstractRemoveDeadlineView(View):
|
||||||
_MODEL_CLS = None
|
model = None
|
||||||
_FORM_CLS = RemoveDeadlineModalForm
|
redirect_url = None
|
||||||
_REDIRECT_URL = None
|
|
||||||
_MSG_SUCCESS = DEADLINE_REMOVED
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def _get_redirect_url(self, *args, **kwargs):
|
def get(self, request, id: str, deadline_id: str):
|
||||||
return super()._get_redirect_url(*args, **kwargs) + "#related_data"
|
""" Renders a form for removing deadlines
|
||||||
|
|
||||||
def _user_has_permission(self, user):
|
Args:
|
||||||
return user.is_default_user()
|
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)
|
||||||
|
|||||||
@ -5,8 +5,9 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
|
|||||||
Created on: 19.08.22
|
Created on: 19.08.22
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from konova.forms.modals import RecordModalForm
|
from konova.forms.modals import RecordModalForm
|
||||||
from konova.utils.message_templates import ENTRY_RECORDED, ENTRY_UNRECORDED
|
|
||||||
from konova.views.base import BaseModalFormView
|
from konova.views.base import BaseModalFormView
|
||||||
|
|
||||||
|
|
||||||
@ -23,6 +24,6 @@ class AbstractRecordView(BaseModalFormView):
|
|||||||
assert obj is not None
|
assert obj is not None
|
||||||
|
|
||||||
if obj.is_recorded:
|
if obj.is_recorded:
|
||||||
return ENTRY_RECORDED.format(obj.identifier)
|
return _("{} recorded").format(obj.identifier)
|
||||||
else:
|
else:
|
||||||
return ENTRY_UNRECORDED.format(obj.identifier)
|
return _("{} unrecorded").format(obj.identifier)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user