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

@@ -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()