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")
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})"

View File

@@ -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()
)

View File

@@ -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):