summaryrefslogtreecommitdiff
path: root/grades/views.py
diff options
context:
space:
mode:
authorprathamesh2018-02-08 14:29:38 +0530
committeradityacp2018-03-21 17:32:41 +0530
commitb3f5721f3cf4225902000f2f76e5138135383792 (patch)
tree21ab4b9c9d4ad5d900c1de15f7254faea689094b /grades/views.py
parent06abd01fd28eb10aafd18dd60b790549e0233edc (diff)
downloadonline_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.py44
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})