Commit af8610e5 authored by Roshan Rabinarayan's avatar Roshan Rabinarayan

added documentation & student quiz page

parent 212225fc
......@@ -20,6 +20,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'kc*v0p%6l+br+l^*s6a)vd=tan_y5!)k)s5d1iw1-!kbj)-3hg'
# SECURITY WARNING: don't run with debug turned on in production!
......@@ -38,6 +39,7 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'quiz', # our app
'django_extensions',
]
MIDDLEWARE = [
......@@ -52,7 +54,7 @@ MIDDLEWARE = [
ROOT_URLCONF = 'QuizSystem.urls'
""" Added path to templates directory"""
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
......@@ -68,19 +70,21 @@ TEMPLATES = [
},
},
]
""" Added path to templates directory"""
WSGI_APPLICATION = 'QuizSystem.wsgi.application'
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
"""Added path to database"""
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
"""Added path to database"""
# Password validation
......
......@@ -45,4 +45,5 @@ urlpatterns = [
path('logs/',a.view_logs),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
No preview for this file type
......@@ -47,15 +47,15 @@
<p>For the full list of settings and their values, see
<a class="reference external" href="https://docs.djangoproject.com/en/2.2/ref/settings/">https://docs.djangoproject.com/en/2.2/ref/settings/</a></p>
<dl class="py data">
<dt id="QuizSystem.settings.ROOT_URLCONF">
<code class="sig-prename descclassname">QuizSystem.settings.</code><code class="sig-name descname">ROOT_URLCONF</code><em class="property"> = 'QuizSystem.urls'</em><a class="headerlink" href="#QuizSystem.settings.ROOT_URLCONF" title="Permalink to this definition"></a></dt>
<dd><p>Added path to templates directory</p>
<dt id="QuizSystem.settings.DATABASES">
<code class="sig-prename descclassname">QuizSystem.settings.</code><code class="sig-name descname">DATABASES</code><em class="property"> = {'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/roshan/roshan/CS699/Project/Pariksha/db.sqlite3'}}</em><a class="headerlink" href="#QuizSystem.settings.DATABASES" title="Permalink to this definition"></a></dt>
<dd><p>Added path to database</p>
</dd></dl>
<dl class="py data">
<dt id="QuizSystem.settings.WSGI_APPLICATION">
<code class="sig-prename descclassname">QuizSystem.settings.</code><code class="sig-name descname">WSGI_APPLICATION</code><em class="property"> = 'QuizSystem.wsgi.application'</em><a class="headerlink" href="#QuizSystem.settings.WSGI_APPLICATION" title="Permalink to this definition"></a></dt>
<dd><p>Added path to database</p>
<dt id="QuizSystem.settings.TEMPLATES">
<code class="sig-prename descclassname">QuizSystem.settings.</code><code class="sig-name descname">TEMPLATES</code><em class="property"> = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/home/roshan/roshan/CS699/Project/Pariksha/templates'], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}]</em><a class="headerlink" href="#QuizSystem.settings.TEMPLATES" title="Permalink to this definition"></a></dt>
<dd><p>Added path to templates directory</p>
</dd></dl>
</div>
......@@ -101,6 +101,7 @@
<li class="toctree-l2"><a class="reference internal" href="quiz.html">quiz package</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -1260,6 +1260,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../../../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -259,6 +259,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -406,6 +406,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -1031,6 +1031,7 @@
<li class="toctree-l1"><a class="reference internal" href="../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -65,6 +65,7 @@
<li class="toctree-l1"><a class="reference internal" href="../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -39,6 +39,8 @@
<div class="viewcode-block" id="main"><a class="viewcode-back" href="../manage.html#manage.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;This function is reponsible for managing all the server functionality</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">&#39;DJANGO_SETTINGS_MODULE&#39;</span><span class="p">,</span> <span class="s1">&#39;QuizSystem.settings&#39;</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">django.core.management</span> <span class="kn">import</span> <span class="n">execute_from_command_line</span>
......@@ -76,6 +78,7 @@
<li class="toctree-l1"><a class="reference internal" href="../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -34,8 +34,8 @@
<h1>Source code for quiz.apps</h1><div class="highlight"><pre>
<span></span><span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">AppConfig</span>
<div class="viewcode-block" id="QuizConfig"><a class="viewcode-back" href="../../quiz.html#quiz.apps.QuizConfig">[docs]</a><span class="k">class</span> <span class="nc">QuizConfig</span><span class="p">(</span><span class="n">AppConfig</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; added quiz app in the configuration&quot;&quot;&quot;</span>
<span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;quiz&#39;</span></div>
</pre></div>
......@@ -60,6 +60,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -38,6 +38,7 @@
<span class="c1">##</span>
<div class="viewcode-block" id="UploadFileForm"><a class="viewcode-back" href="../../quiz.html#quiz.forms.UploadFileForm">[docs]</a><span class="k">class</span> <span class="nc">UploadFileForm</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">Form</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;This is class is used to create the form for uploading the quiz in CSV form by the instructor&quot;&quot;&quot;</span>
<span class="n">file</span> <span class="o">=</span> <span class="n">forms</span><span class="o">.</span><span class="n">FileField</span><span class="p">()</span></div>
</pre></div>
......@@ -62,6 +63,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
This diff is collapsed.
......@@ -35,6 +35,7 @@
<span></span><span class="kn">import</span> <span class="nn">csv</span>
<span class="kn">from</span> <span class="nn">prettytable</span> <span class="kn">import</span> <span class="n">PrettyTable</span>
<div class="viewcode-block" id="readCSV"><a class="viewcode-back" href="../../quiz.html#quiz.newQuiz.readCSV">[docs]</a><span class="k">def</span> <span class="nf">readCSV</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Reads out the csv file uploaded by professor&quot;&quot;&quot;</span>
<span class="n">rows</span><span class="o">=</span><span class="nb">list</span><span class="p">()</span>
<span class="n">reader</span><span class="o">=</span><span class="n">csv</span><span class="o">.</span><span class="n">reader</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">reader</span><span class="p">:</span>
......@@ -43,6 +44,7 @@
<span class="k">return</span> <span class="n">rows</span></div>
<div class="viewcode-block" id="printTable"><a class="viewcode-back" href="../../quiz.html#quiz.newQuiz.printTable">[docs]</a><span class="k">def</span> <span class="nf">printTable</span><span class="p">(</span><span class="n">rows</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;prints out the csv file uploaded by professor for debugging purposes&quot;&quot;&quot;</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">PrettyTable</span><span class="p">()</span>
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
<span class="n">x</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
......@@ -74,6 +76,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
This diff is collapsed.
......@@ -11,10 +11,9 @@ Welcome to Pariksha's documentation!
:caption: Contents:
modules/AboutUs.rst
modules/views.rst
modules.rst
modules/models.rst
Indices and tables
==================
......
......@@ -4,8 +4,13 @@ About Us
SpartanBots
|
|
-Samarth Joshi 203059008
|
|
-Roshan Sahu 203050048
|
|
-Sanchit Gupta 203050089
Models
======
.. automodule:: quiz.models
:members:
:undoc-members:
This diff is collapsed.
......@@ -45,6 +45,7 @@
<li class="toctree-l2"><a class="reference internal" href="quiz.html">quiz package</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
</ul>
</div>
</div>
......@@ -79,6 +80,7 @@
<li class="toctree-l1"><a class="reference internal" href="modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -39,7 +39,8 @@
<dl class="py function">
<dt id="manage.main">
<code class="sig-prename descclassname">manage.</code><code class="sig-name descname">main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/manage.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#manage.main" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dd><p>This function is reponsible for managing all the server functionality</p>
</dd></dl>
</div>
......
......@@ -53,7 +53,7 @@
<li class="toctree-l2"><a class="reference internal" href="quiz.html#module-quiz.forms">quiz.forms module</a></li>
<li class="toctree-l2"><a class="reference internal" href="quiz.html#module-quiz.models">quiz.models module</a></li>
<li class="toctree-l2"><a class="reference internal" href="quiz.html#module-quiz.newQuiz">quiz.newQuiz module</a></li>
<li class="toctree-l2"><a class="reference internal" href="quiz.html#module-quiz.tests">quiz.tests module</a></li>
<li class="toctree-l2"><a class="reference internal" href="quiz.html#quiz-tests-module">quiz.tests module</a></li>
<li class="toctree-l2"><a class="reference internal" href="quiz.html#module-quiz.views">quiz.views module</a></li>
<li class="toctree-l2"><a class="reference internal" href="quiz.html#module-quiz">Module contents</a></li>
</ul>
......@@ -89,6 +89,7 @@
<li class="toctree-l2"><a class="reference internal" href="quiz.html">quiz package</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -36,8 +36,16 @@
<div class="section" id="about-us">
<h1>About Us<a class="headerlink" href="#about-us" title="Permalink to this headline"></a></h1>
<p>SpartanBots</p>
<div class="line-block">
<div class="line"><br /></div>
<div class="line"><br /></div>
</div>
<p>-Samarth Joshi 203059008
|
|
-Roshan Sahu 203050048
|
|
-Sanchit Gupta 203050089</p>
</div>
......@@ -63,6 +71,7 @@
<li class="toctree-l1 current"><a class="current reference internal" href="#">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="models.html">Models</a></li>
</ul>
<div class="relations">
......
This diff is collapsed.
......@@ -44,7 +44,8 @@
<dl class="py function">
<dt id="quiz.views.create_quiz">
<code class="sig-prename descclassname">quiz.views.</code><code class="sig-name descname">create_quiz</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">request</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/quiz/views.html#create_quiz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#quiz.views.create_quiz" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dd><p>This function renders the create quiz page for manually entering questions</p>
</dd></dl>
<dl class="py function">
<dt id="quiz.views.getbeat">
......@@ -181,6 +182,7 @@ and choosen answers also the explainations for the questions provided by the pro
<li class="toctree-l1"><a class="reference internal" href="AboutUs.html">About Us</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="models.html">Models</a></li>
</ul>
<div class="relations">
......
......@@ -88,12 +88,7 @@
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="quiz.html#module-quiz.tests"><code class="xref">quiz.tests</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="modules/views.html#module-quiz.views"><code class="xref">quiz.views</code></a></td><td>
<a href="quiz.html#module-quiz.views"><code class="xref">quiz.views</code></a></td><td>
<em></em></td></tr>
<tr>
<td><img src="_static/minus.png" class="toggler"
......@@ -135,6 +130,7 @@
<li class="toctree-l1"><a class="reference internal" href="modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
This diff is collapsed.
......@@ -79,6 +79,7 @@
<li class="toctree-l1"><a class="reference internal" href="modules/AboutUs.html">About Us</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules.html">Pariksha</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li>
</ul>
<div class="relations">
......
This diff is collapsed.
......@@ -11,10 +11,9 @@ Welcome to Pariksha's documentation!
:caption: Contents:
modules/AboutUs.rst
modules/views.rst
modules.rst
modules/models.rst
Indices and tables
==================
......
......@@ -4,8 +4,13 @@ About Us
SpartanBots
|
|
-Samarth Joshi 203059008
|
|
-Roshan Sahu 203050048
|
|
-Sanchit Gupta 203050089
Models
======
.. automodule:: quiz.models
:members:
:undoc-members:
......@@ -5,6 +5,8 @@ import sys
def main():
"""This function is reponsible for managing all the server functionality
"""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'QuizSystem.settings')
try:
from django.core.management import execute_from_command_line
......
......@@ -10,10 +10,17 @@ from .models import Permission
from .models import log
""""To easily insert and update data for the various models thorough django admin page"""
admin.site.register(Questions)
"""To allow to view questions to the admin"""
admin.site.register(submission)
"""To allow to view submissions to the admin"""
admin.site.register(cribs)
"""To allow to view cribs to the admin"""
admin.site.register(quiz)
"""To allow to view quizzes to the admin"""
admin.site.register(result)
"""To allow to view registrations to the admin"""
admin.site.register(Permission)
"""To allow to permit the users for professor role by the admin"""
admin.site.register(log)
"""To allow to view logs of student activity during examination to the admin"""
from django.apps import AppConfig
class QuizConfig(AppConfig):
""" added quiz app in the configuration"""
name = 'quiz'
......@@ -4,4 +4,5 @@ from django import forms
##
class UploadFileForm(forms.Form):
"""This is class is used to create the form for uploading the quiz in CSV form by the instructor"""
file = forms.FileField()
\ No newline at end of file
......@@ -6,18 +6,26 @@ from django.utils import timezone
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"""
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) #primary key
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)
quizCode=models.CharField(max_length=100,default='Code') ##quiz Code set by instructor
"""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 ):
......@@ -31,18 +39,26 @@ class quiz(models.Model):
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')
quizId=models.ForeignKey(quiz,to_field='quizId',on_delete=models.CASCADE)#unique quiz identification
"""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)
......@@ -52,16 +68,21 @@ class Questions(models.Model):
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)
quizId=models.ForeignKey(quiz,to_field='quizId',on_delete=models.CASCADE)#unique quiz identification
"""Foreign key of user model"""
quizId=models.ForeignKey(quiz,to_field='quizId',on_delete=models.CASCADE)
"""Foreign key of quiz model"""
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"
......@@ -71,13 +92,20 @@ 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"""
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"""
\ No newline at end of file
import csv
from prettytable import PrettyTable
def readCSV(file):
"""Reads out the csv file uploaded by professor"""
rows=list()
reader=csv.reader(file)
for row in reader:
......@@ -9,6 +10,7 @@ def readCSV(file):
return rows
def printTable(rows):
"""prints out the csv file uploaded by professor for debugging purposes"""
x = PrettyTable()
for row in rows:
x.add_row(row)
......
<!DOCTYPE html>
<head>
<title>Pariksha | Quiz List</title>
{% load static %}
<title>Pariksha | ALL Quizzes</title>
<script>
function start_quiz(x) {
window.open("/quiz/?q="+x, "_blank", "fullscreen=yes");
}
</script>
</script>
<link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,300;0,400;0,700;1,400&display=swap" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="{% static 'assets/DataTables/datatables.min.css' %}"/>
<script type="text/javascript" src="{% static 'assets/DataTables/datatables.min.js' %}"></script>
<style>
#quiz_links {
transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
* {
font-family: 'Source Sans Pro', sans-serif;
}
.table_wrapper {
margin: 40px;
animation: appear 1s 1;
position: relative;
}
#quiz_links:hover {
background-color: #ce9a66;
.action_btn {
color: white;
background-color: #1779BA;
cursor: pointer;
padding-left: 15px;
padding-right: 15px;
padding-top: 10px;
padding-bottom: 10px;
border-radius: 6px;
}
body {
margin: 0px;
background-color: #8EC5FC;
background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%);
@keyframes appear {
0% {
opacity: 0;
top: 50px;
}
100% {
opacity: 1;
top:0px;
}
table,td,tr{
border: 1px solid black;
border-collapse: collapse;
width: 60%;
text-align: center;
}
tr:nth-child(even) {background-color: #FAACA8;
background-image: linear-gradient(19deg, #FAACA8 0%, #DDD6F3 100%);
.emptiness {
display: flex;
height: 100vh;
justify-content: center;
flex-direction: column;
align-items: center;
}
tr:nth-child(odd) {background-color: #F4D03F;
background-image: linear-gradient(132deg, #F4D03F 0%, #16A085 100%);
}
.qlinks {
height: 60px;
display: block;
cursor: pointer;
line-height: 60px;
font-size: 1.2em;
.heading {
width: 400px;
margin: 50px auto;
font-weight: bold;
}
</style>
</head>
<body>
{%if quizId%}
<h1 class="heading">ALL Quizzes</h1>
<section class="table_wrapper">
<table cellspacing="0" id="myTable">
<thead><th>Code</th><th>Quiz Name</th><th>Organized By</th><th>Date</th><th>Time</th><th>Duration</th><th>Attempt quiz</th></thead>
<tbody>
<center><h1 style="font-family: Optima; font-size:50px;"><a>Welcome Student {{user}}</a></h1><br>
<h1>List of ongoing quizzes.</h1>
</center>
<div class="quiz">
<center>
<table >
{%for quiz in quizId%}
<br>
<tr>
<td>
<a id="quiz_links" class="qlinks" onclick="start_quiz({{quiz.quizId}})">Start Quiz :{{quiz.quizInfo}}</a>
</td>
<td>{{quiz.quizCode}}</td><td>{{quiz.quizInfo}}</td><td>{{quiz.quizInstructor}}</td><td>{{quiz.date}}</td><td>{{quiz.startTime}}</td><td>{{quiz.length}} minutes</td><td> <button onclick="start_quiz({{quiz.quizId}})" class="action_btn" type="button">Start</button></td>
</tr>
{%endfor%}
</tbody>
</table>
</center>
</section>
{%else%}
<div class="emptiness">
<img src="{% static 'img/students.svg' %}" height="100px">
<h3>You have not attempted any quiz.</h3>
</div>
{%endif%}
<script>
function test() {
alert(1);
}
$(document).ready( function () {
$('#myTable').DataTable();
} );
</script>
</body>
</html>
from django.test import TestCase
# Create your tests here.
......@@ -218,6 +218,7 @@ def handle_uploaded_file(f,q1):
q.save()
def create_quiz(request):
"""This function renders the create quiz page for manually entering questions"""
return render(request, 'quiz_create.html')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment