def submissions(request): if 'submission' in request.GET and request.method == "GET": submission = request.GET['submission'] instance = Submission.objects.get(id=submission) form = GradeAssignmentForm(instance=instance) return (render(request, "grades/grade_assignment.html", { 'form': form, 'submission': instance, 'role': getRole(request) })) elif 'submission' in request.GET and request.method == "POST": instance = Submission.objects.get(id=request.GET['submission']) form = GradeAssignmentForm(request.POST, instance=instance) form.instance.grader = Person.objects.get(user_id=request.user.id) form.save() assignment = (Submission.objects.get( id=request.GET['submission']).gradableItem.id) submissions = Submission.objects.filter(gradableItem_id=assignment) elif 'assignment' not in request.GET: assignment = "" submissions = "" else: assignment = GradableItem.objects.get(id=request.GET['assignment']) submissions = Submission.objects.filter(gradableItem_id=assignment) assignments = GradableItem.objects.filter(type="HMWK") return (render( request, 'grades/submissions.html', { 'assignment': assignment, 'submissions': submissions, 'assignments': assignments, 'role': getRole(request) }))
def edit_question(request): if request.method == "GET": if 'question' in request.GET: instance = ExamQuestion.objects.get(id=request.GET['question']) form = ExamQuestionForm(instance=instance) return (render(request, 'base_form.html', { 'form': form, 'role': getRole(request) })) elif 'exam' in request.GET: form = ExamQuestionForm() return render(request, 'base_form.html', { 'form': form, 'role': getRole(request) }) if request.method == "POST": if 'question' in request.GET: instance = ExamQuestion.objects.get(id=request.GET['question']) form = ExamQuestionForm(request.POST, instance=instance) form.save() url = reverse('grades:edit_exam') return (HttpResponseRedirect(url + "?exam=" + str(instance.gradableItem_id))) elif 'exam' in request.GET: form = ExamQuestionForm(request.POST) form.instance.gradableItem_id = request.GET['exam'] form.instance.type = "TEXT" # TODO add support for Multiple Choice form.save() url = reverse('grades:edit_exam') return (HttpResponseRedirect(url + "?exam=" + str(form.instance.gradableItem_id)))
def edit_question(request): if request.method == "GET": if 'question' in request.GET: instance = ExamQuestion.objects.get(id=request.GET['question']) form = ExamQuestionForm(instance=instance) return (render(request, 'base_form.html', { 'form': form, 'role': getRole(request) })) elif 'exam' in request.GET: form = ExamQuestionForm() return render(request, 'base_form.html', { 'form': form, 'role': getRole(request) }) if request.method == "POST": if 'question' in request.GET: instance = ExamQuestion.objects.get(id=request.GET['question']) form = ExamQuestionForm(request.POST, instance=instance) form.save() url = reverse('grades:edit_exam') return (HttpResponseRedirect( url + "?exam=" + str(instance.gradableItem_id))) elif 'exam' in request.GET: form = ExamQuestionForm(request.POST) form.instance.gradableItem_id = request.GET['exam'] form.instance.type = "TEXT" # TODO add support for Multiple Choice form.save() url = reverse('grades:edit_exam') return (HttpResponseRedirect( url + "?exam=" + str(form.instance.gradableItem_id)))
def submit_assignment(request): id = request.GET['id'] instance = (Submission.objects.filter(gradableItem_id=id, submitter_id=request.user.id)) if request.method == 'GET': if instance.count() == 0: form = SubmissionForm() return render(request, "file_upload_form.html", { 'form': form, 'role': getRole(request) }) else: form = SubmissionForm(instance=instance[0]) assignments = GradableItem.objects.filter(type='HMWK') return render( request, 'grades/assignments.html', { 'assignments': assignments, 'role': getRole(request), 'isRedirect': True }) elif request.method == 'POST': if instance.count() == 0: form = SubmissionForm(request.POST, request.FILES) else: form = (SubmissionForm(request.POST, request.FILES, instance=instance[0])) form.instance.gradableItem_id = id form.instance.submitter_id = request.user.id form.save() return HttpResponseRedirect(reverse('grades:assignments'))
def submit_assignment(request): id = request.GET['id'] instance = (Submission.objects.filter(gradableItem_id=id, submitter_id=request.user.id)) if request.method == 'GET': if instance.count() == 0: form = SubmissionForm() return render(request, "file_upload_form.html", { 'form': form, 'role': getRole(request) }) else: form = SubmissionForm(instance=instance[0]) assignments = GradableItem.objects.filter(type='HMWK') return render(request, 'grades/assignments.html', { 'assignments': assignments, 'role': getRole(request), 'isRedirect': True }) elif request.method == 'POST': if instance.count() == 0: form = SubmissionForm(request.POST, request.FILES) else: form = (SubmissionForm(request.POST, request.FILES, instance=instance[0])) form.instance.gradableItem_id = id form.instance.submitter_id = request.user.id form.save() return HttpResponseRedirect(reverse('grades:assignments'))
def submissions(request): if 'submission' in request.GET and request.method == "GET": submission = request.GET['submission'] instance = Submission.objects.get(id=submission) form = GradeAssignmentForm(instance=instance) return (render(request, "grades/grade_assignment.html", { 'form': form, 'submission': instance, 'role': getRole(request) })) elif 'submission' in request.GET and request.method == "POST": instance = Submission.objects.get(id=request.GET['submission']) form = GradeAssignmentForm(request.POST, instance=instance) form.instance.grader = Person.objects.get(user_id=request.user.id) form.save() assignment = (Submission.objects.get(id=request.GET['submission']) .gradableItem.id) submissions = Submission.objects.filter(gradableItem_id=assignment) elif 'assignment' not in request.GET: assignment = "" submissions = "" else: assignment = GradableItem.objects.get(id=request.GET['assignment']) submissions = Submission.objects.filter(gradableItem_id=assignment) assignments = GradableItem.objects.filter(type="HMWK") return (render(request, 'grades/submissions.html', { 'assignment': assignment, 'submissions': submissions, 'assignments': assignments, 'role': getRole(request) }))
def exams(request): if request.method == "GET": if 'exam' in request.GET: instance = GradableItem.objects.get(id=request.GET['exam']) form = ExamForm(instance=instance) questions = ExamQuestion.objects.filter(gradableItem=instance) return (render( request, 'grades/exam_form.html', { 'form': form, 'exam': instance, 'questions': questions, 'role': getRole(request) })) else: exams = GradableItem.objects.filter(type="EXAM") person = Person.objects.get(user=request.user) for exam in exams: if person.type == "STUD": submission = (ExamSubmission.objects.filter( gradableItem=exam, submitter=person).order_by('date_submitted')) if submission.count() > 0: exam.submission = submission[0] else: exam.submission = '' else: exam.submission = '' return (render(request, 'grades/exams.html', { 'exams': exams, 'role': getRole(request) })) elif request.method == "POST": if 'exam' in request.GET: print "HI" instance = GradableItem.objects.get(id=request.GET['exam']) form = ExamForm(request.POST, instance=instance) form.save() questions = ExamQuestion.objects.filter(gradableItem=instance) return (render( request, 'grades/exam_form.html', { 'form': form, 'exam': form.instance, 'questions': questions, 'role': getRole(request) })) else: exams = GradableItem.objects.filter(type="EXAM") return (render(request, 'grades/exams.html', { 'exams': exams, 'role': getRole(request) }))
def exams(request): if request.method == "GET": if 'exam' in request.GET: instance = GradableItem.objects.get(id=request.GET['exam']) form = ExamForm(instance=instance) questions = ExamQuestion.objects.filter(gradableItem=instance) return (render(request, 'grades/exam_form.html', { 'form': form, 'exam': instance, 'questions': questions, 'role': getRole(request) })) else: exams = GradableItem.objects.filter(type="EXAM") person = Person.objects.get(user=request.user) for exam in exams: if person.type == "STUD": submission = (ExamSubmission.objects.filter( gradableItem=exam, submitter=person) .order_by('date_submitted')) if submission.count() > 0: exam.submission = submission[0] else: exam.submission = '' else: exam.submission = '' return (render(request, 'grades/exams.html', { 'exams': exams, 'role': getRole(request) })) elif request.method == "POST": if 'exam' in request.GET: print "HI" instance = GradableItem.objects.get(id=request.GET['exam']) form = ExamForm(request.POST, instance=instance) form.save() questions = ExamQuestion.objects.filter(gradableItem=instance) return (render(request, 'grades/exam_form.html', { 'form': form, 'exam': form.instance, 'questions': questions, 'role': getRole(request) })) else: exams = GradableItem.objects.filter(type="EXAM") return (render(request, 'grades/exams.html', { 'exams': exams, 'role': getRole(request) }))
def take_exam(request): if 'exam' not in request.GET: return HttpResponseRedirect(reverse('grades:exams')) if request.method == "GET": questions = (ExamQuestion.objects.filter( gradableItem_id=request.GET['exam'])) person = Person.objects.get(user=request.user) submission = (ExamSubmission.objects.filter( gradableItem=request.GET['exam'], submitter=person)) if submission.count() > 0: taken = 1 else: taken = 0 return (render( request, 'grades/take_exam.html', { 'questions': questions, 'taken': taken, 'role': getRole(request) })) elif request.method == "POST": submitter = Person.objects.get(user=request.user) examSubmission = ExamSubmission(submitter=submitter, gradableItem_id=request.GET['exam']) examSubmission.save() questions = (ExamQuestion.objects.filter( gradableItem_id=request.GET['exam'])) for question in questions: answer = request.POST[str(question.id)] examAnswer = ExamAnswer(examSubmission=examSubmission, answer=answer, examQuestion=question) examAnswer.save() return HttpResponseRedirect(reverse('grades:exams'))
def calendar(request): gradable_items = GradableItem.objects.all().order_by('due_date') events = Event.objects.all().order_by('date') return render(request, "calendar/calendar.html", { 'gradable_items': gradable_items, 'events': events, 'role': getRole(request) })
def create_exam(request): if request.method == "GET": form = ExamForm() return (render(request, 'base_form.html', { 'form': form, 'role': getRole(request) })) elif request.method == "POST": form = ExamForm(request.POST) form.instance.type = "EXAM" form.save() url = reverse('grades:exams') return HttpResponseRedirect(url + "?exam=" + str(form.instance.id))
def edit_assignment(request): id = request.GET['id'] instance = GradableItem.objects.get(id=id) if request.method == 'GET': form = AssignmentForm(instance=instance) return (render(request, "file_upload_form.html", { 'form': form, 'role': getRole(request) })) elif request.method == 'POST': form = AssignmentForm(request.POST, request.FILES, instance=instance) form.save() return HttpResponseRedirect(reverse('grades:assignments'))
def assignments(request): assignments = GradableItem.objects.filter(type='HMWK') for assignment in assignments: submission = (Submission.objects.filter(submitter_id=request.user.id, gradableItem_id=assignment.id)) if submission.count() != 0: assignment.submission = submission[0] else: assignment.submission = '' return render(request, 'grades/assignments.html', { 'assignments': assignments, 'role': getRole(request), 'isRedirect': False })
def grades(request): person = Person.objects.get(user=request.user) exam_grades = ExamSubmission.objects.filter(submitter=person) for exam in exam_grades: answers = ExamAnswer.objects.filter(examSubmission=exam) exam.score = 0 for answer in answers: if answer.points is not None: exam.score += int(answer.points) else: exam.score = None break assignment_grades = Submission.objects.filter(submitter=person) return (render(request, "grades/grades.html", { 'exam_grades': exam_grades, 'assignment_grades': assignment_grades, 'role': getRole(request) }))
def grades(request): person = Person.objects.get(user=request.user) exam_grades = ExamSubmission.objects.filter(submitter=person) for exam in exam_grades: answers = ExamAnswer.objects.filter(examSubmission=exam) exam.score = 0 for answer in answers: if answer.points is not None: exam.score += int(answer.points) else: exam.score = None break assignment_grades = Submission.objects.filter(submitter=person) return (render( request, "grades/grades.html", { 'exam_grades': exam_grades, 'assignment_grades': assignment_grades, 'role': getRole(request) }))
def view_examsubmissions(request): if 'exam' not in request.GET: return HttpResponseRedirect(reverse('grades:exams')) if request.method == "GET": submissions = (ExamSubmission.objects.filter( gradableItem_id=request.GET['exam'])) for submission in submissions: questions = ExamAnswer.objects.filter(examSubmission=submission) submission.score = 0 for question in questions: if question.points is not None: submission.score += int(question.points) else: score = '' break return (render(request, 'grades/view_examsubmissions.html', { 'submissions': submissions, 'role': getRole(request) }))
def grade_examsubmissions(request): submission = ExamSubmission.objects.get(id=request.GET['submission']) answers = ExamAnswer.objects.filter(examSubmission=submission) if request.method == "GET": return (render( request, "grades/grade_examsubmission.html", { 'submission': submission, 'answers': answers, 'role': getRole(request) })) elif request.method == "POST": grader = Person.objects.get(user=request.user) for answer in answers: answer.points = (request.POST[str(answer.examQuestion.id) + "_score"]) answer.comment = (request.POST[str(answer.examQuestion.id) + "_comment"]) answer.grader = grader answer.save() return (HttpResponseRedirect( reverse("grades:view_examsubmissions") + "?exam=" + str(submission.gradableItem_id)))
def edit_event(request): if request.method == "GET": if 'event' not in request.method: form = EventForm() else: event = Event.objects.get(id=request.GET['event']) form = EventForm(instance=instance) return render(request, "base_form.html", { 'form': form, 'role': getRole(request) }) elif request.method == "POST": if 'event' not in request.GET: form = EventForm(request.POST) else: instance = Event.objects.get(id=request.GET['event']) form = EventForm(request.POST, instance=instance) if form.is_valid(): form.save() else: print form.errors return HttpResponseRedirect(reverse("calendar:calendar"))
def grade_examsubmissions(request): submission = ExamSubmission.objects.get(id=request.GET['submission']) answers = ExamAnswer.objects.filter(examSubmission=submission) if request.method == "GET": return (render(request, "grades/grade_examsubmission.html", { 'submission': submission, 'answers': answers, 'role': getRole(request) })) elif request.method == "POST": grader = Person.objects.get(user=request.user) for answer in answers: answer.points = (request.POST[str(answer.examQuestion.id) + "_score"]) answer.comment = (request.POST[str(answer.examQuestion.id) + "_comment"]) answer.grader = grader answer.save() return (HttpResponseRedirect(reverse( "grades:view_examsubmissions") + "?exam=" + str(submission.gradableItem_id) ))
def take_exam(request): if 'exam' not in request.GET: return HttpResponseRedirect(reverse('grades:exams')) if request.method == "GET": questions = (ExamQuestion.objects.filter( gradableItem_id=request.GET['exam'])) person = Person.objects.get(user=request.user) submission = (ExamSubmission.objects.filter( gradableItem=request.GET['exam'], submitter=person)) if submission.count() > 0: taken = 1 else: taken = 0 return (render(request, 'grades/take_exam.html', { 'questions': questions, 'taken': taken, 'role': getRole(request) })) elif request.method == "POST": submitter = Person.objects.get(user=request.user) examSubmission = ExamSubmission( submitter=submitter, gradableItem_id=request.GET['exam'] ) examSubmission.save() questions = (ExamQuestion.objects.filter( gradableItem_id=request.GET['exam'])) for question in questions: answer = request.POST[str(question.id)] examAnswer = ExamAnswer( examSubmission=examSubmission, answer=answer, examQuestion=question ) examAnswer.save() return HttpResponseRedirect(reverse('grades:exams'))