Beispiel #1
0
    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)
Beispiel #2
0
    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))
Beispiel #3
0
 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))
Beispiel #4
0
 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))
Beispiel #6
0
    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)
Beispiel #7
0
    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
Beispiel #8
0
    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))
Beispiel #9
0
 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
Beispiel #10
0
 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
Beispiel #11
0
    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
Beispiel #12
0
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)
Beispiel #13
0
    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
Beispiel #14
0
    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