def handle(self, *args, **options):
     if options['infinite']:
         while True:
             UserExamination.fixed_expired()
             time.sleep(60)
     else:
         UserExamination.fixed_expired()
예제 #2
0
def user_examination_list_view(request):
    context = {
        'user_examinations': UserExamination.get_for_user(request.user.id).filter(finished_at__isnull=True),
        'user_examinations_finished': UserExamination.get_for_user(request.user).filter(finished_at__isnull=False),
        'title': 'Список персональных аттестаций'
    }
    return render(request, 'core/examinations.html', context)
예제 #3
0
    def test_user_examination_fixed_expired(self):
        department = Department.objects.create(name='test dep')
        examination = Examination.objects.create(name='test exam', department=department)
        user = User.objects.create(username='******', email='*****@*****.**')
        department.employees.add(user)

        available_from = datetime.datetime.now() - datetime.timedelta(days=2)
        complete_until = datetime.datetime.now() - datetime.timedelta(days=1)
        user_examination = UserExamination.objects.create(
            examination=examination, user=user, available_from=available_from, complete_until=complete_until,
        )

        UserExamination.fixed_expired()

        self.assertIsNotNone(UserExamination.objects.get(id=user_examination.id).finished_at)
예제 #4
0
    def test_scheduler_check_user_examinations(self):
        department = Department.objects.create(name='test dep')
        examination = Examination.objects.create(name='test exam', department=department)

        user = User.objects.create(username='******', email='*****@*****.**')
        department.employees.add(user)

        self.assertEqual(UserExamination.get_for_user(user).count(), 0)

        scheduler = Scheduler.objects.create(
            examination=examination, count=1, period=1,
            unit=Scheduler.WEEK_UNIT_CHOICE, is_active=True
        )
        scheduler.departments.add(department)

        scheduler.check_user_examinations()

        self.assertEqual(UserExamination.get_for_user(user).count(), 1)
예제 #5
0
    def test_user_examination_fixed_started_one(self):
        department = Department.objects.create(name='test dep')
        examination = Examination.objects.create(name='test exam', department=department)
        question = Question.objects.create(examination=examination)
        question1 = Question.objects.create(examination=examination)
        question2 = Question.objects.create(examination=examination)
        user = User.objects.create(username='******', email='*****@*****.**')
        department.employees.add(user)

        available_from = datetime.datetime.now() - datetime.timedelta(days=2)
        complete_until = datetime.datetime.now() - datetime.timedelta(days=1)
        user_examination = UserExamination.objects.create(
            examination=examination, user=user, available_from=available_from, complete_until=complete_until,
            started_at=available_from, must_finished_at=complete_until
        )

        UserExamination.fixed_started()

        self.assertIsNotNone(UserExamination.objects.get(id=user_examination.id).finished_at)
        self.assertEqual(UserExaminationQuestionLog.objects.count(), 3)
예제 #6
0
 def get_user_examination(self):
     if not self._user_examination:
         self._user_examination = UserExamination.get_for_user(
             self.request.user, id=self.kwargs['user_examination_id'], finished_at__isnull=True
         ).get()
     return self._user_examination
예제 #7
0
 def get_queryset(self):
     if self.request.user.is_superuser or self.request.user.is_staff:  # todo is_staff and department owner
         return super(UserExaminationDetailView, self).get_queryset()
     else:
         return UserExamination.get_for_user(self.request.user)
예제 #8
0
 def get_queryset(self):
     if self.request.user.is_superuser or self.request.user.is_staff:
         return super(UserExaminationDetailView, self).get_queryset()
     else:
         return UserExamination.get_for_user(self.request.user)