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)
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
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, })