def test_get_current_group(self): self.request.COOKIES['current_group'] = '' self.assertEqual(get_current_group(self.request), None) self.request.COOKIES['current_group'] = '1234567' self.assertEqual(get_current_group(self.request), None) group = Group.objects.get(pk=1) self.request.COOKIES['current_group'] = str(group.pk) self.assertEqual(get_current_group(self.request), group)
def test_get_current_group(self): request = HttpRequest() request.COOKIES['current_group'] = '' self.assertEqual(None, get_current_group(request)) request.COOKIES['current_group'] = '12345' self.assertEqual(None, get_current_group(request)) group = Group.objects.filter(title='Group1')[0] request.COOKIES['current_group'] = str(group.id) self.assertEqual(group, get_current_group(request))
def test_get_current_group(self): request = HttpRequest() request.COOKIES['current_group'] = '' self.assertEquals(None, get_current_group(request)) request.COOKIES['current_group'] = '123245' self.assertEquals(None, get_current_group(request)) group = Group.objects.filter(title='Group1')[0] request.COOKIES['current_group'] = str(group.id) self.assertEquals(group, get_current_group(request)) group = Group.objects.filter(title='Group2')[0] request.COOKIES['current_group'] = str(group.id) self.assertEquals(group, get_current_group(request))
def test_get_current_group(self): # prepare request object to pass to utility function request = HttpRequest() # test with no group set in cookie request.COOKIES['current_group'] = '' self.assertEqual(None, get_current_group(request)) # test with invalid group id request.COOKIES['current_group'] = '12345' self.assertEqual(None, get_current_group(request)) # test with proper group identificator group = Group.objects.filter(title='Group2')[0] request.COOKIES['current_group'] = str(group.id) self.assertEqual(group, get_current_group(request))
def test_get_current_group(self): # prepare request object to pass to utility function request = HttpRequest() # test with no group set in cookie request.COOKIES['current_group'] = '' self.assertEqual(None, get_current_group(request)) # test with invalid group id request.COOKIES['current_group'] = '12345' self.assertEqual(None, get_current_group(request)) # test with proper group identificator group = Group.objects.filter(title='Group1')[0] request.COOKIES['current_group'] = str(group.id) self.assertEqual(group, get_current_group(request))
def test_get_current_group(self): request = HttpRequest() # check with no cookie set self.assertEqual(get_current_group(request), None) # check with invalid cookie request.COOKIES['current_group'] = '12345' self.assertEqual(get_current_group(request), None) # check with valid cookie request.COOKIES['current_group'] = str(self.group.id) self.assertEqual(get_current_group(request), self.group)
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) current_group = get_current_group(self.request) if current_group: groups = Group.objects.filter(title=current_group) else: groups = Group.objects.all() # try to order groups list order_by = self.request.GET.get('order_by', '') if order_by in ('title', 'leader', 'id'): if order_by == 'leader': order_by = 'leader__first_name' groups = groups.order_by(order_by) if self.request.GET.get('reverse', '') == '1': groups = groups.reverse() else: groups = groups.order_by('title') context = paginate(groups, 10, self.request, context, var_name='groups') return context
def test_get_current_group(self): # prepare a request object to pass it to utility function request = HttpRequest() # test with no group in cookie request.COOKIES['current_group'] = "" self.assertEqual(None, get_current_group(request)) # test with invalid group id request.COOKIES['current_group'] = "12345" self.assertEqual(None, get_current_group(request)) # test with valid group id group = Group.objects.filter(title="Group1")[0] request.COOKIES['current_group'] = str(group.id) self.assertEqual(group, get_current_group(request))
def get_queryset(self): current_group = get_current_group(self.request) if current_group: queryset = Student.objects.filter(student_group=current_group) else: queryset = Student.objects.all() order_by = self.request.GET.get('order_by', 'id') if order_by in ('id', 'last_name', 'first_name', 'ticket'): queryset = queryset.order_by(order_by) if self.request.GET.get('reverse', '') == '1': queryset = queryset.reverse() return queryset
def get_queryset(self): current_group = get_current_group(self.request) if current_group: queryset = Exam.objects.filter(group=current_group) else: queryset = Exam.objects.all() order_by = self.request.GET.get('order_by', '') if order_by in ('subject', 'teacher', 'group', 'date'): queryset = queryset.order_by(order_by) if self.request.GET.get('reverse', '') == '1': queryset = queryset.reverse() return queryset
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) current_group = get_current_group(self.request) if current_group: exams = Exam.objects.filter(exams_group=current_group) else: exams = Exam.objects.all() # try to order exams list order_by = self.request.GET.get('order_by', '') if order_by in ('exams_name', 'exams_date', 'professor', 'id'): exams = exams.order_by(order_by) if self.request.GET.get('reverse', '') == '1': exams = exams.reverse() else: exams = exams.order_by('exams_date') # paginate exams context = paginate(exams, 10, self.request, context, var_name='exams') return context
def students_list(request): # check if we need to show only one group of students current_group = get_current_group(request) if current_group: students = Student.objects.filter(student_group=current_group) else: # otherwise show all students students = Student.objects.all() # try to order students list order_by = request.GET.get('order_by', '') if order_by in ('last_name', 'first_name', 'ticket'): students = students.order_by(order_by) if request.GET.get('reverse', '') == '1': students = students.reverse() # apply pagination, 3 students per page context = paginate(students, 8, request, {}, var_name='students') return render(request, 'students/students_list.html', context)
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) current_group = get_current_group(self.request) if current_group: students = Student.objects.filter(student_group=current_group) else: students = Student.objects.all() # try to order students list order_by = self.request.GET.get('order_by', '') if order_by in ('last_name', 'first_name', 'ticket', 'id'): students = students.order_by(order_by) if self.request.GET.get('reverse', '') == '1': students = students.reverse() else: students = students.order_by('last_name') context = paginate(students, 10, self.request, context, var_name='students') return context
def get_context_data(self, **kwargs): # get context data from TemplateView class context = super(JournalView, self).get_context_data(**kwargs) # check if we need to display some specific month if self.request.GET.get('month'): month = datetime.strptime(self.request.GET['month'], '%Y-%m-%d' ).date() else: # otherwise just displaying current month data today = datetime.today() month = date(today.year, today.month, 1) # calculate current, previous and next month details; # we need this for month navigation element in template next_month = month + relativedelta(months=1) prev_month = month - relativedelta(months=1) context['prev_month'] = prev_month.strftime('%Y-%m-%d') context['next_month'] = next_month.strftime('%Y-%m-%d') context['year'] = month.year context['month_verbose'] = month.strftime('%B') # we'll use this variable in students pagination context['cur_month'] = month.strftime('%Y-%m-%d') # prepare variable for template to generate # journal table header elements myear, mmonth = month.year, month.month number_of_days = monthrange(myear, mmonth)[1] context['month_header'] = [{'day': d, 'verbose': day_abbr[weekday(myear, mmonth, d)][:2]} for d in range(1, number_of_days+1)] # get all students from database, or just one if we need to # display journal for one student; also check if we need to # filter by group current_group = get_current_group(self.request) if current_group: queryset = Student.objects.filter(student_group=current_group ).order_by('last_name') elif kwargs.get('pk'): queryset = [Student.objects.get(pk=kwargs['pk'])] else: queryset = Student.objects.all().order_by('last_name') # url to update student presence, for form post update_url = reverse('journal') # go over all students and collect data about presence # during selected month students = [] for student in queryset: # try to get journal object by month selected # month and current student try: journal = MonthJournal.objects.get(student=student, date=month) except Exception: journal = None # fill in days presence list for current student days = [] for day in range(1, number_of_days+1): days.append({ 'day': day, 'present': journal and getattr(journal, 'present_day%d' % day, False) or False, 'date': date(myear, mmonth, day).strftime( '%Y-%m-%d'), }) # prepare metadata for current student students.append({ 'fullname': u'%s %s' % (student.last_name, student.first_name), 'days': days, 'id': student.id, 'update_url': update_url, }) # apply pagination, 10 students per page context = paginate(students, 10, self.request, context, var_name='students') # finally return updated context # with paginated students return context