diff --git a/compensation/filters.py b/compensation/filters.py index 75d6085a..9d0f3b32 100644 --- a/compensation/filters.py +++ b/compensation/filters.py @@ -31,7 +31,7 @@ class CompensationTableFilter(InterventionTableFilter): """ if not value: return queryset.filter( - intervention__recorded_on=None, + intervention__recorded=None, ) else: return queryset diff --git a/compensation/tables.py b/compensation/tables.py index d187338f..0277b52b 100644 --- a/compensation/tables.py +++ b/compensation/tables.py @@ -34,13 +34,13 @@ class CompensationTable(BaseTable): verbose_name=_("Checked"), orderable=True, empty_values=[], - accessor="intervention__checked_on", + accessor="intervention__checked", ) r = tables.Column( verbose_name=_("Recorded"), orderable=True, empty_values=[], - accessor="intervention__recorded_on", + accessor="intervention__recorded", ) e = tables.Column( verbose_name=_("Editable"), @@ -90,7 +90,7 @@ class CompensationTable(BaseTable): def render_c(self, value, record: Compensation): """ Renders the checked column for a compensation - checked_on is set by the main object Intervention + checked is set by the main object Intervention Args: value (str): The identifier value @@ -103,9 +103,10 @@ class CompensationTable(BaseTable): checked = value is not None tooltip = _("Not checked yet") if checked: + value = value.timestamp value = localtime(value) checked_on = value.strftime(DEFAULT_DATE_TIME_FORMAT) - tooltip = _("Checked on {} by {}").format(checked_on, record.intervention.checked_by) + tooltip = _("Checked on {} by {}").format(checked_on, record.intervention.checked.user) html += self.render_checked_star( tooltip=tooltip, icn_filled=checked, @@ -126,9 +127,10 @@ class CompensationTable(BaseTable): checked = value is not None tooltip = _("Not registered yet") if checked: + value = value.timestamp value = localtime(value) on = value.strftime(DEFAULT_DATE_TIME_FORMAT) - tooltip = _("Registered on {} by {}").format(on, record.intervention.recorded_by) + tooltip = _("Registered on {} by {}").format(on, record.intervention.recorded.user) html += self.render_bookmark( tooltip=tooltip, icn_filled=checked, diff --git a/intervention/filters.py b/intervention/filters.py index 7eb9553f..319a0992 100644 --- a/intervention/filters.py +++ b/intervention/filters.py @@ -117,7 +117,7 @@ class InterventionTableFilter(django_filters.FilterSet): """ if not value: return queryset.filter( - recorded_on=None, + recorded=None, ) else: return queryset diff --git a/intervention/models.py b/intervention/models.py index 6d72078e..5280c840 100644 --- a/intervention/models.py +++ b/intervention/models.py @@ -15,6 +15,7 @@ from intervention.settings import INTERVENTION_IDENTIFIER_LENGTH, INTERVENTION_I from konova.models import BaseObject, Geometry from konova.utils.generators import generate_random_string from organisation.models import Organisation +from user.models import UserActionLogEntry class Intervention(BaseObject): @@ -32,27 +33,35 @@ class Intervention(BaseObject): geometry = models.ForeignKey(Geometry, null=True, blank=True, on_delete=models.SET_NULL) documents = models.ManyToManyField("konova.Document", blank=True) - # Checks - checked_on = models.DateTimeField(default=None, null=True, blank=True) - checked_by = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL, related_name='+') - # Refers to "zugelassen am" registration_date = models.DateField(null=True, blank=True) # Refers to "Bestandskraft am" binding_on = models.DateField(null=True, blank=True) + # Checks - Refers to "Genehmigen" but optional + checked = models.OneToOneField( + UserActionLogEntry, + on_delete=models.SET_NULL, + null=True, + blank=True, + help_text="Holds data on user and timestamp of this action", + related_name="+" + ) + # Refers to "verzeichnen" - recorded_on = models.DateTimeField(default=None, null=True, blank=True) - recorded_by = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL, related_name='+') + recorded = models.OneToOneField( + UserActionLogEntry, + on_delete=models.SET_NULL, + null=True, + blank=True, + help_text="Holds data on user and timestamp of this action", + related_name="+" + ) # Holds which intervention is simply a newer version of this dataset next_version = models.ForeignKey("Intervention", null=True, blank=True, on_delete=models.DO_NOTHING) - # Compensation or payments, one-directional - #payments = models.ManyToManyField(Payment, related_name="+", blank=True) - #compensations = models.ManyToManyField(Compensation, related_name="+", blank=True) - # Users having access on this object users = models.ManyToManyField(User) diff --git a/intervention/tables.py b/intervention/tables.py index 69d93b85..570eed41 100644 --- a/intervention/tables.py +++ b/intervention/tables.py @@ -33,13 +33,13 @@ class InterventionTable(BaseTable): verbose_name=_("Checked"), orderable=True, empty_values=[], - accessor="checked_on", + accessor="checked", ) r = tables.Column( verbose_name=_("Recorded"), orderable=True, empty_values=[], - accessor="recorded_on", + accessor="recorded", ) e = tables.Column( verbose_name=_("Editable"), @@ -110,9 +110,10 @@ class InterventionTable(BaseTable): checked = value is not None tooltip = _("Not checked yet") if checked: + value = value.timestamp value = localtime(value) checked_on = value.strftime(DEFAULT_DATE_TIME_FORMAT) - tooltip = _("Checked on {} by {}").format(checked_on, record.checked_by) + tooltip = _("Checked on {} by {}").format(checked_on, record.checked.user) html += self.render_checked_star( tooltip=tooltip, icn_filled=checked, @@ -133,9 +134,10 @@ class InterventionTable(BaseTable): checked = value is not None tooltip = _("Not registered yet") if checked: + value = value.timestamp value = localtime(value) on = value.strftime(DEFAULT_DATE_TIME_FORMAT) - tooltip = _("Registered on {} by {}").format(on, record.recorded_by) + tooltip = _("Registered on {} by {}").format(on, record.recorded.user) html += self.render_bookmark( tooltip=tooltip, icn_filled=checked, diff --git a/intervention/templates/intervention/detail/view.html b/intervention/templates/intervention/detail/view.html index 9cddd4a5..e19d3c16 100644 --- a/intervention/templates/intervention/detail/view.html +++ b/intervention/templates/intervention/detail/view.html @@ -93,7 +93,7 @@