Beispiel #1
0
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):
     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': '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())
Beispiel #3
0
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
    })
Beispiel #4
0
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
    })
Beispiel #5
0
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/')