Log project changes during approvals
This commit is contained in:
@@ -122,6 +122,7 @@ class ClaimLog(models.Model):
|
||||
CREATED = "created", _("Submitted")
|
||||
STATUS_CHANGED = "status_changed", _("Status changed")
|
||||
MARKED_PAID = "marked_paid", _("Marked as paid")
|
||||
PROJECT_CHANGED = "project_changed", _("Project changed")
|
||||
|
||||
claim = models.ForeignKey(Claim, related_name="logs", on_delete=models.CASCADE)
|
||||
action = models.CharField(max_length=32, choices=Action.choices)
|
||||
@@ -147,4 +148,3 @@ class ClaimLog(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.get_action_display()} ({self.created_at:%Y-%m-%d %H:%M})"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
from .forms import ClaimDecisionForm
|
||||
from .models import Claim, Project
|
||||
from .models import Claim, ClaimLog, Project
|
||||
from .validators import validate_receipt_file
|
||||
from .views import SubmitClaimView
|
||||
|
||||
@@ -144,3 +144,6 @@ class DashboardViewTests(TestCase):
|
||||
self.assertEqual(response.status_code, 200)
|
||||
claim.refresh_from_db()
|
||||
self.assertEqual(claim.project, project_new)
|
||||
self.assertTrue(
|
||||
claim.logs.filter(action=ClaimLog.Action.PROJECT_CHANGED, note__icontains="Project updated").exists()
|
||||
)
|
||||
|
||||
@@ -221,6 +221,12 @@ class ClaimDashboardView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||
to_status=claim.status,
|
||||
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())
|
||||
|
||||
def _handle_payment(self, request):
|
||||
|
||||
Binary file not shown.
@@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: claims-system 0.1\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"
|
||||
"Last-Translator: ChatGPT <noreply@example.com>\n"
|
||||
"Language-Team: English\n"
|
||||
@@ -160,6 +160,10 @@ msgstr "Status changed"
|
||||
msgid "Marked as paid"
|
||||
msgstr "Marked as paid"
|
||||
|
||||
#: claims/models.py:125
|
||||
msgid "Project changed"
|
||||
msgstr "Project changed"
|
||||
|
||||
#: claims/templates/claims/base.html:8
|
||||
msgid "Claims"
|
||||
msgstr "Claims"
|
||||
@@ -840,7 +844,7 @@ msgstr ""
|
||||
msgid "Kunde inte spara utläggen. Kontrollera formuläret."
|
||||
msgstr ""
|
||||
|
||||
#: claims/views.py:182 claims/views.py:231
|
||||
#: claims/views.py:182 claims/views.py:237
|
||||
#, fuzzy
|
||||
#| msgid "Ge behörighet att besluta 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
|
||||
#, python-format
|
||||
msgid "%(claim)s markerades som godkänd."
|
||||
msgstr ""
|
||||
msgstr "%(claim)s was marked as approved."
|
||||
|
||||
#: claims/views.py:211
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Ej markerad som betald"
|
||||
#, python-format
|
||||
msgid "%(claim)s markerades som nekad."
|
||||
msgstr "Not marked as paid"
|
||||
msgstr "%(claim)s was marked as rejected."
|
||||
|
||||
#: claims/views.py:228
|
||||
msgid "Project updated during decision."
|
||||
msgstr "Project updated during decision."
|
||||
|
||||
#: claims/views.py:234
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
msgstr "This claim is already marked as paid."
|
||||
|
||||
#: claims/views.py:250
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Ej markerad som betald"
|
||||
#: claims/views.py:256
|
||||
#, python-format
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: claims/views.py:363
|
||||
#: claims/views.py:369
|
||||
#, python-format
|
||||
msgid "Användaren %(user)s skapades."
|
||||
msgstr ""
|
||||
|
||||
#: claims/views.py:374
|
||||
#: claims/views.py:380
|
||||
msgid "Du kan inte ta bort din egen staff-status."
|
||||
msgstr ""
|
||||
|
||||
#: claims/views.py:380
|
||||
#: claims/views.py:386
|
||||
#, python-format
|
||||
msgid "Behörigheter uppdaterades för %(user)s."
|
||||
msgstr ""
|
||||
|
||||
#: claims/views.py:382
|
||||
#: claims/views.py:388
|
||||
#, fuzzy
|
||||
#| msgid "Justera behörigheter"
|
||||
msgid "Kunde inte uppdatera behörigheter."
|
||||
msgstr "Adjust permissions"
|
||||
|
||||
#: claims/views.py:392
|
||||
#: claims/views.py:398
|
||||
msgid "Du kan inte ta bort ditt eget konto."
|
||||
msgstr ""
|
||||
|
||||
#: claims/views.py:394
|
||||
#: claims/views.py:400
|
||||
msgid "Du kan inte ta bort en superuser via detta gränssnitt."
|
||||
msgstr ""
|
||||
|
||||
#: claims/views.py:397
|
||||
#: claims/views.py:403
|
||||
#, fuzzy
|
||||
#| msgid "Användare"
|
||||
msgid "Användaren togs bort."
|
||||
msgstr "Users"
|
||||
|
||||
#: claims/views.py:400
|
||||
#: claims/views.py:406
|
||||
msgid "Okänd åtgärd."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user