Skip to content

Commit 4623781

Browse files
Move admin edit button from leaderboard to score breakdown page
1 parent e8850e7 commit 4623781

3 files changed

Lines changed: 58 additions & 5 deletions

File tree

courses/templates/courses/leaderboard.html

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ <h2>Your Record</h2>
3434
<a href="{% url 'leaderboard_score_breakdown' course_slug=course.slug enrollment_id=enrollment.id %}">
3535
{{ enrollment.display_name }}
3636
</a>
37-
{% if request.user.is_staff %}
38-
<a href="{% url 'cadmin_enrollment_edit' course_slug=course.slug enrollment_id=enrollment.id %}" class="badge badge-primary ml-2" title="Admin: Edit Enrollment">
39-
<i class="fas fa-cog"></i> Admin
40-
</a>
41-
{% endif %}
4237
</div>
4338
<div class="col-3 text-right">{{ enrollment.total_score }}</div>
4439
</div>

courses/templates/courses/leaderboard_score_breakdown.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ <h2>{{ enrollment.display_name }}</h2>
3333

3434
<p><strong>Total Score:</strong> {{ enrollment.total_score }}</p>
3535

36+
{% if request.user.is_staff %}
37+
<p>
38+
<a href="{% url 'cadmin_enrollment_edit' course_slug=enrollment.course.slug enrollment_id=enrollment.id %}" class="badge badge-primary" title="Admin: Edit Enrollment">
39+
<i class="fas fa-cog"></i> Admin
40+
</a>
41+
</p>
42+
{% endif %}
43+
3644
<h3 class="mt-4">Homework submissions</h3>
3745
{% for submission in submissions %}
3846
{% if submission.homework.is_scored %}

courses/tests/test_leaderboard.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from datetime import timedelta
66
from django.core.cache import cache
77

8+
from django.urls import reverse
9+
810
from courses.models import (
911
Course,
1012
Homework,
@@ -155,3 +157,51 @@ def test_leaderboard_cache_invalidation(self):
155157

156158
# Cache should be invalidated (None)
157159
self.assertIsNone(cache.get(cache_key))
160+
161+
def test_score_breakdown_admin_button_visible_for_staff(self):
162+
"""Test that admin edit button is visible on score breakdown page for staff users"""
163+
enrollment = self.create_student("student1")
164+
admin_user = User.objects.create_user(username="admin", is_staff=True)
165+
166+
self.client.force_login(admin_user)
167+
url = reverse("leaderboard_score_breakdown", kwargs={
168+
"course_slug": self.course.slug,
169+
"enrollment_id": enrollment.id,
170+
})
171+
response = self.client.get(url)
172+
173+
self.assertEqual(response.status_code, 200)
174+
admin_edit_url = reverse("cadmin_enrollment_edit", kwargs={
175+
"course_slug": self.course.slug,
176+
"enrollment_id": enrollment.id,
177+
})
178+
self.assertContains(response, admin_edit_url)
179+
self.assertContains(response, "fa-cog")
180+
181+
def test_score_breakdown_admin_button_hidden_for_regular_user(self):
182+
"""Test that admin edit button is hidden on score breakdown page for regular users"""
183+
enrollment = self.create_student("student1")
184+
regular_user = User.objects.create_user(username="regular", is_staff=False)
185+
186+
self.client.force_login(regular_user)
187+
url = reverse("leaderboard_score_breakdown", kwargs={
188+
"course_slug": self.course.slug,
189+
"enrollment_id": enrollment.id,
190+
})
191+
response = self.client.get(url)
192+
193+
self.assertEqual(response.status_code, 200)
194+
self.assertNotContains(response, "fa-cog")
195+
196+
def test_score_breakdown_admin_button_hidden_for_anonymous(self):
197+
"""Test that admin edit button is hidden on score breakdown page for anonymous users"""
198+
enrollment = self.create_student("student1")
199+
200+
url = reverse("leaderboard_score_breakdown", kwargs={
201+
"course_slug": self.course.slug,
202+
"enrollment_id": enrollment.id,
203+
})
204+
response = self.client.get(url)
205+
206+
self.assertEqual(response.status_code, 200)
207+
self.assertNotContains(response, "fa-cog")

0 commit comments

Comments
 (0)