Refactors triggering checked/recorded

* refactors BaseForm request/user initialization
* introduces mark_as_edited() method for compensation models
This commit is contained in:
2021-11-17 14:33:05 +01:00
parent 4583a9f826
commit 122c9cb363
18 changed files with 328 additions and 308 deletions

View File

@@ -18,6 +18,7 @@ from compensation.models import Compensation, EcoAccount
from intervention.inputs import GenerateInput
from intervention.models import Intervention, Responsibility, Legal
from konova.forms import BaseForm, SimpleGeomForm
from konova.utils.message_templates import EDITED_GENERAL_DATA
from user.models import UserActionLogEntry
@@ -285,7 +286,7 @@ class EditCompensationForm(NewCompensationForm):
self.instance.log.add(action)
intervention.mark_as_edited(user)
intervention.mark_as_edited(user, self.request, EDITED_GENERAL_DATA)
return self.instance

View File

@@ -19,7 +19,8 @@ from compensation.models import CompensationDocument, EcoAccountDocument
from konova.contexts import BaseContext
from konova.forms import BaseModalForm, NewDocumentForm
from konova.models import DeadlineType
from konova.utils.message_templates import FORM_INVALID
from konova.utils.message_templates import FORM_INVALID, ADDED_COMPENSATION_STATE, ADDED_DEADLINE, \
ADDED_COMPENSATION_ACTION
class NewPaymentForm(BaseModalForm):
@@ -98,6 +99,7 @@ class NewPaymentForm(BaseModalForm):
def save(self):
pay = self.instance.add_payment(self)
self.instance.mark_as_edited(self.user, self.request)
return pay
@@ -147,6 +149,7 @@ class NewStateModalForm(BaseModalForm):
def save(self, is_before_state: bool = False):
state = self.instance.add_state(self, is_before_state)
self.instance.mark_as_edited(self.user, self.request, ADDED_COMPENSATION_STATE)
return state
def process_request(self, request: HttpRequest, msg_success: str = _("Object removed"), msg_error: str = FORM_INVALID, redirect_url: str = None):
@@ -249,7 +252,8 @@ class NewDeadlineModalForm(BaseModalForm):
self.form_caption = _("Insert data for the new deadline")
def save(self):
deadline = self.instance.add_new_deadline(self)
deadline = self.instance.add_deadline(self)
self.instance.mark_as_edited(self.user, self.request, ADDED_DEADLINE)
return deadline
@@ -325,7 +329,8 @@ class NewActionModalForm(BaseModalForm):
self.form_caption = _("Insert data for the new action")
def save(self):
action = self.instance.add_new_action(self)
action = self.instance.add_action(self)
self.instance.mark_as_edited(self.user, self.request, ADDED_COMPENSATION_ACTION)
return action

View File

@@ -10,6 +10,7 @@ import shutil
from django.contrib.auth.models import User
from django.db import models, transaction
from django.db.models import QuerySet, Sum
from django.http import HttpRequest
from django.utils.translation import gettext_lazy as _
from compensation.managers import CompensationManager
@@ -45,7 +46,7 @@ class AbstractCompensation(BaseObject):
class Meta:
abstract = True
def add_new_deadline(self, form) -> Deadline:
def add_deadline(self, form) -> Deadline:
""" Adds a new deadline to the abstract compensation
Args:
@@ -73,7 +74,7 @@ class AbstractCompensation(BaseObject):
self.deadlines.add(deadline)
return deadline
def add_new_action(self, form) -> CompensationAction:
def add_action(self, form) -> CompensationAction:
""" Adds a new action to the compensation
Args:
@@ -86,8 +87,6 @@ class AbstractCompensation(BaseObject):
user = form.user
with transaction.atomic():
user_action = UserActionLogEntry.get_created_action(user)
edited_action = UserActionLogEntry.get_edited_action(user, _("Added action"))
comp_action = CompensationAction.objects.create(
action_type=form_data["action_type"],
amount=form_data["amount"],
@@ -95,9 +94,6 @@ class AbstractCompensation(BaseObject):
comment=form_data["comment"],
created=user_action,
)
self.modified = edited_action
self.save()
self.log.add(edited_action)
self.actions.add(comp_action)
return comp_action
@@ -112,13 +108,7 @@ class AbstractCompensation(BaseObject):
"""
form_data = form.cleaned_data
user = form.user
with transaction.atomic():
user_action = UserActionLogEntry.get_edited_action(user, _("Added state"))
self.log.add(user_action)
self.modified = user_action
self.save()
state = CompensationState.objects.create(
biotope_type=form_data["biotope_type"],
surface=form_data["surface"],
@@ -271,9 +261,17 @@ class Compensation(AbstractCompensation, CEFMixin, CoherenceMixin):
)
return docs
def add_new_action(self, form) -> CompensationAction:
super().add_new_action(form)
self.intervention.set_as_edited(form.user)
def mark_as_edited(self, user: User, request: HttpRequest = None, edit_comment: str = None):
""" Performs internal logic for setting the recordedd/checked state of the related intervention
Args:
user (User): The performing user
request (HttpRequest): The performing request
Returns:
"""
self.intervention.mark_as_edited(user, request, edit_comment)
class CompensationDocument(AbstractDocument):

View File

@@ -246,7 +246,7 @@ def remove_view(request: HttpRequest, id: str):
"""
comp = get_object_or_404(Compensation, id=id)
form = RemoveModalForm(request.POST or None, instance=comp, user=request.user)
form = RemoveModalForm(request.POST or None, instance=comp, request=request)
return form.process_request(
request=request,
msg_success=_("Compensation removed"),
@@ -267,7 +267,7 @@ def new_document_view(request: HttpRequest, id: str):
"""
comp = get_object_or_404(Compensation, id=id)
form = NewCompensationDocumentForm(request.POST or None, request.FILES or None, instance=comp, user=request.user)
form = NewCompensationDocumentForm(request.POST or None, request.FILES or None, instance=comp, request=request)
return form.process_request(
request,
msg_success=_("Document added")
@@ -336,7 +336,7 @@ def state_new_view(request: HttpRequest, id: str):
"""
comp = get_object_or_404(Compensation, id=id)
form = NewStateModalForm(request.POST or None, instance=comp, user=request.user)
form = NewStateModalForm(request.POST or None, instance=comp, request=request)
return form.process_request(
request,
msg_success=_("State added")
@@ -357,7 +357,7 @@ def action_new_view(request: HttpRequest, id: str):
"""
comp = get_object_or_404(Compensation, id=id)
form = NewActionModalForm(request.POST or None, instance=comp, user=request.user)
form = NewActionModalForm(request.POST or None, instance=comp, request=request)
return form.process_request(
request,
msg_success=_("Action added")
@@ -378,7 +378,7 @@ def deadline_new_view(request: HttpRequest, id: str):
"""
comp = get_object_or_404(Compensation, id=id)
form = NewDeadlineModalForm(request.POST or None, instance=comp, user=request.user)
form = NewDeadlineModalForm(request.POST or None, instance=comp, request=request)
return form.process_request(
request,
msg_success=_("Deadline added")
@@ -400,7 +400,7 @@ def state_remove_view(request: HttpRequest, id: str, state_id: str):
"""
state = get_object_or_404(CompensationState, id=state_id)
form = RemoveModalForm(request.POST or None, instance=state, user=request.user)
form = RemoveModalForm(request.POST or None, instance=state, request=request)
return form.process_request(
request,
msg_success=_("State removed")
@@ -422,7 +422,7 @@ def action_remove_view(request: HttpRequest, id: str, action_id: str):
"""
action = get_object_or_404(CompensationAction, id=action_id)
form = RemoveModalForm(request.POST or None, instance=action, user=request.user)
form = RemoveModalForm(request.POST or None, instance=action, request=request)
return form.process_request(
request,
msg_success=_("Action removed")

View File

@@ -250,7 +250,7 @@ def remove_view(request: HttpRequest, id: str):
messages.info(request, CANCEL_ACC_RECORDED_OR_DEDUCTED)
return redirect("compensation:acc-detail", id=id)
form = RemoveModalForm(request.POST or None, instance=acc, user=request.user)
form = RemoveModalForm(request.POST or None, instance=acc, request=request)
return form.process_request(
request=request,
msg_success=_("Eco-account removed"),
@@ -278,7 +278,7 @@ def deduction_remove_view(request: HttpRequest, id: str, deduction_id: str):
except ObjectDoesNotExist:
raise Http404("Unknown deduction")
form = RemoveModalForm(request.POST or None, instance=eco_deduction, user=request.user)
form = RemoveModalForm(request.POST or None, instance=eco_deduction, request=request)
return form.process_request(
request=request,
msg_success=_("Deduction removed")
@@ -325,7 +325,7 @@ def record_view(request: HttpRequest, id:str):
"""
acc = get_object_or_404(EcoAccount, id=id)
form = RecordModalForm(request.POST or None, instance=acc, user=request.user)
form = RecordModalForm(request.POST or None, instance=acc, request=request)
msg_succ = _("{} unrecorded") if acc.recorded else _("{} recorded")
msg_succ = msg_succ.format(acc.identifier)
return form.process_request(
@@ -348,7 +348,7 @@ def state_new_view(request: HttpRequest, id: str):
"""
acc = get_object_or_404(EcoAccount, id=id)
form = NewStateModalForm(request.POST or None, instance=acc, user=request.user)
form = NewStateModalForm(request.POST or None, instance=acc, request=request)
return form.process_request(
request,
msg_success=_("State added")
@@ -369,7 +369,7 @@ def action_new_view(request: HttpRequest, id: str):
"""
acc = get_object_or_404(EcoAccount, id=id)
form = NewActionModalForm(request.POST or None, instance=acc, user=request.user)
form = NewActionModalForm(request.POST or None, instance=acc, request=request)
return form.process_request(
request,
msg_success=_("Action added")
@@ -391,7 +391,7 @@ def state_remove_view(request: HttpRequest, id: str, state_id: str):
"""
state = get_object_or_404(CompensationState, id=state_id)
form = RemoveModalForm(request.POST or None, instance=state, user=request.user)
form = RemoveModalForm(request.POST or None, instance=state, request=request)
return form.process_request(
request,
msg_success=_("State removed")
@@ -413,7 +413,7 @@ def action_remove_view(request: HttpRequest, id: str, action_id: str):
"""
action = get_object_or_404(CompensationAction, id=action_id)
form = RemoveModalForm(request.POST or None, instance=action, user=request.user)
form = RemoveModalForm(request.POST or None, instance=action, request=request)
return form.process_request(
request,
msg_success=_("Action removed")
@@ -434,7 +434,7 @@ def deadline_new_view(request: HttpRequest, id: str):
"""
acc = get_object_or_404(EcoAccount, id=id)
form = NewDeadlineModalForm(request.POST or None, instance=acc, user=request.user)
form = NewDeadlineModalForm(request.POST or None, instance=acc, request=request)
return form.process_request(
request,
msg_success=_("Deadline added")
@@ -454,7 +454,7 @@ def new_document_view(request: HttpRequest, id: str):
"""
acc = get_object_or_404(EcoAccount, id=id)
form = NewEcoAccountDocumentForm(request.POST or None, request.FILES or None, instance=acc, user=request.user)
form = NewEcoAccountDocumentForm(request.POST or None, request.FILES or None, instance=acc, request=request)
return form.process_request(
request,
msg_success=_("Document added")
@@ -524,7 +524,7 @@ def new_deduction_view(request: HttpRequest, id: str):
"""
acc = get_object_or_404(EcoAccount, id=id)
form = NewDeductionModalForm(request.POST or None, instance=acc, user=request.user)
form = NewDeductionModalForm(request.POST or None, instance=acc, request=request)
return form.process_request(
request,
msg_success=_("Deduction added")

View File

@@ -30,7 +30,7 @@ def new_payment_view(request: HttpRequest, intervention_id: str):
"""
intervention = get_object_or_404(Intervention, id=intervention_id)
form = NewPaymentForm(request.POST or None, instance=intervention, user=request.user)
form = NewPaymentForm(request.POST or None, instance=intervention, request=request)
return form.process_request(
request,
msg_success=_("Payment added")
@@ -50,7 +50,7 @@ def payment_remove_view(request: HttpRequest, id: str):
"""
payment = get_object_or_404(Payment, id=id)
form = RemoveModalForm(request.POST or None, instance=payment, user=request.user)
form = RemoveModalForm(request.POST or None, instance=payment, request=request)
return form.process_request(
request=request,
msg_success=_("Payment removed"),