Recording data
* adds dynamic icon for recording and unrecording of data * adds record view to intervention and eco accounts * adds quality_check() method for Intervention and EcoAccount class which holds logic for data quality checking * adds UserAction "unrecorded"
This commit is contained in:
@@ -20,6 +20,8 @@ from django.shortcuts import redirect, render
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from compensation.models import EcoAccount
|
||||
from intervention.models import Intervention
|
||||
from konova.contexts import BaseContext
|
||||
from konova.models import Document, BaseObject
|
||||
from konova.utils.message_templates import FORM_INVALID
|
||||
@@ -328,3 +330,71 @@ class NewDocumentForm(BaseModalForm):
|
||||
self.instance.log.add(edited_action)
|
||||
|
||||
return doc
|
||||
|
||||
|
||||
class RecordForm(BaseModalForm):
|
||||
""" Modal form for recording data
|
||||
|
||||
"""
|
||||
confirm = forms.BooleanField(
|
||||
label=_("Confirm record"),
|
||||
label_suffix="",
|
||||
widget=forms.CheckboxInput(),
|
||||
required=True,
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.form_title = _("Record data")
|
||||
self.form_caption = _("I, {} {}, confirm that all necessary control steps have been performed by myself.").format(self.user.first_name, self.user.last_name)
|
||||
|
||||
if self.instance.recorded:
|
||||
# unrecord!
|
||||
self.fields["confirm"].label = _("Confirm unrecord")
|
||||
self.form_title = _("Unrecord data")
|
||||
self.form_caption = _("I, {} {}, confirm that this data must be unrecorded.").format(self.user.first_name, self.user.last_name)
|
||||
|
||||
implemented_cls_logic = {
|
||||
Intervention,
|
||||
EcoAccount
|
||||
}
|
||||
instance_name = self.instance.__class__
|
||||
if instance_name not in implemented_cls_logic:
|
||||
raise NotImplementedError
|
||||
|
||||
def is_valid(self):
|
||||
""" Checks for instance's validity and data quality
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
super_val = super().is_valid()
|
||||
msgs = self.instance.quality_check()
|
||||
for msg in msgs:
|
||||
self.add_error(
|
||||
"confirm",
|
||||
msg
|
||||
)
|
||||
return super_val and (len(msgs) == 0)
|
||||
|
||||
def save(self):
|
||||
with transaction.atomic():
|
||||
if self.cleaned_data["confirm"]:
|
||||
if self.instance.recorded:
|
||||
# unrecord!
|
||||
unrecord_action = UserActionLogEntry.objects.create(
|
||||
user=self.user,
|
||||
action=UserAction.UNRECORDED
|
||||
)
|
||||
# Do not delete the old .recorded attribute, since it shall stay in the .log list!
|
||||
self.instance.recorded = None
|
||||
self.instance.log.add(unrecord_action)
|
||||
else:
|
||||
record_action = UserActionLogEntry.objects.create(
|
||||
user=self.user,
|
||||
action=UserAction.RECORDED
|
||||
)
|
||||
self.instance.recorded = record_action
|
||||
self.instance.log.add(record_action)
|
||||
self.instance.save()
|
||||
return self.instance
|
||||
@@ -8,7 +8,6 @@ Created on: 15.12.20
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP
|
||||
from user.enums import UserNotificationEnum
|
||||
|
||||
TEST_ORGANISATION_DATA = [
|
||||
{
|
||||
|
||||
@@ -9,3 +9,4 @@ from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
FORM_INVALID = _("There was an error on this form.")
|
||||
INTERVENTION_INVALID = _("There are errors in this intervention.")
|
||||
|
||||
Reference in New Issue
Block a user