Merge branch 'develop'
This commit is contained in:
commit
fd11adbc4c
@ -19,7 +19,7 @@ class Instructor(models.Model):
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('user-detail', kwargs={'pk': self.pk})
|
||||
return reverse('account-detail', kwargs={'pk': self.pk})
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.user.first_name} {self.user.last_name}'
|
||||
@ -34,7 +34,7 @@ class Student(models.Model):
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('user-detail', kwargs={'pk': self.pk})
|
||||
return reverse('account-detail', kwargs={'pk': self.pk})
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.student_number}: {self.user.first_name} {self.user.last_name}'
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<tr>
|
||||
<td>{{ user.username }}</td>
|
||||
<td>{{user.first_name}} {{user.last_name}}</td>
|
||||
<td><a href="{% url 'user-detail' user.id %}">Update</a></td>
|
||||
<td><a href="{% url 'account-detail' user.id %}">Update</a></td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr><td>No users yet.</td></tr>
|
||||
|
||||
@ -1,3 +1,108 @@
|
||||
from django.test import TestCase
|
||||
import json
|
||||
from django.test import TestCase, Client
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.contrib.auth.models import User
|
||||
from .models import Department, Instructor, Student
|
||||
|
||||
# Create your tests here.
|
||||
class TestModels(TestCase):
|
||||
def setUp(self):
|
||||
self.peter = User.objects.create_user('Peter Templer', 'peter@testing.com', 'peterspassword321')
|
||||
self.nick = User.objects.create_user('Nick Jenkins', 'nick@testing.com', 'nickspassword321')
|
||||
self.department = Department.objects.create(name = "Blandings Castle")
|
||||
self.student = Student.objects.create(
|
||||
user = self.peter,
|
||||
student_number = 357950,
|
||||
department = self.department,
|
||||
)
|
||||
self.instructor = Instructor.objects.create(
|
||||
user = self.nick,
|
||||
department = self.department,
|
||||
)
|
||||
|
||||
def test_student_user_relationship(self):
|
||||
self.assertEquals(self.peter, self.student.user)
|
||||
|
||||
def test_student_get_absolute_url(self):
|
||||
url = self.student.get_absolute_url()
|
||||
self.assertEquals(url, '/accounts/1/')
|
||||
|
||||
def test_instructor_user_relationship(self):
|
||||
self.assertEquals(self.nick, self.instructor.user)
|
||||
|
||||
def test_instructor_get_absolute_url(self):
|
||||
url = self.instructor.get_absolute_url()
|
||||
self.assertEquals(url, '/accounts/1/')
|
||||
|
||||
class TestViews(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
self.reverse_urls = {
|
||||
'list': reverse('account-list'),
|
||||
'create': reverse('account-create'),
|
||||
'detail': reverse('account-detail', args=['1']),
|
||||
'update': reverse('account-update', args=['1']),
|
||||
'delete': reverse('account-delete', args=['1'])
|
||||
}
|
||||
|
||||
self.peter = User.objects.create_user('Peter Templer', 'peter@testing.com', 'peterspassword321')
|
||||
self.nick = User.objects.create_user('Nick Jenkins', 'nick@testing.com', 'nickspassword321')
|
||||
self.department = Department.objects.create(name = "Blandings Castle")
|
||||
self.student = Student.objects.create(
|
||||
user = self.peter,
|
||||
student_number = 357950,
|
||||
department = self.department,
|
||||
)
|
||||
self.instructor = Instructor.objects.create(
|
||||
user = self.nick,
|
||||
department = self.department,
|
||||
)
|
||||
self.client.force_login(self.peter)
|
||||
|
||||
def test_students_list(self):
|
||||
response = self.client.get(self.reverse_urls['list'])
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'accounts/account_list.html')
|
||||
|
||||
def test_students_create_GET(self):
|
||||
response = self.client.get(self.reverse_urls['create'])
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'accounts/account_form.html')
|
||||
|
||||
def test_students_create_POST(self):
|
||||
response = self.client.post(self.reverse_urls['create'], {
|
||||
'user': self.peter.id,
|
||||
'student_number': 357950,
|
||||
'department': self.department,
|
||||
}, follow=True)
|
||||
|
||||
self.assertRedirects(
|
||||
response,
|
||||
reverse('account-detail', args=[self.peter.id]),
|
||||
status_code=302,
|
||||
target_status_code=200,
|
||||
fetch_redirect_response=True
|
||||
)
|
||||
|
||||
def test_students_detail(self):
|
||||
response = self.client.get(self.reverse_urls['detail'])
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'accounts/account_detail.html')
|
||||
|
||||
def test_students_update_GET(self):
|
||||
response = self.client.get(self.reverse_urls['update'])
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'accounts/account_form.html')
|
||||
|
||||
def test_students_update_POST(self):
|
||||
pass
|
||||
|
||||
def test_student_delete(self):
|
||||
response = self.client.get(self.reverse_urls['delete'])
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'accounts/account_confirm_delete.html')
|
||||
|
||||
def test_student_delete(self):
|
||||
response = self.client.delete(self.reverse_urls['delete'], json.dumps({ 'id': 1 }))
|
||||
|
||||
self.assertEquals(response.status_code, 302)
|
||||
@ -1,3 +1,104 @@
|
||||
from django.test import TestCase
|
||||
from django.test import TestCase, Client
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.contrib.auth.models import User
|
||||
from accounts.models import Department, Instructor, Student
|
||||
from .models import Code, Period
|
||||
from .forms import AttendanceUpdateForm
|
||||
|
||||
# Code
|
||||
# student
|
||||
# station_number
|
||||
# Period
|
||||
# student
|
||||
# station_number
|
||||
|
||||
class CodeModelTests(TestCase):
|
||||
def setUp(self):
|
||||
self.peter = User.objects.create_user('Peter Templer', 'peter@testing.com', 'peterspassword321')
|
||||
self.nick = User.objects.create_user('Nick Jenkins', 'nick@testing.com', 'nickspassword321')
|
||||
self.department = Department.objects.create(name = "Blandings Castle")
|
||||
self.student = Student.objects.create(
|
||||
user = self.peter,
|
||||
student_number = 357950,
|
||||
department = self.department,
|
||||
)
|
||||
self.instructor = Instructor.objects.create(
|
||||
user = self.nick,
|
||||
department = self.department,
|
||||
)
|
||||
|
||||
self.code = Code.objects.create(student=self.student, station_number=22)
|
||||
|
||||
def test_code_qr_code_str(self):
|
||||
"""test_qr_code_str() returns a string joining on ':' and contains student_number"""
|
||||
self.assertEqual("357950:22", self.code.qr_code_str())
|
||||
|
||||
class TestForms(TestCase):
|
||||
def setUp(self):
|
||||
pass
|
||||
|
||||
def test_attendance_update_form(self):
|
||||
form = AttendanceUpdateForm(data={
|
||||
'qr_string': '357950:22'
|
||||
})
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
class TestPeriodViews(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
self.reverse_urls = {
|
||||
# 'list': reverse('period-list'),
|
||||
# 'create': reverse('period-create'),
|
||||
'detail': reverse('period-detail', args=['1']),
|
||||
'update': reverse('period-update', args=['1']),
|
||||
'delete': reverse('period-delete', args=['1'])
|
||||
}
|
||||
self.peter = User.objects.create_user('Peter Templer', 'peter@testing.com', 'peterspassword321')
|
||||
self.nick = User.objects.create_user('Nick Jenkins', 'nick@testing.com', 'nickspassword321')
|
||||
self.department = Department.objects.create(name = "Blandings Castle")
|
||||
self.student = Student.objects.create(
|
||||
user = self.peter,
|
||||
student_number = 357950,
|
||||
department = self.department,
|
||||
)
|
||||
self.instructor = Instructor.objects.create(
|
||||
user = self.nick,
|
||||
department = self.department,
|
||||
)
|
||||
self.period = Period.objects.create(
|
||||
student = self.student,
|
||||
station_number = 22,
|
||||
)
|
||||
self.client.force_login(self.peter)
|
||||
|
||||
# def test_period_create_GET(self):
|
||||
# response = self.client.get(self.reverse_urls['create'])
|
||||
# self.assertEquals(response.status_code, 200)
|
||||
# self.assertTemplateUsed(response, 'attendance/period_form.html')
|
||||
|
||||
# def test_period_create_POST(self):
|
||||
# response = self.client.post(self.reverse_urls['create'], {
|
||||
# 'student': self.student.id,
|
||||
# 'station_number': 22,
|
||||
# }, follow=True)
|
||||
|
||||
# self.assertRedirects(
|
||||
# response,
|
||||
# reverse('period-detail', args=[self.a_shift.id]),
|
||||
# status_code=302,
|
||||
# target_status_code=200,
|
||||
# fetch_redirect_response=True
|
||||
# )
|
||||
|
||||
def test_period_detail(self):
|
||||
response = self.client.get(self.reverse_urls['detail'])
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'attendance/period_detail.html')
|
||||
|
||||
def test_period_update_GET(self):
|
||||
response = self.client.get(self.reverse_urls['update'])
|
||||
self.assertEquals(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'attendance/period_form.html')
|
||||
|
||||
# Create your tests here.
|
||||
|
||||
@ -41,8 +41,10 @@ class AttendanceOverview(LoginRequiredMixin, TemplateView):
|
||||
).order_by('-clocked_in'
|
||||
).aggregate(total_duration=Sum('duration'))
|
||||
|
||||
hours = ""
|
||||
# Convert to hours floating point
|
||||
hours = round((total_duration['total_duration'].total_seconds() / 3600), 2)
|
||||
if hasattr(total_duration, 'total_duration'):
|
||||
hours = round((total_duration['total_duration'].total_seconds() / 3600), 2)
|
||||
|
||||
context['period_list'] = Period.objects.filter(
|
||||
student=self.request.user.student
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user