summaryrefslogtreecommitdiff
path: root/grades/migrations
diff options
context:
space:
mode:
authorprathamesh2018-02-08 14:29:38 +0530
committeradityacp2018-03-21 17:32:41 +0530
commitb3f5721f3cf4225902000f2f76e5138135383792 (patch)
tree21ab4b9c9d4ad5d900c1de15f7254faea689094b /grades/migrations
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/migrations')
-rw-r--r--grades/migrations/0001_initial.py45
-rw-r--r--grades/migrations/__init__.py0
-rw-r--r--grades/migrations/default_grading_system.py36
3 files changed, 81 insertions, 0 deletions
diff --git a/grades/migrations/0001_initial.py b/grades/migrations/0001_initial.py
new file mode 100644
index 0000000..65d711e
--- /dev/null
+++ b/grades/migrations/0001_initial.py
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.5 on 2018-02-02 06:20
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='GradeRange',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('order', models.IntegerField(default=0)),
+ ('lower_limit', models.FloatField()),
+ ('upper_limit', models.FloatField()),
+ ('grade', models.CharField(max_length=10)),
+ ('description', models.CharField(blank=True, max_length=127, null=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='GradingSystem',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, unique=True)),
+ ('description', models.TextField(default='About the grading system!')),
+ ('can_be_used', models.BooleanField(default=False)),
+ ('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+ ],
+ ),
+ migrations.AddField(
+ model_name='graderange',
+ name='system',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='grades.GradingSystem'),
+ ),
+ ]
diff --git a/grades/migrations/__init__.py b/grades/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/grades/migrations/__init__.py
diff --git a/grades/migrations/default_grading_system.py b/grades/migrations/default_grading_system.py
new file mode 100644
index 0000000..1629d29
--- /dev/null
+++ b/grades/migrations/default_grading_system.py
@@ -0,0 +1,36 @@
+from django.db import migrations
+
+def create_default_system(apps, schema_editor):
+ GradingSystem = apps.get_model('grades', 'GradingSystem')
+ GradeRange = apps.get_model('grades', 'GradeRange')
+ db = schema_editor.connection.alias
+
+ default_system = GradingSystem.objects.using(db).create(name='default',
+ can_be_used=True)
+ GradeRange.objects.using(db).create(system=default_system, order=1, lower_limit=0,
+ upper_limit=40, grade='F', description='Fail')
+ GradeRange.objects.using(db).create(system=default_system, order=2, lower_limit=40,
+ upper_limit=55, grade='P', description='Pass')
+ GradeRange.objects.using(db).create(system=default_system, order=3, lower_limit=55,
+ upper_limit=60, grade='C', description='Average')
+ GradeRange.objects.using(db).create(system=default_system, order=4, lower_limit=60,
+ upper_limit=75, grade='B', description='Satisfactory')
+ GradeRange.objects.using(db).create(system=default_system, order=5, lower_limit=75,
+ upper_limit=90, grade='A', description='Good')
+ GradeRange.objects.using(db).create(system=default_system, order=6, lower_limit=90,
+ upper_limit=101, grade='A+', description='Excellent')
+
+
+def delete_default_system(apps, schema_editor):
+ GradingSystem = apps.get_model('grades', 'GradingSystem')
+ GradeRange = apps.get_model('grades', 'GradeRange')
+ db = schema_editor.connection.alias
+
+ default_system = GradingSystem.objects.using(db).get(creator=None)
+ GradeRange.object.using(db).filter(system=default_system).delete()
+ default_system.delete()
+
+
+class Migration(migrations.Migration):
+ dependencies = [('grades', '0001_initial'),]
+ operations = [migrations.RunPython(create_default_system, delete_default_system),]