Skip to content

Commit 092f551

Browse files
committed
added student_detail page for guest users
1 parent 2dff43d commit 092f551

File tree

3 files changed

+67
-21
lines changed

3 files changed

+67
-21
lines changed

django_school/classroom/templates/classroom/students/student_detail.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
{% load quiz_extras %}
44

55
{% block content %}
6-
{% include 'classroom/students/_header.html' with active='students' %}
6+
{% if request.user.is_authenticated %}
7+
{% include 'classroom/students/_header.html' with active='students' %}
8+
{% else %}
9+
{% include 'classroom/_guest_header.html' with active='students' %}
10+
{% endif %}
711

812
<div class="row">
913
<div class="col-md-4">

django_school/classroom/tests.py

Lines changed: 61 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
from django.test import TestCase, Client
22

33
from django.urls import reverse
4+
from django.template import Template, Context
5+
6+
7+
from classroom.models import Student
48

59
class LoginPageTest(TestCase):
610
fixtures = ["datas.json"]
711

812
def setUp(self):
913
self.client = Client()
14+
self.student = Student.objects.get(user__username = 'student')
1015

1116
def test_login_page_returns_correct_html(self):
1217
loginurl = reverse('login')
@@ -32,7 +37,34 @@ def test_login_as_teacher(self):
3237
# self.assertEqual(response.redirect_chain[1][0],reverse('teachers:quiz_change_list'))
3338
# self.assertIn(b'My Quizzes', response.content)
3439

35-
40+
def test_guest_user_can_access_quiz_list(self):
41+
home_url = reverse('home')
42+
response = self.client.get(home_url)
43+
student_list_url = reverse('students:student_list')
44+
about_url = reverse('about')
45+
46+
# there is tab view in homepage and check there is quiz list url in home page
47+
48+
tabs = f'''
49+
<ul class="nav nav-tabs mb-3">
50+
<li class="nav-item"><a class="nav-link active" href="{home_url}">Quizzes</a></li>
51+
<li class="nav-item"><a class="nav-link" href="{student_list_url}">Students</a></li>
52+
<li class="nav-item"><a class="nav-link" href="{about_url}">About</a></li>
53+
</ul>'''
54+
55+
self.assertInHTML(tabs, response.content.decode())
56+
57+
quiz1 = '''<tr>
58+
<td class="align-middle">World War 1</td>
59+
<td class="align-middle d-none d-sm-table-cell"><span class="badge badge-primary" style="background-color: #ffc107">History</span></td>
60+
<td class="align-middle d-none d-sm-table-cell">4</td>
61+
<td class="text-right" data-orderable="false">
62+
<a href="/students/quiz/1/" class="btn btn-primary">Start quiz</a>
63+
</td>
64+
</tr>
65+
'''
66+
self.assertInHTML(quiz1, response.content.decode())
67+
3668
def test_guest_user_can_access_student_list(self):
3769
home_url = reverse('home')
3870
student_list_url = reverse('students:student_list')
@@ -65,31 +97,41 @@ def test_guest_user_can_access_student_list(self):
6597
'''
6698
self.assertInHTML(student_search_form, response.content.decode())
6799

100+
101+
# test students listed in the page
102+
student_detail_url = reverse('students:student_detail', kwargs={'student':self.student.pk})
103+
68104

69-
def test_guest_user_can_access_quiz_list(self):
105+
gravatar_url = Template('''
106+
{% load quiz_extras %}
107+
<img class="mr-3" src="{{ student.user.username|gravatar_url:50 }}" alt="{{student.user.get_full_name}}">
108+
''').render(Context({'student':self.student}))
109+
110+
student_info = f'''
111+
<div class="col-sm-3">
112+
<div class="media">
113+
<a href="{student_detail_url}">{gravatar_url}</a>
114+
<div class="media-body" style="font-size: 12px">
115+
<a href="{student_detail_url}">{self.student.user.username}</a><br>
116+
<strong>0</strong><br>
117+
</div>
118+
</div>
119+
'''
120+
self.assertInHTML(student_info, response.content.decode())
121+
122+
def test_guest_user_can_access_student_detail(self):
70123
home_url = reverse('home')
71-
response = self.client.get(home_url)
72124
student_list_url = reverse('students:student_list')
73125
about_url = reverse('about')
74-
75-
# there is tab view in homepage and check there is quiz list url in home page
126+
127+
student_detail_url = reverse('students:student_detail', kwargs={'student':self.student.pk})
128+
response = self.client.get(student_detail_url)
76129

77130
tabs = f'''
78131
<ul class="nav nav-tabs mb-3">
79-
<li class="nav-item"><a class="nav-link active" href="{home_url}">Quizzes</a></li>
80-
<li class="nav-item"><a class="nav-link" href="{student_list_url}">Students</a></li>
132+
<li class="nav-item"><a class="nav-link" href="{home_url}">Quizzes</a></li>
133+
<li class="nav-item"><a class="nav-link active" href="{student_list_url}">Students</a></li>
81134
<li class="nav-item"><a class="nav-link" href="{about_url}">About</a></li>
82135
</ul>'''
83-
84136
self.assertInHTML(tabs, response.content.decode())
85-
86-
quiz1 = '''<tr>
87-
<td class="align-middle">World War 1</td>
88-
<td class="align-middle d-none d-sm-table-cell"><span class="badge badge-primary" style="background-color: #ffc107">History</span></td>
89-
<td class="align-middle d-none d-sm-table-cell">4</td>
90-
<td class="text-right" data-orderable="false">
91-
<a href="/students/quiz/1/" class="btn btn-primary">Start quiz</a>
92-
</td>
93-
</tr>
94-
'''
95-
self.assertInHTML(quiz1, response.content.decode())
137+

django_school/classroom/views/students.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ def get_queryset(self):
169169
queryset = queryset.filter(user__username__icontains = query)
170170
return queryset
171171

172-
@method_decorator([login_required, student_required], name='dispatch')
172+
# @method_decorator([login_required, student_required], name='dispatch')
173173
class StudentDetail(View):
174174
"""Show Details of a Student"""
175175
def get(self, request, **kwargs):

0 commit comments

Comments
 (0)