From 7a60f782995eed0352f3172f445bb35ae8ee6aa9 Mon Sep 17 00:00:00 2001 From: ankitjavalkar Date: Mon, 14 Sep 2015 12:28:41 +0530 Subject: Remove testapp dir, remove reference to testapp in paths, files --- yaksh/management/commands/load_exam.py | 57 ++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 yaksh/management/commands/load_exam.py (limited to 'yaksh/management/commands/load_exam.py') diff --git a/yaksh/management/commands/load_exam.py b/yaksh/management/commands/load_exam.py new file mode 100644 index 0000000..b354fbd --- /dev/null +++ b/yaksh/management/commands/load_exam.py @@ -0,0 +1,57 @@ +# System library imports. +from os.path import basename + +# Django imports. +from django.core.management.base import BaseCommand + +# Local imports. +from yaksh.models import Question, Quiz + +def clear_exam(): + """Deactivate all questions from the database.""" + for question in Question.objects.all(): + question.active = False + question.save() + + # Deactivate old quizzes. + for quiz in Quiz.objects.all(): + quiz.active = False + quiz.save() + +def load_exam(filename): + """Load questions and quiz from the given Python file. The Python file + should declare a list of name "questions" which define all the questions + in pure Python. It can optionally load a Quiz from an optional 'quiz' + object. + """ + # Simply exec the given file and we are done. + exec(open(filename).read()) + + if 'questions' not in locals(): + msg = 'No variable named "questions" with the Questions in file.' + raise NameError(msg) + + for question in questions: + question[0].save() + for tag in question[1]: + question[0].tags.add(tag) + + if 'quiz' in locals(): + quiz.save() + +class Command(BaseCommand): + args = '' + help = '''loads the questions from given Python files which declare the + questions in a list called "questions".''' + + def handle(self, *args, **options): + """Handle the command.""" + # Delete existing stuff. + clear_exam() + + # Load from files. + for fname in args: + self.stdout.write('Importing from {0} ... '.format(basename(fname))) + load_exam(fname) + self.stdout.write('Done\n') + -- cgit