diff --git a/compensation/forms/modalForms.py b/compensation/forms/modalForms.py
index 9e7419b6..9331f60a 100644
--- a/compensation/forms/modalForms.py
+++ b/compensation/forms/modalForms.py
@@ -21,7 +21,7 @@ from konova.contexts import BaseContext
from konova.forms import BaseModalForm, NewDocumentForm
from konova.models import DeadlineType
from konova.utils.message_templates import FORM_INVALID, ADDED_COMPENSATION_STATE, ADDED_DEADLINE, \
- ADDED_COMPENSATION_ACTION
+ ADDED_COMPENSATION_ACTION, PAYMENT_ADDED
class NewPaymentForm(BaseModalForm):
@@ -100,7 +100,7 @@ class NewPaymentForm(BaseModalForm):
def save(self):
pay = self.instance.add_payment(self)
- self.instance.mark_as_edited(self.user, self.request)
+ self.instance.mark_as_edited(self.user, self.request, edit_comment=PAYMENT_ADDED)
return pay
diff --git a/compensation/models/compensation.py b/compensation/models/compensation.py
index de5a3461..788f4b4c 100644
--- a/compensation/models/compensation.py
+++ b/compensation/models/compensation.py
@@ -326,7 +326,7 @@ class Compensation(AbstractCompensation, CEFMixin, CoherenceMixin):
Returns:
"""
- self.intervention.mark_as_edited(user, request, edit_comment, reset_recorded)
+ return self.intervention.mark_as_edited(user, request, edit_comment, reset_recorded)
def is_ready_for_publish(self) -> bool:
""" Not inherited by RecordableObjectMixin
diff --git a/compensation/models/eco_account.py b/compensation/models/eco_account.py
index 8e4d32e1..26ac44d7 100644
--- a/compensation/models/eco_account.py
+++ b/compensation/models/eco_account.py
@@ -9,10 +9,10 @@ import shutil
from django.urls import reverse
-from user.models import User
+from konova.utils.message_templates import DEDUCTION_REMOVED
from django.core.exceptions import ValidationError
from django.core.validators import MinValueValidator
-from django.db import models, transaction
+from django.db import models
from django.db.models import Sum, QuerySet
from django.utils.translation import gettext_lazy as _
@@ -22,7 +22,6 @@ from compensation.utils.quality import EcoAccountQualityChecker
from konova.models import ShareableObjectMixin, RecordableObjectMixin, AbstractDocument, BaseResource, \
generate_document_file_upload_path
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
-from user.models import UserActionLogEntry
class EcoAccount(AbstractCompensation, ShareableObjectMixin, RecordableObjectMixin):
@@ -167,34 +166,6 @@ class EcoAccount(AbstractCompensation, ShareableObjectMixin, RecordableObjectMix
)
return docs
- def add_deduction(self, form):
- """ Adds a new deduction to the intervention
-
- Args:
- form (NewDeductionModalForm): The form holding the data
-
- Returns:
-
- """
- form_data = form.cleaned_data
- user = form.user
-
- with transaction.atomic():
- # Create log entry
- user_action_create = UserActionLogEntry.get_created_action(user)
- user_action_edit = UserActionLogEntry.get_edited_action(user)
- self.log.add(user_action_edit)
- self.modified = user_action_edit
- self.save()
-
- deduction = EcoAccountDeduction.objects.create(
- intervention=form_data["intervention"],
- account=self,
- surface=form_data["surface"],
- created=user_action_create,
- )
- return deduction
-
def is_ready_for_publish(self) -> bool:
""" Checks whether the data passes all constraints for being publishable
@@ -295,3 +266,9 @@ class EcoAccountDeduction(BaseResource):
def __str__(self):
return "{} of {}".format(self.surface, self.account)
+
+ def delete(self, user=None, *args, **kwargs):
+ if user is not None:
+ self.intervention.mark_as_edited(user, edit_comment=DEDUCTION_REMOVED)
+ self.account.mark_as_edited(user, edit_comment=DEDUCTION_REMOVED, reset_recorded=False)
+ super().delete(*args, **kwargs)
\ No newline at end of file
diff --git a/compensation/models/payment.py b/compensation/models/payment.py
index ec56910d..48eec3fc 100644
--- a/compensation/models/payment.py
+++ b/compensation/models/payment.py
@@ -10,6 +10,8 @@ from django.db import models
from intervention.models import Intervention
from konova.models import BaseResource
+from konova.utils.message_templates import PAYMENT_REMOVED
+from user.models import UserActionLogEntry
class Payment(BaseResource):
@@ -35,3 +37,8 @@ class Payment(BaseResource):
ordering = [
"-amount",
]
+
+ def delete(self, user=None, *args, **kwargs):
+ if user is not None:
+ self.intervention.mark_as_edited(user, edit_comment=PAYMENT_REMOVED)
+ super().delete(*args, **kwargs)
diff --git a/compensation/views/eco_account.py b/compensation/views/eco_account.py
index d1d6ddbf..479e66f8 100644
--- a/compensation/views/eco_account.py
+++ b/compensation/views/eco_account.py
@@ -30,7 +30,7 @@ from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
from konova.utils.documents import get_document, remove_document
from konova.utils.generators import generate_qr_code
from konova.utils.message_templates import IDENTIFIER_REPLACED, FORM_INVALID, DATA_UNSHARED, DATA_UNSHARED_EXPLANATION, \
- CANCEL_ACC_RECORDED_OR_DEDUCTED
+ CANCEL_ACC_RECORDED_OR_DEDUCTED, DEDUCTION_REMOVED, DEDUCTION_ADDED
from konova.utils.user_checks import in_group
@@ -288,7 +288,7 @@ def deduction_remove_view(request: HttpRequest, id: str, deduction_id: str):
form = RemoveModalForm(request.POST or None, instance=eco_deduction, request=request)
return form.process_request(
request=request,
- msg_success=_("Deduction removed"),
+ msg_success=DEDUCTION_REMOVED,
redirect_url=reverse("compensation:acc:detail", args=(id,)) + "#related_data"
)
@@ -564,7 +564,7 @@ def new_deduction_view(request: HttpRequest, id: str):
form = NewDeductionModalForm(request.POST or None, instance=acc, request=request)
return form.process_request(
request,
- msg_success=_("Deduction added"),
+ msg_success=DEDUCTION_ADDED,
redirect_url=reverse("compensation:acc:detail", args=(id,)) + "#related_data"
)
diff --git a/compensation/views/payment.py b/compensation/views/payment.py
index 7caf847e..b715a3ae 100644
--- a/compensation/views/payment.py
+++ b/compensation/views/payment.py
@@ -16,6 +16,7 @@ from compensation.models import Payment
from intervention.models import Intervention
from konova.decorators import default_group_required
from konova.forms import RemoveModalForm
+from konova.utils.message_templates import PAYMENT_ADDED, PAYMENT_REMOVED
@login_required
@@ -34,7 +35,7 @@ def new_payment_view(request: HttpRequest, intervention_id: str):
form = NewPaymentForm(request.POST or None, instance=intervention, request=request)
return form.process_request(
request,
- msg_success=_("Payment added"),
+ msg_success=PAYMENT_ADDED,
redirect_url=reverse("intervention:detail", args=(intervention_id,)) + "#related_data"
)
@@ -55,7 +56,7 @@ def payment_remove_view(request: HttpRequest, id: str):
form = RemoveModalForm(request.POST or None, instance=payment, request=request)
return form.process_request(
request=request,
- msg_success=_("Payment removed"),
+ msg_success=PAYMENT_REMOVED,
redirect_url=reverse("intervention:detail", args=(payment.intervention_id,)) + "#related_data"
)
diff --git a/intervention/forms/forms.py b/intervention/forms/forms.py
index 6f098151..1c5cf1c6 100644
--- a/intervention/forms/forms.py
+++ b/intervention/forms/forms.py
@@ -7,6 +7,8 @@ Created on: 02.12.20
"""
from dal import autocomplete
from django import forms
+
+from konova.utils.message_templates import EDITED_GENERAL_DATA
from user.models import User
from django.db import transaction
from django.urls import reverse, reverse_lazy
@@ -333,7 +335,7 @@ class EditInterventionForm(NewInterventionForm):
self.instance.responsible.conservation_file_number = conservation_file_number
self.instance.responsible.save()
- user_action = UserActionLogEntry.get_edited_action(user)
+ user_action = self.instance.mark_as_edited(user, edit_comment=EDITED_GENERAL_DATA)
geometry = geom_form.save(user_action)
self.instance.geometry = geometry
@@ -347,8 +349,5 @@ class EditInterventionForm(NewInterventionForm):
self.instance.modified = user_action
self.instance.save()
- # Uncheck and unrecord intervention due to changed data
- self.instance.mark_as_edited(user)
-
return self.instance
diff --git a/intervention/forms/modalForms.py b/intervention/forms/modalForms.py
index b7330aec..a240d8f6 100644
--- a/intervention/forms/modalForms.py
+++ b/intervention/forms/modalForms.py
@@ -6,13 +6,14 @@ Created on: 27.09.21
"""
from dal import autocomplete
-from user.models import User
+
+from konova.utils.message_templates import DEDUCTION_ADDED
+from user.models import User, UserActionLogEntry
from django.db import transaction
from django import forms
-from django.urls import reverse
from django.utils.translation import gettext_lazy as _
-from compensation.models import EcoAccount
+from compensation.models import EcoAccount, EcoAccountDeduction
from intervention.inputs import TextToClipboardInput
from intervention.models import Intervention, InterventionDocument
from konova.forms import BaseModalForm, NewDocumentForm
@@ -366,9 +367,26 @@ class NewDeductionModalForm(BaseModalForm):
)
return is_valid_surface and super_result
+ def __create_deduction(self):
+ """ Creates the deduction
+
+ Returns:
+
+ """
+ with transaction.atomic():
+ user_action_create = UserActionLogEntry.get_created_action(self.user)
+ deduction = EcoAccountDeduction.objects.create(
+ intervention=self.cleaned_data["intervention"],
+ account=self.cleaned_data["account"],
+ surface=self.cleaned_data["surface"],
+ created=user_action_create,
+ )
+ return deduction
+
def save(self):
- deduction = self.instance.add_deduction(self)
- self.instance.mark_as_edited(self.user, self.request, reset_recorded=False)
+ deduction = self.__create_deduction()
+ self.cleaned_data["intervention"].mark_as_edited(self.user, edit_comment=DEDUCTION_ADDED)
+ self.cleaned_data["account"].mark_as_edited(self.user, edit_comment=DEDUCTION_ADDED, reset_recorded=False)
return deduction
diff --git a/intervention/models/intervention.py b/intervention/models/intervention.py
index 24018fe7..9bb229fb 100644
--- a/intervention/models/intervention.py
+++ b/intervention/models/intervention.py
@@ -26,7 +26,7 @@ from konova.models import generate_document_file_upload_path, AbstractDocument,
ShareableObjectMixin, \
RecordableObjectMixin, CheckableObjectMixin, GeoReferencedMixin
from konova.settings import LANIS_LINK_TEMPLATE, LANIS_ZOOM_LUT, DEFAULT_SRID_RLP
-from konova.utils.message_templates import DATA_UNSHARED_EXPLANATION
+from konova.utils.message_templates import DATA_UNSHARED_EXPLANATION, DEDUCTION_ADDED
from user.models import UserActionLogEntry
@@ -229,28 +229,6 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
)
return revocation
- def add_deduction(self, form):
- """ Adds a new deduction to the intervention
-
- Args:
- form (NewDeductionModalForm): The form holding the data
-
- Returns:
-
- """
- form_data = form.cleaned_data
- user = form.user
-
- with transaction.atomic():
- user_action_create = UserActionLogEntry.get_created_action(user)
- deduction = EcoAccountDeduction.objects.create(
- intervention=self,
- account=form_data["account"],
- surface=form_data["surface"],
- created=user_action_create,
- )
- return deduction
-
def mark_as_edited(self, performing_user: User, request: HttpRequest = None, edit_comment: str = None, reset_recorded: bool = True):
""" In case the object or a related object changed, internal processes need to be started, such as
unrecord and uncheck
@@ -264,9 +242,10 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec
Returns:
"""
- super().mark_as_edited(performing_user, request, edit_comment, reset_recorded)
+ action = super().mark_as_edited(performing_user, request, edit_comment, reset_recorded)
if self.checked:
self.set_unchecked()
+ return action
def set_status_messages(self, request: HttpRequest):
""" Setter for different information that need to be rendered
diff --git a/intervention/templates/intervention/detail/includes/deductions.html b/intervention/templates/intervention/detail/includes/deductions.html
index bc169082..99f11cb8 100644
--- a/intervention/templates/intervention/detail/includes/deductions.html
+++ b/intervention/templates/intervention/detail/includes/deductions.html
@@ -57,7 +57,7 @@
{{ deduction.created.timestamp|default_if_none:""|naturalday}} |
{% if is_default_member and has_access %}
- |