Source code for quiz.models

from django.db import models
from django.contrib.auth.models import User
import datetime
from django.utils import timezone

[docs]class Permission(models.Model): """This class is used to create the userspermission table in database.Defines the permission of the user default permission is Student the admin can provide staff permission""" userId=models.ForeignKey(to=User, on_delete=models.CASCADE) """This is the foreign key pointing to Users table""" role=models.CharField(max_length=1,default="S") """The roles are Student(S) and Professor(P) default is student and admin allocates Professor role based on requests"""
[docs]class quiz(models.Model): """This class is used to create the quiz table in database.Contains information about the quiz time,length,code and instructor who has created it""" quizId=models.AutoField(primary_key=True) """The quizid to uniquely identiy the quiz (Primary key)""" startTime=models.TimeField() """Start Time of the quiz """ date=models.DateField(default=datetime.date.today) """The Start date of quiz""" length=models.FloatField(max_length=10) """The duration of the quiz in minutes""" quizCode=models.CharField(max_length=100,default='Code') """Random 6 Alhpa numeric characters assigned to each quiz""" quizDone=models.BooleanField(default=False) quizInfo=models.CharField(max_length=100,default="No Info Available") quizInstructor=models.ForeignKey(to=User, on_delete=models.CASCADE) """The instructor who created the quiz""" @property def end_datetime( self ): starttime = datetime.datetime.combine( self.date, self.startTime if self.startTime is not None else datetime.time.min ) endtime = starttime + datetime.timedelta(minutes=self.length) return endtime def __str__(self): return str(self.quizId)
[docs]class Questions(models.Model): """ This class is used to create the Questions table in database.Contains info about the questions within a particular quiz and its attributes like socre and negative marks and correct answer""" question = models.TextField() """Question descirption""" option1 = models.CharField(max_length=100) """option 1 for question""" option2 = models.CharField(max_length=100) """option 2 for question""" option3 = models.CharField(max_length=100) """option 3 for question""" option4 = models.CharField(max_length=100) """option 4 for question""" answer = models.CharField(max_length=100) type=models.CharField(max_length=10,default=1) marks =models.IntegerField(default=1) negative = models.FloatField(max_length=10,default=0) explainations=models.TextField(max_length=1000,default='No Explaination Given') questionId=models.AutoField(primary_key=True,) """Unqiue question identifier Primary key""" quizCode =models.CharField(max_length=100,default='Code') """6 random alpha numeric characters for each quiz""" quizId=models.ForeignKey(quiz,to_field='quizId',on_delete=models.CASCADE) """Foreign key of quiz model""" def __str__(self): return str(self.questionId) class Meta: db_table="Questions"
[docs]class submission(models.Model): """ This class is used to create the Submission table in database.Contains info about each questions answer submitted by each student""" questionId=models.ForeignKey(Questions,to_field='questionId',on_delete=models.CASCADE) """Foreign key of question model""" option=models.CharField(max_length=100) """The option selected by the student""" studentId=models.ForeignKey(to=User, on_delete=models.CASCADE) """Foreign key of user model""" quizId=models.ForeignKey(quiz,to_field='quizId',on_delete=models.CASCADE) """Foreign key of quiz model"""
[docs]class cribs(models.Model): """ This class is used to create the cribs table in database.Contains cribs raised by students""" studentId=models.ForeignKey(to=User, on_delete=models.CASCADE) cribs=models.CharField(max_length=1000) """The cribs registered by the student for the given question""" quizId=models.ForeignKey(quiz,to_field='quizId',on_delete=models.CASCADE) """Foreign key of quiz model""" questionId=models.ForeignKey(Questions,to_field='questionId',on_delete=models.CASCADE) class Meta: db_table="cribs"
[docs]class result(models.Model): """This class is used to create the result table in database.Stores cumulative score by each student in each quiz""" studentId = models.ForeignKey(to=User, on_delete=models.CASCADE) quizId = models.ForeignKey(quiz, to_field='quizId', on_delete=models.CASCADE) """Foreign key of quiz model""" marks=models.IntegerField(default=0) """cumulative marks for each student"""
[docs]class log(models.Model): """This class is used to create the log table in database.stores the student activity information for monitoring the students""" quizId=models.ForeignKey(quiz,to_field='quizId',on_delete=models.CASCADE, default="") """Foreign key of quiz model""" studentId = models.ForeignKey(to=User, on_delete=models.CASCADE, default="") """Foreign key of user model""" logtime = models.DateTimeField(default=timezone.now) """The time student last logged in""" fullscreen=models.CharField(max_length=20, default="") """Contains value to check whether the student has left fullscreen""" questions=models.CharField(max_length=20, default="") """Foreign key for questions model"""