Log project changes during approvals

This commit is contained in:
Victor Andersson
2025-11-09 14:05:28 +01:00
parent 70aeca6187
commit 0d68c75fef
5 changed files with 41 additions and 26 deletions

View File

@@ -122,6 +122,7 @@ class ClaimLog(models.Model):
CREATED = "created", _("Submitted") CREATED = "created", _("Submitted")
STATUS_CHANGED = "status_changed", _("Status changed") STATUS_CHANGED = "status_changed", _("Status changed")
MARKED_PAID = "marked_paid", _("Marked as paid") MARKED_PAID = "marked_paid", _("Marked as paid")
PROJECT_CHANGED = "project_changed", _("Project changed")
claim = models.ForeignKey(Claim, related_name="logs", on_delete=models.CASCADE) claim = models.ForeignKey(Claim, related_name="logs", on_delete=models.CASCADE)
action = models.CharField(max_length=32, choices=Action.choices) action = models.CharField(max_length=32, choices=Action.choices)
@@ -147,4 +148,3 @@ class ClaimLog(models.Model):
def __str__(self): def __str__(self):
return f"{self.get_action_display()} ({self.created_at:%Y-%m-%d %H:%M})" return f"{self.get_action_display()} ({self.created_at:%Y-%m-%d %H:%M})"

View File

@@ -9,7 +9,7 @@ from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from .forms import ClaimDecisionForm from .forms import ClaimDecisionForm
from .models import Claim, Project from .models import Claim, ClaimLog, Project
from .validators import validate_receipt_file from .validators import validate_receipt_file
from .views import SubmitClaimView from .views import SubmitClaimView
@@ -144,3 +144,6 @@ class DashboardViewTests(TestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
claim.refresh_from_db() claim.refresh_from_db()
self.assertEqual(claim.project, project_new) self.assertEqual(claim.project, project_new)
self.assertTrue(
claim.logs.filter(action=ClaimLog.Action.PROJECT_CHANGED, note__icontains="Project updated").exists()
)

View File

@@ -221,6 +221,12 @@ class ClaimDashboardView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
to_status=claim.status, to_status=claim.status,
note=decision_note, note=decision_note,
) )
if project_changed:
claim.add_log(
action=ClaimLog.Action.PROJECT_CHANGED,
performed_by=request.user,
note=_("Project updated during decision."),
)
return redirect(request.get_full_path()) return redirect(request.get_full_path())
def _handle_payment(self, request): def _handle_payment(self, request):

Binary file not shown.

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: claims-system 0.1\n" "Project-Id-Version: claims-system 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-09 13:48+0100\n" "POT-Creation-Date: 2025-11-09 14:00+0100\n"
"PO-Revision-Date: 2025-11-08 23:40+0100\n" "PO-Revision-Date: 2025-11-08 23:40+0100\n"
"Last-Translator: ChatGPT <noreply@example.com>\n" "Last-Translator: ChatGPT <noreply@example.com>\n"
"Language-Team: English\n" "Language-Team: English\n"
@@ -160,6 +160,10 @@ msgstr "Status changed"
msgid "Marked as paid" msgid "Marked as paid"
msgstr "Marked as paid" msgstr "Marked as paid"
#: claims/models.py:125
msgid "Project changed"
msgstr "Project changed"
#: claims/templates/claims/base.html:8 #: claims/templates/claims/base.html:8
msgid "Claims" msgid "Claims"
msgstr "Claims" msgstr "Claims"
@@ -840,7 +844,7 @@ msgstr ""
msgid "Kunde inte spara utläggen. Kontrollera formuläret." msgid "Kunde inte spara utläggen. Kontrollera formuläret."
msgstr "" msgstr ""
#: claims/views.py:182 claims/views.py:231 #: claims/views.py:182 claims/views.py:237
#, fuzzy #, fuzzy
#| msgid "Ge behörighet att besluta utlägg" #| msgid "Ge behörighet att besluta utlägg"
msgid "Du har inte behörighet att uppdatera utlägg." msgid "Du har inte behörighet att uppdatera utlägg."
@@ -856,71 +860,73 @@ msgstr "The claim is marked as paid. Decision/comments are locked."
#: claims/views.py:208 #: claims/views.py:208
#, python-format #, python-format
msgid "%(claim)s markerades som godkänd." msgid "%(claim)s markerades som godkänd."
msgstr "" msgstr "%(claim)s was marked as approved."
#: claims/views.py:211 #: claims/views.py:211
#, fuzzy, python-format #, python-format
#| msgid "Ej markerad som betald"
msgid "%(claim)s markerades som nekad." msgid "%(claim)s markerades som nekad."
msgstr "Not marked as paid" msgstr "%(claim)s was marked as rejected."
#: claims/views.py:228 #: claims/views.py:228
msgid "Project updated during decision."
msgstr "Project updated during decision."
#: claims/views.py:234
msgid "Betalningshantering är inte aktiverad." msgid "Betalningshantering är inte aktiverad."
msgstr "" msgstr "Payment handling is not enabled."
#: claims/views.py:236 #: claims/views.py:242
msgid "Endast godkända utlägg kan markeras som betalda." msgid "Endast godkända utlägg kan markeras som betalda."
msgstr "" msgstr "Only approved claims can be marked as paid."
#: claims/views.py:239 #: claims/views.py:245
msgid "Detta utlägg är redan markerat som betalt." msgid "Detta utlägg är redan markerat som betalt."
msgstr "" msgstr "This claim is already marked as paid."
#: claims/views.py:250 #: claims/views.py:256
#, fuzzy, python-format #, python-format
#| msgid "Ej markerad som betald"
msgid "%(claim)s markerades som betald." msgid "%(claim)s markerades som betald."
msgstr "Not marked as paid" msgstr "%(claim)s was marked as paid."
#: claims/views.py:316 #: claims/views.py:322
msgid "Du saknar behörighet för åtgärden." msgid "Du saknar behörighet för åtgärden."
msgstr "" msgstr ""
#: claims/views.py:363 #: claims/views.py:369
#, python-format #, python-format
msgid "Användaren %(user)s skapades." msgid "Användaren %(user)s skapades."
msgstr "" msgstr ""
#: claims/views.py:374 #: claims/views.py:380
msgid "Du kan inte ta bort din egen staff-status." msgid "Du kan inte ta bort din egen staff-status."
msgstr "" msgstr ""
#: claims/views.py:380 #: claims/views.py:386
#, python-format #, python-format
msgid "Behörigheter uppdaterades för %(user)s." msgid "Behörigheter uppdaterades för %(user)s."
msgstr "" msgstr ""
#: claims/views.py:382 #: claims/views.py:388
#, fuzzy #, fuzzy
#| msgid "Justera behörigheter" #| msgid "Justera behörigheter"
msgid "Kunde inte uppdatera behörigheter." msgid "Kunde inte uppdatera behörigheter."
msgstr "Adjust permissions" msgstr "Adjust permissions"
#: claims/views.py:392 #: claims/views.py:398
msgid "Du kan inte ta bort ditt eget konto." msgid "Du kan inte ta bort ditt eget konto."
msgstr "" msgstr ""
#: claims/views.py:394 #: claims/views.py:400
msgid "Du kan inte ta bort en superuser via detta gränssnitt." msgid "Du kan inte ta bort en superuser via detta gränssnitt."
msgstr "" msgstr ""
#: claims/views.py:397 #: claims/views.py:403
#, fuzzy #, fuzzy
#| msgid "Användare" #| msgid "Användare"
msgid "Användaren togs bort." msgid "Användaren togs bort."
msgstr "Users" msgstr "Users"
#: claims/views.py:400 #: claims/views.py:406
msgid "Okänd åtgärd." msgid "Okänd åtgärd."
msgstr "" msgstr ""