summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--yaksh/models.py41
-rw-r--r--yaksh/views.py7
2 files changed, 43 insertions, 5 deletions
diff --git a/yaksh/models.py b/yaksh/models.py
index 6ad5eec..fa884b2 100644
--- a/yaksh/models.py
+++ b/yaksh/models.py
@@ -23,6 +23,7 @@ from os.path import join, abspath, dirname, exists
import shutil
import zipfile
import tempfile
+from textwrap import dedent
from .file_utils import extract_files, delete_files
from yaksh.xmlrpc_clients import code_server
from django.conf import settings
@@ -66,6 +67,43 @@ test_status = (
('completed', 'Completed'),
)
+instructions_data = dedent("""\
+ <p>
+ This examination system has been developed with the intention of
+ making you learn programming and be assessed in an interactive and
+ fun manner. You will be presented with a series of programming questions
+ and problems that you will answer online and get immediate
+ feedback for.
+ </p>
+ <p>
+ Here are some important instructions and rules that you should
+ understand carefully.</p>
+ <ul>
+ <li>For any programming questions, you can submit solutions as many
+ times as you want without a penalty. You may skip questions
+ and solve them later.</li>
+ <li> You <strong>may</strong> use your computer's Python/IPython
+ shell or an editor to solve the problem and cut/paste the
+ solution to the web interface.
+ </li>
+ <li> <strong>You are not allowed to use any internet resources,
+ i.e. no google etc.</strong>
+ </li>
+ <li> Do not copy or share the questions or answers with anyone
+ until the exam is complete <strong>for everyone</strong>.
+ </li>
+ <li> <strong>All</strong> your attempts at the questions are logged.
+ Do not try to outsmart and break the testing system.
+ If you do, we know who you are and we will expel you from the
+ course. You have been warned.
+ </li>
+ </ul>
+ <p>
+ We hope you enjoy taking this
+ exam !!!
+ </p>
+ """)
+
def get_assignment_dir(instance, filename):
return '%s/%s/%s' % (instance.user.user, instance.assignmentQuestion.id, filename)
@@ -564,6 +602,7 @@ class Quiz(models.Model):
end_date_time=timezone.now() + timedelta(176590),
duration=30, active=True,
attempts_allowed=-1,
+ instructions=instructions_data,
time_between_attempts=0,
description='Yaksh Demo quiz', pass_criteria=0,
language='Python', prerequisite=None,
@@ -702,7 +741,7 @@ class QuestionPaper(models.Model):
def create_demo_quiz_ppr(self, demo_quiz, user):
question_paper = QuestionPaper.objects.create(quiz=demo_quiz,
- total_marks=7.0,
+ total_marks=6.0,
shuffle_questions=True
)
questions = Question.objects.filter(active=True,
diff --git a/yaksh/views.py b/yaksh/views.py
index 7ecf6aa..a2ad6f2 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -269,7 +269,7 @@ def show_all_questionpapers(request, questionpaper_id=None):
@login_required
-def prof_manage(request):
+def prof_manage(request, msg=None):
"""Take credentials of the user with professor/moderator
rights/permissions and log in."""
user = request.user
@@ -303,7 +303,7 @@ def prof_manage(request):
temp = paper, answer_papers, users_passed, users_failed
users_per_paper.append(temp)
context = {'user': user, 'users_per_paper': users_per_paper,
- 'trial_paper': trial_paper
+ 'trial_paper': trial_paper, 'msg': msg
}
return my_render_to_response('yaksh/moderator_dashboard.html', context, context_instance=ci)
return my_redirect('/exam/login/')
@@ -1241,8 +1241,7 @@ def create_demo_course(request):
msg = "Created Demo course successfully"
else:
msg = "Demo course already created"
- context = {'msg': msg}
- return my_render_to_response('manage.html', context, context_instance=ci)
+ return prof_manage(request, msg)
@login_required