コード例 #1
0
ファイル: judges.py プロジェクト: Bjwebb/CUCaTS-Puzzlehunt
 def add_player(username, first_name, last_name, team):
     if username: 
         try:
             user = User.objects.get(username=username)
         except User.DoesNotExist:
             user = User(username=username)
         user.first_name = first_name
         user.last_name = last_name
         user.save()
         team.members.add(user)
コード例 #2
0
ファイル: user.py プロジェクト: Boburbeck/alpha
    def update(self, instance: User, validated_data):
        username = validated_data.get('username', None)
        first_name = validated_data.get('first_name')
        last_name = validated_data.pop('last_name', None)

        instance.username = username
        instance.first_name = first_name
        instance.last_name = last_name

        instance.save()
        return instance
コード例 #3
0
ファイル: views.py プロジェクト: halmetov/OnlineTest
def indexHandler(request):
    current_user = request.session.get('user_id', None)
    if request.session.get('endtest', 0):
        request.session['test_question_id'] = None
        request.session['active_test_id'] = None
        request.session['endtest'] = 0

    active_test_id = request.session.get('active_test_id', None)
    test_question_id = request.session.get('test_question_id', None)
    test_question = None
    choosen_variant_info = None
    all_user_choosen_variants = []
    endtest = None
    random_variants = get_random_variants()
    active_test_questions = []
    classs = []
    active_test = None
    tests = []
    subject_id = int(request.GET.get('subject_id', 0))
    subjects = Subject.objects.all()
    left_time_min = 0
    left_time_sec = 0
    left_time = 0
    if current_user:
        current_user = User.objects.get(id=int(current_user))
        tests = Test.objects.filter(clas__id=current_user.clas.id)
        if subject_id:
            tests = Test.objects.filter(clas__id=current_user.clas.id).filter(
                subject__id=subject_id)

        if active_test_id:
            active_test = UserTestItem.objects.get(id=int(active_test_id))
            ac_questions = active_test.questions and active_test.questions.split(
                ',') or []
            left_time = active_test.stop_date - timezone.now()
            left_time = int(left_time.total_seconds())
            if left_time < 0:
                left_time = 0
            left_time_min = int(left_time / 60)
            left_time_sec = int(left_time % 60)
            active_test_questions = []
            if ac_questions:
                for i in range(len(ac_questions)):
                    new_ac_question = TestItem.objects.get(
                        id=int(ac_questions[i]))
                    active_test_questions.append(new_ac_question)
                if test_question_id:
                    test_question_id = int(test_question_id)
                    test_question = TestItem.objects.get(id=test_question_id)
                elif active_test_questions:
                    test_question = TestItem.objects.get(
                        id=int(ac_questions[0]))
                    test_question_id = test_question.id
                if test_question_id:
                    utvs = UserTestItemVariant.objects.filter(
                        user_test_item__id=active_test.id).filter(
                            test_item__id=test_question.id)
                    all_user_choosen_variants = []
                    utvs2 = UserTestItemVariant.objects.filter(
                        user_test_item__id=active_test.id)
                    for utv in utvs2:
                        all_user_choosen_variants.append(int(utv.test_item.id))
                    if utvs:
                        choosen_variant_info = utvs[0]
            else:
                active_test_questions = TestItem.objects.filter(
                    test__id=int(active_test.test.id))
                if test_question_id:
                    test_question_id = int(test_question_id)
                    test_question = TestItem.objects.get(id=test_question_id)
                elif active_test_questions:
                    test_question = active_test_questions[0]
                    test_question_id = test_question.id
                if test_question_id:
                    utvs = UserTestItemVariant.objects.filter(
                        user_test_item__id=active_test.id).filter(
                            test_item__id=test_question.id)
                    all_user_choosen_variants = []
                    utvs2 = UserTestItemVariant.objects.filter(
                        user_test_item__id=active_test.id)
                    for utv in utvs2:
                        all_user_choosen_variants.append(int(utv.test_item.id))
                    if utvs:
                        choosen_variant_info = utvs[0]

        if request.POST:
            action = request.POST.get('action', '')
            if action == 'start_test':
                test_id = int(request.POST.get('test_id', 0))
                if test_id:
                    test_questions = TestItem.objects.filter(
                        test__id=int(test_id))
                    tqv = []
                    for tq in test_questions:
                        tqv.append(tq.id)
                    new_res = get_random_question_variants(tqv)
                    new_res2 = ","
                    new_res = new_res2.join(new_res)

                    choosen_test = Test.objects.get(id=test_id)
                    new_user_test = UserTestItem()
                    new_user_test.start_date = timezone.now()
                    new_user_test.stop_date = timezone.now() + timedelta(
                        minutes=choosen_test.limit)
                    new_user_test.test = choosen_test
                    new_user_test.user = current_user
                    new_user_test.questions = new_res
                    new_user_test.save()
                    request.session['active_test_id'] = new_user_test.id
                    active_test = new_user_test

                return JsonResponse({
                    'success': True,
                    'errorMsg': '',
                    '_success': True
                })
            elif action == 'choose_question':
                test_question_id = int(request.POST.get('test_question_id', 0))
                request.session['test_question_id'] = test_question_id
                return JsonResponse({
                    'success': True,
                    'errorMsg': '',
                    '_success': True
                })
            elif action == 'choose_variant':
                utvs = UserTestItemVariant.objects.filter(
                    user_test_item__id=active_test.id).filter(
                        test_item__id=test_question.id)
                if utvs:
                    utv = utvs[0]
                else:
                    utv = UserTestItemVariant()
                    utv.user_test_item = active_test
                    utv.test_item = test_question
                    utv.correct_variant = test_question.correct_answer
                utv.ball = 0
                utv.user_variant = int(request.POST.get('variant', 0))
                if utv.user_variant == utv.correct_variant:
                    utv.ball = 1
                utv.save()
                return JsonResponse({
                    'success': True,
                    'errorMsg': '',
                    '_success': True
                })
            elif action == 'endtest':
                active_test_questions = UserTestItemVariant.objects.filter(
                    user_test_item__id=active_test.id)
                s = 0
                for atq in active_test_questions:
                    if atq.user_variant == atq.correct_variant and atq.user_variant != 0:
                        s += 1
                active_test.count_question = len(active_test_questions)
                active_test.ball = s
                active_test.stop_date = timezone.now()
                active_test.save()
                request.session['endtest'] = 1
                return JsonResponse({
                    'success': True,
                    'errorMsg': '',
                    '_success': True
                })
            elif action == 'endalltest':
                all_user_tests = UserTestItem.objects.all()
                for aut in all_user_tests:
                    active_test_questions = UserTestItemVariant.objects.filter(
                        user_test_item__id=aut.id)
                    s = 0
                    for atq in active_test_questions:
                        if atq.user_variant == atq.correct_variant and atq.user_variant != 0:
                            s += 1
                    aut.count_question = len(active_test_questions)
                    aut.ball = s
                    #active_test.stop_date = timezone.now()
                    aut.save()
            elif action == 'coorect_true_variant':
                old_test_item_id = int(request.POST.get('old_test_item_id', 0))
                if old_test_item_id:
                    ti = TestItem.objects.get(id=old_test_item_id)
                    old_variants = UserTestItemVariant.objects.filter(
                        test_item__id=old_test_item_id)
                    for ov in old_variants:
                        ov.correct_variant = ti.correct_answer
                        ov.save()

    else:
        if request.POST:
            new_user = User()
            new_user.last_name = request.POST.get('ln', '')
            new_user.first_name = request.POST.get('fn', '')
            clas_id = int(request.POST.get('class', 0))
            if clas_id:
                new_user.clas = Class.objects.get(id=int(clas_id))
                tests = Test.objects.filter(clas__id=int(clas_id))
                old_user = User.objects.filter(
                    last_name=new_user.last_name).filter(
                        first_name=new_user.first_name).filter(
                            clas__id=int(clas_id))
                if old_user:
                    new_user = old_user[0]
                else:
                    new_user.save()
                request.session['user_id'] = new_user.id
                current_user = User.objects.get(id=int(new_user.id))
            else:
                current_user = None

        classs = Class.objects.all()

    return render(
        request, 'index.html', {
            'tests': tests,
            'classs': classs,
            'current_user': current_user,
            'active_test': active_test,
            'random_variants': random_variants,
            'active_test_questions': active_test_questions,
            'test_question': test_question,
            'choosen_variant_info': choosen_variant_info,
            'endtest': endtest,
            'left_time': left_time,
            'all_user_choosen_variants': all_user_choosen_variants,
            'left_time_min': left_time_min,
            'left_time_sec': left_time_sec,
            'subjects': subjects,
            'subject_id': subject_id,
        })