Skip to content

Commit 60eb6ee

Browse files
committed
Stop submitted reports from having date edited.
1 parent 8d9ad0d commit 60eb6ee

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

hypha/apply/projects/reports/tests/test_views.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,20 @@ def test_duplicate_date_rejected(self):
772772
report_a.refresh_from_db()
773773
assert report_a.end_date == today
774774

775+
def test_submitted_report_cannot_be_edited(self):
776+
today = timezone.now().date()
777+
report = ReportFactory(
778+
project__status=INVOICING_AND_REPORTING,
779+
is_submitted=True,
780+
end_date=today,
781+
)
782+
response = self.post_page(
783+
report, {"end_date": (today + relativedelta(days=7)).isoformat()}
784+
)
785+
assert response.status_code == 404
786+
report.refresh_from_db()
787+
assert report.end_date == today
788+
775789
def test_applicant_cannot_access(self):
776790
report = ReportFactory(project__status=INVOICING_AND_REPORTING)
777791
self.client.force_login(ApplicantFactory())

hypha/apply/projects/reports/views.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from django.contrib.auth.decorators import login_required
1515
from django.contrib.auth.mixins import UserPassesTestMixin
1616
from django.core.exceptions import PermissionDenied
17-
from django.http import HttpResponseRedirect
17+
from django.http import Http404, HttpResponseRedirect
1818
from django.shortcuts import get_object_or_404, redirect, render
1919
from django.urls import reverse
2020
from django.utils.decorators import method_decorator
@@ -584,6 +584,9 @@ def dispatch(self, request, *args, **kwargs):
584584
"update_report_config", self.request.user, self.report.project
585585
):
586586
raise PermissionDenied(self.permission_denied_message)
587+
# A submitted report's period is fixed; its due date can't be changed.
588+
if self.report.current:
589+
raise Http404(_("A submitted report's due date cannot be edited."))
587590
return super().dispatch(request, *args, **kwargs)
588591

589592
def get(self, request, *args, **kwargs):

0 commit comments

Comments
 (0)