Skip to content

Commit 2300301

Browse files
Restrict project eval page to peer review state
1 parent 9d37736 commit 2300301

3 files changed

Lines changed: 48 additions & 1 deletion

File tree

courses/tests/test_noindex.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ def test_project_list_has_noindex(self):
8888

8989
def test_project_eval_has_noindex(self):
9090
"""Test that project evaluation page has noindex meta tag."""
91+
self.project.state = ProjectState.PEER_REVIEWING.value
92+
self.project.save()
93+
9194
self.client.login(
9295
username=self.credentials["username"],
9396
password=self.credentials["password"]

courses/tests/test_project_eval.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,12 @@ def test_eval_view_authenticated_no_submission(self):
551551

552552
self.assertContains(
553553
response,
554-
"you did not submit your project",
554+
"Because you did not submit your project, you cannot participate in peer review.",
555+
status_code=200,
556+
)
557+
self.assertNotContains(
558+
response,
559+
"Mandatory progress",
555560
status_code=200,
556561
)
557562

@@ -584,6 +589,33 @@ def test_eval_view_authenticated_with_submission(self):
584589
status_code=200,
585590
)
586591

592+
def test_eval_view_redirects_when_project_is_not_peer_reviewing(self):
593+
"""Test that eval view is only available during peer review."""
594+
self.project.state = ProjectState.COMPLETED.value
595+
self.project.save()
596+
597+
self.client.login(**credentials)
598+
599+
url = reverse(
600+
"projects_eval",
601+
args=[self.course.slug, self.project.slug],
602+
)
603+
604+
response = self.client.get(url, follow=True)
605+
606+
self.assertRedirects(
607+
response,
608+
reverse(
609+
"project",
610+
args=[self.course.slug, self.project.slug],
611+
),
612+
)
613+
614+
messages = list(response.context["messages"])
615+
self.assertTrue(
616+
any("not in peer review" in str(message) for message in messages)
617+
)
618+
587619
def test_list_view_authenticated_no_submission(self):
588620
"""Test that list view doesn't show Add to Evaluation button when user hasn't submitted their project"""
589621
self.project.state = ProjectState.PEER_REVIEWING.value

courses/views/project.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,18 @@ def projects_eval_view(request, course_slug, project_slug):
212212
Project, course=course, slug=project_slug
213213
)
214214

215+
if project.state != ProjectState.PEER_REVIEWING.value:
216+
messages.error(
217+
request,
218+
"This project is not in peer review, so evaluations are not available.",
219+
extra_tags="project",
220+
)
221+
return redirect(
222+
"project",
223+
course_slug=course.slug,
224+
project_slug=project.slug,
225+
)
226+
215227
user = request.user
216228
is_authenticated = user.is_authenticated
217229

0 commit comments

Comments
 (0)