def update_quiz(request, pk, template_name='teachers/update/update_quiz.html'):
	quiz= get_object_or_404(Quiz, pk=pk)
	quizzes = repo.QuizRepository(Quiz)
	owner_id = quizzes.get_owner_id(pk)
	is_active = quizzes.is_active(pk)

	if request.user.id == owner_id and not is_active:
		questions = repo.QuestionRepository(Questions)
		sum_question_points = questions.sum_all_quiz_questions_points(pk)
		cur_quiz_points = quizzes.get_quiz_points(pk)

		form = QuizForm(request.POST or None, instance=quiz)
		if form.is_valid():
			quiz = form.save(commit=False)
			form_points_data = form.cleaned_data["max_points"]
			quiz.max_points = round(form_points_data, 1)
			if_points_changed = round(form_points_data - cur_quiz_points, 1)

			if if_points_changed != 0:
				course_id = quizzes.get_course_id(pk)
				all_q_points = quizzes.get_all_quiz_points(course_id)
				c_points = quizzes.get_course_points(pk)
				free_points = c_points - all_q_points + cur_quiz_points
				free_points = round(free_points, 1)

				if form_points_data > free_points:
					quiz.max_points = cur_quiz_points
					messages.error(request, 'Available course points: %f. '%free_points, extra_tags='alert')
				if sum_question_points > form_points_data:
					quiz.max_points = cur_quiz_points
					messages.error(request, 'Question points in this quiz are: %f. '%sum_question_points, extra_tags='alert')
			quiz.save()
			return HttpResponse(render_to_string('teachers/update/item_edit_form_success.html'))
		return render(request, template_name, {'form':form, 'id': pk, 'sum_questions_points': sum_question_points})
	raise Http404
def take_quiz(request, pk):
	qr = repo.QuizRepository(Quiz)
	test = helper.construct_quiz(pk)
	qsrr = repo.QuizSolveRecordRepository(QuizSolveRecord)
	cpr = repo.CourseParticipantsRepository(CourseParticipants)

	is_in_joined_courses = cpr.is_quiz_in_joined_active_courses(pk, request.user.id)
	if not is_in_joined_courses:
		raise Http404

	is_submitted = qsrr.if_quiz_is_submitted(pk, request.user.id)
	if is_submitted:
		raise Http404

	is_started = qsrr.check_if_started(pk, request.user.id)
	if(not is_started):
		raise Http404

	timer = qr.get_quiz_timer(pk)
	start_time = qsrr.get_start_time(pk, request.user.id)
	time = start_time + datetime.timedelta(minutes = timer)

	now = timezone.now()
	now = timezone.localtime(now)
	time_delta = (time - now)

	time_delta = time_delta.seconds / 60
	quiz_name =qr.get_name(pk)

	if time_delta > timer and timer != 0:
		raise Http404 #TODO page time is end

	return render(request, 'students/quiz_solve.html', {'tests': test, 'quiz_id': pk, 'timer': timer, 'minutes_left': time_delta, 'quiz_name': quiz_name})
	def  get(self, request):
		data = {
			'deleted': False
		}
		answersR = repo.AnswerRepository(Answers)
		ans_id = request.GET.get('id', None)
		quiz_id = answersR.get_quiz_id(ans_id)
		quiz = repo.QuizRepository(Quiz)
		owner_id = quiz.get_owner_id(quiz_id)
		questions = repo.QuestionRepository(Questions)
		question_id = answersR.get_question_id(ans_id)
		question_type = questions.get_question_type(question_id)
		answer_points = answersR.get_answer_points(ans_id)
		is_done = questions.get_done_status(question_id)

		is_deleted = False
		if request.user.id == owner_id:
			answersR.answer_delete(ans_id)
			is_deleted = True
			data = {
				'deleted': True
		}
		if is_deleted:
			if question_type != 'grammar':
				if is_done == True:
					if answer_points != 0:
						questions.update_is_done(question_id, False)
			else:
				answersRepo = repo.AnswerRepository(Answers)
				answers_count = answersRepo.get_answers_count(question_id)
				if is_done == True and answers_count == 0:
					questions.update_is_done(question_id, False)

		return JsonResponse(data)
def take_quiz_confirm(request, pk):
	qsrr = repo.QuizSolveRecordRepository(QuizSolveRecord)
	is_started = qsrr.check_if_started(pk, request.user.id)
	qr = repo.QuizRepository(Quiz)
	quiz = qr.get_by_id(pk)
	course_id = qr.get_course_id(pk) 

	cpr = repo.CourseParticipantsRepository(CourseParticipants)
	is_in_joined_courses = cpr.is_quiz_in_joined_active_courses(pk, request.user.id)
	if not is_in_joined_courses:
		raise Http404

	minutes_left = 0
	if quiz:
		if is_started:
			timer = quiz[0].timer_minutes
			if timer != 0:
				start_time = qsrr.get_start_time(pk, request.user.id)
				end_time = start_time + datetime.timedelta(minutes = timer)

				now = timezone.now()
				now = timezone.localtime(now)
				time_delta = (end_time - now)

				minutes_left = time_delta.seconds / 60
		else:
			minutes_left = quiz[0].timer_minutes
	return render(request, 'students/confirm/take_quiz_confirm.html', {'quiz': quiz, 'course_id': course_id, 'minutes_left': round(minutes_left), 'is_started': is_started})
def quiz_add(request, pk):
	course = get_object_or_404(Course, pk=pk, owner_id=request.user)
	courses = repo.CourseRepository(Course)
	c_points = courses.get_points(pk)
	quizzes = repo.QuizRepository(Quiz)
	all_q_points = quizzes.get_all_quiz_points(pk)
	free_points = c_points - all_q_points
	free_points = round(free_points, 1)

	if request.method == 'POST':
		form = QuizForm(request.POST)
		if form.is_valid():
			quiz = form.save(commit=False)
			quiz.course = course
			quiz.owner = request.user
			max_points = form.cleaned_data["max_points"]

			difference = round(max_points - free_points, 1)
			if(difference <= 0):
				quiz.max_points = round(max_points, 1)
				quiz.save()
				messages.success(request, 'You may now add question/options to the quiz.')
				return redirect('/teachers/course/%d/quizzes'%pk)
			else:
				messages.error(request, 'You put more points than you have left. Available points: %f'%free_points, extra_tags='alert')
	else:
		form = QuizForm()
	return render(request, 'teachers/add/quiz_add.html', {'course': course, 'form': form, 'free_points':free_points })
def view_course_quizzes(request, pk):
	quiz = repo.QuizRepository(Quiz)
	quizzes = quiz.get_by_user_course(request.user, pk)
	courses = repo.CourseRepository(Course)
	course_name, course_points = courses.get_name_and_points(pk)
	owner_id = courses.get_owner_id(pk)
	if(request.user.id == owner_id):
		return render(request, 'teachers/lists/quiz_list.html', {'quizzes': quizzes, 'course_id': pk, 'course_name': course_name, 'course_points': course_points})
	raise Http404
def save_checked_answers(request, pk, spk):
	quiz = repo.QuizRepository(Quiz)
	owner_id = quiz.get_owner_id(pk)
	course_id = quiz.get_course_id(pk)
	cpr = repo.CourseParticipantsRepository(CourseParticipants)
	is_participant = cpr.is_user_participant(spk, course_id)

	if request.user.id == owner_id and is_participant:
		new_points = request.POST['data']
		new_points = json.loads(new_points)

		quesrtr = repo.QuestionRepository(Questions)
		soar = repo.StudentOpenAnswersRepository(StudentOpenAnswers)
		qsrr = repo.QuizSolveRecordRepository(QuizSolveRecord)
		sgar = repo.StudentGrammarAnswersRepository(StudentGrammarAnswers)
		solve_info_id = qsrr.get_solve_info_id(pk, spk)

		#new_points[i]['name'] - id
		#new_points[i]['value'] - points
		sum_points = 0
		for i in range(1, len(new_points)):
			question_id = int(new_points[i]['name'])
			question_info = quesrtr.get_open_grammar_question_id_points(pk, question_id)
			if question_info != -1:
				if question_info['qtype'] == 'open':
					points = round(float(new_points[i]['value']), 1)
					open_question_points = float(question_info['points'])
					if points <= open_question_points:
						soar.update_answer_points(solve_info_id, question_id, points)
						sum_points += points
					else:
						soar.update_answer_points(solve_info_id, question_id, open_question_points)
						sum_points += open_question_points					
				else:
					if question_info['qtype'] == 'grammar':
						if isfloat(new_points[i]['value']):
							points = round(float(new_points[i]['value']), 1)
							grammar_points = float(question_info['points'])
							if points <= grammar_points:
								sgar.update_answer_points(solve_info_id, question_id, points)
								sum_points += points
							else:
								sgar.update_answer_points(solve_info_id, question_id, grammar_points)
								sum_points += grammar_points	
						else:
							sgar.update_answer_corrected(solve_info_id, question_id, new_points[i]['value'])


				
		student_points = qsrr.get_points(solve_info_id)
		qsrr.update_quiz_points_and_status(solve_info_id, student_points + sum_points, True)
		return JsonResponse({
			'success': True,
			'url': reverse('teachers:view_quiz_for_check', kwargs={'pk': pk}), #, args=[{'courses': courses}]
			})
	raise Http404
def view_quiz_for_check(request, pk):
	quiz = repo.QuizRepository(Quiz)
	owner_id = quiz.get_owner_id(pk)
	if request.user.id == owner_id:
		quiz_name = quiz.get_name(pk)
		qsr = repo.QuizSolveRecordRepository(QuizSolveRecord)
		quizzes = qsr.get_quizzes_and_students(pk, False)
		course_id  = quiz.get_course_id(pk)
		return render(request, 'teachers/lists/check_quiz_list.html', {'quizzes': quizzes, 'course_id': course_id, 'quiz_name': quiz_name})
	raise Http404
def quiz_preview(request, pk):
	qr = repo.QuizRepository(Quiz)
	owner_id = qr.get_owner_id(pk)
	if request.user.id == owner_id:
		test = construct_quiz_teacher(pk)
		quiz_name =qr.get_name(pk)
		course_id = qr.get_course_id(pk)
		return render(request, 'teachers/view/quiz_preview.html', {'tests': test, 'quiz_name': quiz_name, 'course_id': course_id})
	else:
		raise Http404
Exemple #10
0
def student_view_quiz_info(request, pk, template_name='students/quiz_info.html'):
	cpr = repo.CourseParticipantsRepository(CourseParticipants)
	is_in_joined_courses = cpr.is_quiz_in_joined_active_courses(pk, request.user.id)
	if not is_in_joined_courses:
		raise Http404

	quiz= get_object_or_404(Quiz, pk=pk)
	quizzesR = repo.QuizRepository(Quiz)
	owner_id = quizzesR.get_owner_id(pk)
	quizzes = quizzesR.get_by_id(pk)
	return render(request, template_name, {'id': pk, 'quizzes': quizzes})
Exemple #11
0
	def  get(self, request):
		quizR = repo.QuizRepository(Quiz)		
		quiz_id = request.GET.get('id', None)
		is_active = quizR.is_active(quiz_id)
		owner_id = quizR.get_owner_id(quiz_id)
		if request.user.id == owner_id and not is_active:
			quizR.quiz_delete(quiz_id)
			data = {
				'deleted': True
			}
			return JsonResponse(data)
Exemple #12
0
	def  get(self, request):
		quizR = repo.QuizRepository(Quiz)
		questionR = repo.QuestionRepository(Questions)
		quiz_id = request.GET.get('id', None)
		owner_id = quizR.get_owner_id(quiz_id)
		if request.user.id == owner_id:
			quizR.update_is_active(quiz_id, False)
			messages.success(request, 'Success!')
			data = {
				'deactivated': True
			}
			return JsonResponse(data)
Exemple #13
0
def graded_quiz_view(request, pk):
	qr = repo.QuizRepository(Quiz)

	cpr = repo.CourseParticipantsRepository(CourseParticipants)
	is_in_joined_courses = cpr.is_quiz_in_joined_active_courses(pk, request.user.id)
	if not is_in_joined_courses:
		raise Http404

	test = helper.construct_quiz_student_results(pk, request.user.id)
	quiz_name =qr.get_name(pk)
	course_id = qr.get_course_id(pk)
	return render(request, 'teachers/view/student_quiz_view.html', {'tests': test, 'quiz_name': quiz_name, 'quiz_id': pk, 'course_id': course_id,  'role': 'student'})
Exemple #14
0
def get_answers_for_check(request, pk, spk):
	quiz = repo.QuizRepository(Quiz)
	owner_id = quiz.get_owner_id(pk)
	course_id = quiz.get_course_id(pk)
	cpr = repo.CourseParticipantsRepository(CourseParticipants)
	is_participant = cpr.is_user_participant(spk, course_id)

	if request.user.id == owner_id and is_participant:
		quiz_name = quiz.get_name(pk)
		answers = open_answers_for_check(pk, spk)
		answers_grammar = grammar_answers_for_check(pk, spk)
		return render(request, 'teachers/check_quiz/check_quiz.html', {'answers': answers, 'answers_grammar':answers_grammar, 'quiz_id': pk, 'student_id': spk, 'quiz_name': quiz_name, 'error_codes': checkerop.error_explain})
	raise Http404
Exemple #15
0
def view_quiz_questions(request, pk):
	questionsR = repo.QuestionRepository(Questions)
	questions = questionsR.get_by_quiz_id(pk)
	quiz = repo.QuizRepository(Quiz)
	quizzes = quiz.get_by_id(pk)
	course_id = quiz.get_course_id(pk)
	if quizzes:
		owner_id = quizzes[0].owner_id
	else:
		owner_id = 0

	if request.user.id == owner_id:
		return render(request, 'teachers/lists/questions_list.html', {'questions': questions, 'quiz': pk, 'quizzes': quizzes, 'quiz_is_active': quizzes[0].is_active, 'course_id': course_id})
	raise Http404
Exemple #16
0
def view_course_active_quizzes(request, pk):
	cpr = repo.CourseParticipantsRepository(CourseParticipants)
	is_in_joined_courses = cpr.is_user_participant(request.user.id, pk)
	if not is_in_joined_courses:
		raise Http404

	quiz = repo.QuizRepository(Quiz)
	quizzes = quiz.get_active_quizzes_student_info(pk, request.user.id)
	if not quizzes:
		course_name = ""
	else:
		course_name = quizzes[0].course

	return render(request, 'students/lists/quiz_list.html', {'quizzes': quizzes, 'course_name': course_name})
Exemple #17
0
def student_quiz_view(request, pk, spk):
	qr = repo.QuizRepository(Quiz)
	owner_id = qr.get_owner_id(pk)
	if request.user.id == owner_id:
		cpr = repo.CourseParticipantsRepository(CourseParticipants)

		is_in_joined_courses = cpr.is_quiz_in_joined_courses(pk, spk)
		if not is_in_joined_courses:
			raise Http404
	    
		test = construct_quiz_student_results(pk, spk)
		quiz_name =qr.get_name(pk)
		return render(request, 'teachers/view/student_quiz_view.html', {'tests': test, 'quiz_name': quiz_name, 'quiz_id': pk, 'role': 'teacher', 'errors': checkerop.error_explain})
	raise Http404
Exemple #18
0
def quiz_update_in_code(request, pk, template_name='teachers/update/update_in_code.html'):
	quiz= get_object_or_404(Quiz, pk=pk)
	quizzes = repo.QuizRepository(Quiz)
	owner_id = quizzes.get_owner_id(pk)

	if request.user.id == owner_id:

		form = QuizInCodeForm(request.POST or None, instance=quiz)
		if form.is_valid():
			quiz = form.save(commit=False)
			if len(form.cleaned_data["in_code"]) <= 6:
				quiz.save()
			return HttpResponse(render_to_string('teachers/update/item_edit_form_success.html'))
		return render(request, template_name, {'form':form, 'id': pk})
	raise Http404
Exemple #19
0
	def  get(self, request):
		courses = repo.CourseRepository(Course)
		course_id = request.GET.get('id', None)
		status = request.GET.get('is_active', None)
		owner_id = courses.get_owner_id(course_id)
		if request.user.id == owner_id:
			if status == 'True':
				courses.update_is_active_and_in_code(course_id, status, generate_code())
			else:
				qr = repo.QuizRepository(Quiz)
				qr.update_all_course_quizzes_status(course_id, status)
				courses.update_is_active(course_id, status)
			data = {
				'activated': True
			}
			return JsonResponse(data)
Exemple #20
0
def update_answer(request, pk, template_name='teachers/update/item_edit_form.html'):
	answer= get_object_or_404(Answers, pk=pk)
	answersR = repo.AnswerRepository(Answers)
	quiz_id = answersR.get_quiz_id(pk)
	quiz = repo.QuizRepository(Quiz)
	owner_id = quiz.get_owner_id(quiz_id)

	if request.user.id == owner_id:
		form = AnswerForm(request.POST or None, instance=answer)

		if form.is_valid():	
			instance = form.save(commit=False)
			form_points_data = form.cleaned_data["points"]
			answer_points = answersR.get_answer_points(pk)

			are_points_changed = round(answer_points - form_points_data, 1)
			if are_points_changed != 0:
				questions = repo.QuestionRepository(Questions)
				question_id = answersR.get_question_id(pk)
				sum_answers_points = answersR.sum_all_question_answers_points(question_id)
				question_points = answersR.get_question_points(question_id)
				answer_points = answersR.get_answer_points(pk)
				free_points = question_points - sum_answers_points + answer_points
				free_points = round(free_points, 1)

				instance.points =  round(form_points_data, 1)
				is_done = questions.get_done_status(question_id)

				difference = round(free_points - form_points_data, 1)
				
				if difference >= 0:
					if(difference == 0):
						if is_done == False: 
							questions.update_is_done(question_id, True)
					else:
						if is_done == True:
							questions.update_is_done(question_id, False)
					messages.success(request, 'Success!')
				else:
					instance.points = answer_points
					messages.error(request, 'You put more points than you have left. Available points: %f'%free_points)
			instance.save()
			return HttpResponse(render_to_string('teachers/update/item_edit_form_success.html'))
		return render(request, template_name, {'form':form, 'id': pk})
	raise Http404
Exemple #21
0
def view_students_quiz_grades(request, pk):
	quiz_ch = get_object_or_404(Quiz, pk=pk)
	quiz = repo.QuizRepository(Quiz)
	owner_id = quiz.get_owner_id(pk)
	if request.user.id == owner_id:
		qsr = repo.QuizSolveRecordRepository(QuizSolveRecord)
		quizzes = qsr.get_quizzes_and_students(pk, True)
		course_id  = quiz.get_course_id(pk)
		points = quiz.get_point_schedule(pk)
		max_points = 0
		min_points = 0
		good_points = 0

		if points:
			max_points = points[0]['max_points']
			min_points = points[0]['min_points']
			good_points = points[0]['good_points']

		return render(request, 'teachers/lists/students_grade_list.html', {'quizzes': quizzes, 'course_id': course_id, 'min_points': min_points, 'good_points': good_points, 'max_points': max_points})
	raise Http404
Exemple #22
0
def activate_quiz(request, pk, template_name='teachers/activate/activate_quiz.html'):
	quiz= get_object_or_404(Quiz, pk=pk)
	quizR = repo.QuizRepository(Quiz)
	#owner_id = quizR.get_owner_id(pk)
	owner_id = quiz.owner_id
	
	if request.user.id == owner_id:
		is_course_active = quizR.is_course_active(pk)
		form = QuizActivateForm(request.POST or None, instance=quiz)
		if is_course_active:
			questionR = repo.QuestionRepository(Questions)
			is_quiz_done = questionR.is_quiz_done(pk)
			sum_questions_points = questionR.sum_all_quiz_questions_points(pk)
			quiz_points = quizR.get_quiz_points(pk)
			is_active = quizR.is_active(pk)
			
			if form.is_valid():
				quiz = form.save(commit=False)
				check = check_grades(form.cleaned_data["max_points"], form.cleaned_data["good_points"], form.cleaned_data["min_points"])
				if check:
					if(sum_questions_points == quiz_points):
						if is_quiz_done:
							quiz.in_code = generate_code()
							quiz.save()
							quizR.update_is_active(pk, not is_active)
							messages.success(request, 'Success!')
							
						else:
							messages.error(request, 'You have question that dont have enough answers')
					else:
						messages.error(request, 'Sum of quiz queston is not equal quiz points')
					
				else:
					messages.error(request, 'Put points in the right order')
				return HttpResponse(render_to_string('teachers/update/item_edit_form_success.html'))
			return render(request, template_name, {'form':form, 'id': pk})
		else:
			messages.error(request, 'Please activate course first.')
			return HttpResponse(render_to_string('teachers/update/item_edit_form_success.html'))
	else:
		raise Http404
Exemple #23
0
def update_course(request, pk, template_name='teachers/update/update_course.html'):
	course= get_object_or_404(Course, pk=pk)
	courses = repo.CourseRepository(Course)
	owner_id = courses.get_owner_id(pk)

	if request.user.id == owner_id:
		form = CourseForm(request.POST or None, instance=course)
		if form.is_valid():
			points = form.cleaned_data["points"]
			quiz = repo.QuizRepository(Quiz)
			all_quiz_points = quiz.get_all_quiz_points(pk)
			difference = round(points - all_quiz_points, 1)
			if(difference >= 0):
				form.save()
				messages.success(request, 'Course is updated')
			else:
				messages.error(request, 'Course is not updated. Quizzes in the course have more points than new course points', extra_tags='alert')

			return HttpResponse(render_to_string('teachers/update/item_edit_form_success.html'))
		return render(request, template_name, {'form':form, 'id': pk})
	raise Http404
Exemple #24
0
def join_quiz(request, pk, template_name='students/join_quiz.html'):
	cpr = repo.CourseParticipantsRepository(CourseParticipants)
	is_in_joined_courses = cpr.is_quiz_in_joined_active_courses(pk, request.user.id)
	if not is_in_joined_courses:
		raise Http404

	quiz= get_object_or_404(Quiz, pk=pk)
	qr = repo.QuizRepository(Quiz)
	if request.method == 'POST':
		code = request.POST.get('code')
		in_code = qr.get_quiz_code(pk)
		if in_code == code:
			qsrr = repo.QuizSolveRecordRepository(QuizSolveRecord)
			is_started = qsrr.check_if_started(pk, request.user.id)
			if(not is_started):
				qsrr.start_quiz(pk, request.user.id)

			return redirect('students:take_quiz', pk=pk)
			messages.success(request, 'Welcome to the course')
		else:
			messages.error(request, 'Please enter the right varification code.')
			return redirect('students:take_quiz_confirm', pk=pk)
	else:
		return render(request, template_name, {'id': pk})
Exemple #25
0
def finish_test(request, pk):

	qsrr = repo.QuizSolveRecordRepository(QuizSolveRecord)
	is_submitted = qsrr.if_quiz_is_submitted(pk, request.user.id)
	if is_submitted:
		raise Http404

	cpr = repo.CourseParticipantsRepository(CourseParticipants)
	is_in_joined_courses = cpr.is_quiz_in_joined_active_courses(pk, request.user.id)
	if not is_in_joined_courses:
		raise Http404

	solve_info_id = qsrr.get_solve_info_id(pk, request.user.id)
	if solve_info_id != 0:
		grammarChecker_ru = checkerop.GrammarChecker('ru')
		grammarChecker_en = checkerop.GrammarChecker('en')
		student_answers = request.POST['data']
		student_answers = json.loads(student_answers)
		quiz_data = helper.construct_main(pk)
		is_fully_checked = True
		points = 0
		solve_info_id = int(solve_info_id)
		sar = repo.StudentAnswersRepository(StudentAnswers)
		soar = repo.StudentOpenAnswersRepository(StudentOpenAnswers)
		sgar = repo.StudentGrammarAnswersRepository(StudentGrammarAnswers)
		
		lang_id = -1
		grammarChecker = -1
		gqsr = -1
		for i in range(1, len(student_answers)):
			if i != 0:

				#name = question_id
				#value = answer_id or answer to open question
				key = int(student_answers[i]['name'])
				#check if question_id belongs to quiz
				if key in quiz_data.keys():
					if quiz_data[key]['qtype'] != 'open' and quiz_data[key]['qtype'] != 'compare' and quiz_data[key]['qtype'] != 'grammar':
						#check if answer_id belongs to question
						answer_id = int(student_answers[i]['value'])
						if answer_id in quiz_data[key]['answers'].keys():
							points += float(quiz_data[key]['answers'][answer_id])
							#create record 
							sar.save_answer(solve_info_id, key, answer_id)
					else:
						answer = student_answers[i]['value']
						if quiz_data[key]['qtype'] == 'open':
							is_fully_checked = False
							soar.save_answer(solve_info_id, key, answer, 0)
						if(len(answer)):
							if quiz_data[key]['qtype'] == 'compare':
								points_compare = helper.check_student_compare_answer(key, str(answer))
								points += points_compare
								#save answer + compare algorithm = points
								soar.save_answer(solve_info_id, key, answer, points_compare)
						if quiz_data[key]['qtype'] == 'grammar':
							gqsr = repo.GrammarQuestionSanctionsRepository(GrammarQuestionSanctions)
							lang_id = gqsr.get_language(key)
							if lang_id != -1:
								langRepo = repo.LanguagesRepository(Languages)
								lang = langRepo.get_abr_by_id(lang_id)
								'''
								if grammarChecker != -1:
									if grammarChecker.lang != lang:
										grammarChecker = checkerop.GrammarChecker(lang)
								else:						
									grammarChecker = checkerop.GrammarChecker(lang)
								'''
								if lang == 'ru':
									grammarChecker = grammarChecker_ru
								else:
									grammarChecker = grammarChecker_en
							if lang_id != -1 and grammarChecker != -1 and gqsr != -1:
								question_sanctions = gqsr.form_error_sanction_dict(key)
								struct, corrected_sents, points_gra = helper.check_student_grammar_answer(key, str(answer), question_sanctions, grammarChecker)
								sgar.save_answer(solve_info_id, key, answer, points_gra, corrected_sents, struct)
								grammarChecker.reset()
		qsrr.finish_quiz(pk, request.user.id, points, is_fully_checked)
		qr = repo.QuizRepository(Quiz)
		course_id = qr.get_course_id(pk)
		return JsonResponse({
			'success': True,
			'url': reverse('students:view_course_active_quizzes', kwargs={'pk': course_id}), #, args=[{'courses': courses}]
			})
	raise Http404
Exemple #26
0
def view_quiz_info(request, pk, template_name='teachers/info/quiz_info.html'):
	quiz= get_object_or_404(Quiz, pk=pk)
	quizzesR = repo.QuizRepository(Quiz)
	owner_id = quizzesR.get_owner_id(pk)
	quizzes = quizzesR.get_by_id(pk)
	return render(request, template_name, {'id': pk, 'quizzes': quizzes})