def create_exam(request, course_id): course = Course.objects.get(id=course_id) if Question.objects.filter(course=course).exists(): form = ExamForm(course=course) if request.method == "POST": form = ExamForm(course=course, data=request.POST) if form.is_valid(): exam = form.save(commit=False) exam.course = course exam.save() add_questions(course, exam) messages.success(request, "Exam created successfully!") return redirect("/courses/" + course_id + "/exams/") return render(request, "create_exam.html", {"form": form, "course": course}) messages.error(request, "Course has no questions!") return redirect("/courses/" + course_id)
def test_if_not_valid_on_reversed_dates(self): course = Course.objects.create(name="Example name") question = Question.objects.create( name="Example name", category="Examples", question_text="Example", course=course ) form_data = { "name": "Example name", "description": "", "password": "******", "time_limit": "00:10", "active_from": "2016/10/10 10:00", "active_to": "2016/09/09 22:00", "category": "", "question_count": "", } form = ExamForm(data=form_data, course=course) self.assertFalse(form.is_valid())
def edit_exam(request, course_id, exam_id): course = Course.objects.get(id=course_id) exam = Exam.objects.get(id=exam_id) if request.user == course.owner: form = ExamForm(instance=exam) if request.method == "POST" and "update" in request.POST: form = ExamForm(instance=exam, data=request.POST) if form.is_valid(): update(form, exam) add_questions(course, exam) messages.success(request, "Exam updated successfully!") return redirect("/courses/" + course_id + "/exams/") if request.method == "POST" and "delete" in request.POST: delete(exam) messages.success(request, "Exam deleted successfully!") return redirect("/courses/" + course_id + "/exams/") return render(request, "edit_exam.html", {"form": form, "course": course, "exam": exam}) return redirect("/courses/" + course_id + "/exams/")
def test_if_valid_on_all_fields(self): user = User.objects.create(username="******") course = Course.objects.create(name="Example name", owner=user) question = Question.objects.create( name="Example name", category="Examples", question_text="Example", course=course ) form_data = { "name": "Example name", "description": "Example description", "password": "******", "time_limit": "00:10", "active_from": "2016/09/09 10:00", "active_to": "2016/10/10 22:00", "category": "Examples", "question_count": "2", } form = ExamForm(data=form_data, course=course) self.assertTrue(form.is_valid())
def test_if_not_valid_on_empty_limit_and_dates(self): user = User.objects.create(username="******") course = Course.objects.create(name="Example name", owner=user) question = Question.objects.create( name="Example name", category="Examples", question_text="Example", course=course ) form_data = { "name": "Example name", "description": "", "password": "******", "time_limit": "", "active_from": "", "active_to": "", "category": "Examples", "question_count": "2", } form = ExamForm(data=form_data, course=course) self.assertFalse(form.is_valid())
def edit_exam(request, course_id, exam_id): exam = Exam.objects.get(id=exam_id) if request.user.username == exam.owner: course = Course.objects.get(id=course_id) form = ExamForm(instance=exam) if request.method == 'POST' and 'update' in request.POST: form = ExamForm(instance=exam, data=request.POST) if form.is_valid(): update(form, exam) add_questions(course, exam) messages.success(request, 'Exam updated successfully!') return redirect('/courses/' + course_id + '/exams/') if request.method == 'POST' and 'delete' in request.POST: delete(exam) messages.success(request, 'Exam deleted successfully!') return redirect('/courses/' + course_id + '/exams/') return render(request, 'edit_exam.html', {'form': form, 'course': course, 'exam': exam }) return redirect('/courses/' + course_id + '/exams/')
def create_exam(request, course_id): course = Course.objects.get(id=course_id) if Question.objects.filter(course=course).exists(): form = ExamForm(course=course) if request.method == 'POST': form = ExamForm(course=course, data=request.POST) if form.is_valid(): exam = form.save(commit=False) exam.owner = request.user exam.course = course exam.save() add_questions(course, exam) messages.success(request, 'Exam created successfully!') return redirect('/courses/' + course_id + '/exams/') return render(request, 'create_exam.html', {'form': form, 'course': course }) else: messages.error(request, 'Course has no questions!') return redirect('/courses/' + course_id)
def create_exam(request, course_id): course = Course.objects.get(id=course_id) if Question.objects.filter(course=course).exists(): form = ExamForm(course=course) if request.method == 'POST': form = ExamForm(course=course, data=request.POST) if form.is_valid(): exam = form.save(commit=False) exam.course = course exam.save() add_questions(course, exam) messages.success(request, 'Exam created successfully!') return redirect('/courses/' + course_id + '/exams/') return render(request, 'create_exam.html', { 'form': form, 'course': course }) messages.error(request, 'Course has no questions!') return redirect('/courses/' + course_id)
def exam_add(request): exform = ExamForm() subexformset = modelformset_factory(SubExam, form=SubExamForm, extra=1) subexformset = subexformset( request.POST or None, queryset=SubExam.objects.filter(id__isnull=True)) if request.method == 'POST': exam = exams() exform = ExamForm(request.POST, instance=exam) if exform.is_valid() and subexformset.is_valid(): exform.save() instances = subexformset.save(commit=False) for subexform in instances: subexform.parent_exam = exam.id subexform.save() return redirect('/exams/dashboard/') else: print('invalid data') return render(request, 'exams/exam_create.html', { 'exform': exform, 'exformset': subexformset })
def exam_edit(request, pk=None): exam = exams.objects.get(id=pk) exform = ExamForm(instance=exam) subexformmodelset = modelformset_factory(SubExam, form=SubExamForm) subexformset = subexformmodelset( request.POST or None, queryset=SubExam.objects.filter(parent_exam=pk)) if request.method == 'POST': exform = ExamForm(request.POST, instance=exam) if exform.is_valid() and subexformset.is_valid(): exform.save() instances = subexformset.save(commit=False) for subexform in instances: subexform.parent_exam = exam.id subexform.save() return redirect('/exams/dashboard/') else: print(subexformset.errors) return render(request, 'exams/exam_create.html', { 'exform': exform, 'exformset': subexformset })
def edit_exam(request, course_id, exam_id): course = Course.objects.get(id=course_id) exam = Exam.objects.get(id=exam_id) if request.user == course.owner: form = ExamForm(instance=exam) if request.method == 'POST' and 'update' in request.POST: form = ExamForm(instance=exam, data=request.POST) if form.is_valid(): update(form, exam) add_questions(course, exam) messages.success(request, 'Exam updated successfully!') return redirect('/courses/' + course_id + '/exams/') if request.method == 'POST' and 'delete' in request.POST: delete(exam) messages.success(request, 'Exam deleted successfully!') return redirect('/courses/' + course_id + '/exams/') return render(request, 'edit_exam.html', { 'form': form, 'course': course, 'exam': exam }) return redirect('/courses/' + course_id + '/exams/')