Refactors triggering checked/recorded
* refactors BaseForm request/user initialization * introduces mark_as_edited() method for compensation models
This commit is contained in:
@@ -169,6 +169,7 @@ class NewRevocationModalForm(BaseModalForm):
|
||||
|
||||
def save(self):
|
||||
revocation = self.instance.add_revocation(self)
|
||||
self.instance.mark_as_edited(self.user, self.request)
|
||||
return revocation
|
||||
|
||||
|
||||
@@ -332,6 +333,7 @@ class NewDeductionModalForm(BaseModalForm):
|
||||
|
||||
def save(self):
|
||||
deduction = self.instance.add_deduction(self)
|
||||
self.instance.mark_as_edited(self.user, self.request)
|
||||
return deduction
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import shutil
|
||||
from django.contrib.auth.models import User
|
||||
from django.db import models, transaction
|
||||
from django.db.models import QuerySet
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.http import HttpRequest
|
||||
|
||||
from compensation.models import EcoAccountDeduction
|
||||
from intervention.managers import InterventionManager
|
||||
@@ -139,8 +139,7 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
|
||||
return revoc_docs, regular_docs
|
||||
|
||||
def set_unchecked(self):
|
||||
log_entry = super().set_unchecked()
|
||||
self.add_log_entry_to_compensations(log_entry)
|
||||
super().set_unchecked()
|
||||
|
||||
def set_checked(self, user: User) -> UserActionLogEntry:
|
||||
log_entry = super().set_checked(user)
|
||||
@@ -183,8 +182,6 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
|
||||
user = form.user
|
||||
with transaction.atomic():
|
||||
created_action = UserActionLogEntry.get_created_action(user)
|
||||
edited_action = UserActionLogEntry.get_edited_action(user, _("Added payment"))
|
||||
|
||||
pay = Payment.objects.create(
|
||||
created=created_action,
|
||||
amount=form_data.get("amount", -1),
|
||||
@@ -192,10 +189,6 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
|
||||
comment=form_data.get("comment", None),
|
||||
intervention=self,
|
||||
)
|
||||
self.log.add(edited_action)
|
||||
self.modified = edited_action
|
||||
self.save()
|
||||
self.mark_as_edited(user)
|
||||
return pay
|
||||
|
||||
def add_revocation(self, form):
|
||||
@@ -211,7 +204,6 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
|
||||
user = form.user
|
||||
with transaction.atomic():
|
||||
created_action = UserActionLogEntry.get_created_action(user)
|
||||
edited_action = UserActionLogEntry.get_edited_action(user)
|
||||
|
||||
revocation = Revocation.objects.create(
|
||||
date=form_data["date"],
|
||||
@@ -219,9 +211,6 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
|
||||
comment=form_data["comment"],
|
||||
created=created_action,
|
||||
)
|
||||
self.modified = edited_action
|
||||
self.save()
|
||||
self.log.add(edited_action)
|
||||
|
||||
if form_data["file"]:
|
||||
RevocationDocument.objects.create(
|
||||
@@ -231,7 +220,6 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
|
||||
file=form_data["file"],
|
||||
instance=revocation
|
||||
)
|
||||
self.mark_as_edited(user)
|
||||
return revocation
|
||||
|
||||
def add_deduction(self, form):
|
||||
@@ -247,24 +235,16 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
|
||||
user = form.user
|
||||
|
||||
with transaction.atomic():
|
||||
# Create log entry
|
||||
user_action_edit = UserActionLogEntry.get_edited_action(user)
|
||||
user_action_create = UserActionLogEntry.get_created_action(user)
|
||||
|
||||
self.log.add(user_action_edit)
|
||||
self.modified = user_action_edit
|
||||
self.save()
|
||||
|
||||
deduction = EcoAccountDeduction.objects.create(
|
||||
intervention=self,
|
||||
account=form_data["account"],
|
||||
surface=form_data["surface"],
|
||||
created=user_action_create,
|
||||
)
|
||||
self.mark_as_edited(user)
|
||||
return deduction
|
||||
|
||||
def mark_as_edited(self, performing_user: User):
|
||||
def mark_as_edited(self, performing_user: User, request: HttpRequest = None, edit_comment: str = None):
|
||||
""" In case the object or a related object changed, internal processes need to be started, such as
|
||||
unrecord and uncheck
|
||||
|
||||
@@ -274,7 +254,12 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
|
||||
Returns:
|
||||
|
||||
"""
|
||||
super().mark_as_edited(performing_user)
|
||||
user_action_edit = UserActionLogEntry.get_edited_action(performing_user, comment=edit_comment)
|
||||
self.log.add(user_action_edit)
|
||||
self.modified = user_action_edit
|
||||
self.save()
|
||||
|
||||
super().mark_as_edited(performing_user, request)
|
||||
if self.checked:
|
||||
self.set_unchecked()
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ def new_document_view(request: HttpRequest, id: str):
|
||||
|
||||
"""
|
||||
intervention = get_object_or_404(Intervention, id=id)
|
||||
form = NewInterventionDocumentForm(request.POST or None, request.FILES or None, instance=intervention, user=request.user)
|
||||
form = NewInterventionDocumentForm(request.POST or None, request.FILES or None, instance=intervention, request=request)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("Document added")
|
||||
@@ -233,7 +233,7 @@ def detail_view(request: HttpRequest, id: str):
|
||||
is_data_shared = intervention.is_shared_with(user=_user)
|
||||
|
||||
geom_form = SimpleGeomForm(
|
||||
instance=intervention
|
||||
instance=intervention,
|
||||
)
|
||||
|
||||
# Inform user about revocation
|
||||
@@ -320,7 +320,7 @@ def remove_view(request: HttpRequest, id: str):
|
||||
"""
|
||||
obj = Intervention.objects.get(id=id)
|
||||
identifier = obj.identifier
|
||||
form = RemoveModalForm(request.POST or None, instance=obj, user=request.user)
|
||||
form = RemoveModalForm(request.POST or None, instance=obj, request=request)
|
||||
return form.process_request(
|
||||
request,
|
||||
_("{} removed").format(identifier),
|
||||
@@ -341,7 +341,7 @@ def remove_revocation_view(request: HttpRequest, id: str):
|
||||
|
||||
"""
|
||||
obj = Revocation.objects.get(id=id)
|
||||
form = RemoveModalForm(request.POST or None, instance=obj, user=request.user)
|
||||
form = RemoveModalForm(request.POST or None, instance=obj, request=request)
|
||||
return form.process_request(
|
||||
request,
|
||||
_("Revocation removed"),
|
||||
@@ -402,7 +402,7 @@ def create_share_view(request: HttpRequest, id: str):
|
||||
|
||||
"""
|
||||
intervention = get_object_or_404(Intervention, id=id)
|
||||
form = ShareModalForm(request.POST or None, instance=intervention, request=request, user=request.user)
|
||||
form = ShareModalForm(request.POST or None, instance=intervention, request=request)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("Share settings updated")
|
||||
@@ -423,7 +423,7 @@ def check_view(request: HttpRequest, id: str):
|
||||
|
||||
"""
|
||||
intervention = get_object_or_404(Intervention, id=id)
|
||||
form = CheckModalForm(request.POST or None, instance=intervention, user=request.user)
|
||||
form = CheckModalForm(request.POST or None, instance=intervention, request=request)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("Check performed"),
|
||||
@@ -445,7 +445,7 @@ def new_revocation_view(request: HttpRequest, id: str):
|
||||
|
||||
"""
|
||||
intervention = get_object_or_404(Intervention, id=id)
|
||||
form = NewRevocationModalForm(request.POST or None, request.FILES or None, instance=intervention, user=request.user)
|
||||
form = NewRevocationModalForm(request.POST or None, request.FILES or None, instance=intervention, request=request)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("Revocation added")
|
||||
@@ -492,7 +492,7 @@ def new_deduction_view(request: HttpRequest, id: str):
|
||||
|
||||
"""
|
||||
intervention = get_object_or_404(Intervention, id=id)
|
||||
form = NewDeductionModalForm(request.POST or None, instance=intervention, user=request.user)
|
||||
form = NewDeductionModalForm(request.POST or None, instance=intervention, request=request)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("Deduction added")
|
||||
@@ -513,7 +513,7 @@ def record_view(request: HttpRequest, id: str):
|
||||
|
||||
"""
|
||||
intervention = get_object_or_404(Intervention, id=id)
|
||||
form = RecordModalForm(request.POST or None, instance=intervention, user=request.user)
|
||||
form = RecordModalForm(request.POST or None, instance=intervention, request=request)
|
||||
msg_succ = _("{} unrecorded") if intervention.recorded else _("{} recorded")
|
||||
msg_succ = msg_succ.format(intervention.identifier)
|
||||
return form.process_request(
|
||||
|
||||
Reference in New Issue
Block a user