diff options
author | prathamesh | 2018-02-08 14:29:38 +0530 |
---|---|---|
committer | adityacp | 2018-03-21 17:32:41 +0530 |
commit | b3f5721f3cf4225902000f2f76e5138135383792 (patch) | |
tree | 21ab4b9c9d4ad5d900c1de15f7254faea689094b /grades/views.py | |
parent | 06abd01fd28eb10aafd18dd60b790549e0233edc (diff) | |
download | online_test-b3f5721f3cf4225902000f2f76e5138135383792.tar.gz online_test-b3f5721f3cf4225902000f2f76e5138135383792.tar.bz2 online_test-b3f5721f3cf4225902000f2f76e5138135383792.zip |
Add weightage for Quiz and Create Grading System App
App Name: grades
Grading System provides with the grade for a given value.
It contains different grade ranges.
Has its own default grading system.
Allows you to modify and add grading system wth grade ranges.
To be done:
- Need to add README
- Good UI
- There are fields like can_be_used and order in models for future use.
- More tests
App name: Yaksh
Now every quiz has a default weightage of 100%, can be changed.
An aggregate is calculated for a given course.
Using grades app a grade is provide to the aggregate value.
Diffstat (limited to 'grades/views.py')
-rw-r--r-- | grades/views.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/grades/views.py b/grades/views.py new file mode 100644 index 0000000..86803c9 --- /dev/null +++ b/grades/views.py @@ -0,0 +1,44 @@ +from django.shortcuts import render +from django.contrib.auth.decorators import login_required +from django.forms import inlineformset_factory +from grades.forms import GradingSystemForm +from grades.models import GradingSystem, GradeRange + +# Create your views here. +@login_required +def grading_systems(request): + user = request.user + default_grading_system = GradingSystem.objects.get(name='default') + grading_systems = GradingSystem.objects.filter(creator=user).exclude( + name='default') + return render(request, 'grading_systems.html', {'default_grading_system': + default_grading_system, 'grading_systems': grading_systems}) + + +@login_required +def add_grading_system(request, system_id=None): + user = request.user + grading_system = None + if system_id is not None: + grading_system = GradingSystem.objects.get(id=system_id) + GradeRangeFormSet = inlineformset_factory(GradingSystem, GradeRange, + fields='__all__', extra=0) + grade_form = GradingSystemForm(instance=grading_system) + + if request.method == 'POST': + formset = GradeRangeFormSet(request.POST, instance=grading_system) + grade_form = GradingSystemForm(request.POST, instance=grading_system) + if grade_form.is_valid(): + system = grade_form.save(commit=False) + system.creator = user + system.save() + system_id = system.id + if formset.is_valid(): + formset.save() + if 'add' in request.POST: + GradeRangeFormSet = inlineformset_factory(GradingSystem, GradeRange, + fields='__all__', extra=1) + formset = GradeRangeFormSet(instance=grading_system) + + return render(request, 'add_grades.html', {'formset': formset, + 'grade_form': grade_form, "system_id": system_id}) |