summaryrefslogtreecommitdiff
path: root/yaksh/management/commands/load_questions_xml.py
diff options
context:
space:
mode:
authorankitjavalkar2018-03-05 12:44:04 +0530
committerankitjavalkar2018-03-21 18:23:44 +0530
commit3bcbd380376faa9f2415af271489a4b8439f5717 (patch)
tree95c72b371baac97a700a16b2d932b729f3d65552 /yaksh/management/commands/load_questions_xml.py
parentaa64e8db6456260bf6f29086eff5012c970e14f3 (diff)
downloadonline_test-3bcbd380376faa9f2415af271489a4b8439f5717.tar.gz
online_test-3bcbd380376faa9f2415af271489a4b8439f5717.tar.bz2
online_test-3bcbd380376faa9f2415af271489a4b8439f5717.zip
Deprecate multiple management commands
- dump_user_data deprecated - load_exam deprecated - load_question_xml deprecated - results2csv deprecated
Diffstat (limited to 'yaksh/management/commands/load_questions_xml.py')
-rw-r--r--yaksh/management/commands/load_questions_xml.py73
1 files changed, 0 insertions, 73 deletions
diff --git a/yaksh/management/commands/load_questions_xml.py b/yaksh/management/commands/load_questions_xml.py
deleted file mode 100644
index 02714ea..0000000
--- a/yaksh/management/commands/load_questions_xml.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# System library imports.
-from os.path import basename
-from xml.dom.minidom import parse
-from htmlentitydefs import name2codepoint
-import re
-
-# Django imports.
-from django.core.management.base import BaseCommand
-
-# Local imports.
-from yaksh.models import Question
-
-def decode_html(html_str):
- """Un-escape or decode HTML strings to more usable Python strings.
- From here: http://wiki.python.org/moin/EscapingHtml
- """
- return re.sub('&(%s);' % '|'.join(name2codepoint),
- lambda m: unichr(name2codepoint[m.group(1)]), html_str)
-
-def clear_questions():
- """Deactivate all questions from the database."""
- for question in Question.objects.all():
- question.active = False
- question.save()
-
-def load_questions_xml(filename):
- """Load questions from the given XML file."""
- q_bank = parse(filename).getElementsByTagName("question")
-
- for question in q_bank:
-
- summary_node = question.getElementsByTagName("summary")[0]
- summary = (summary_node.childNodes[0].data).strip()
-
- desc_node = question.getElementsByTagName("description")[0]
- description = (desc_node.childNodes[0].data).strip()
-
- type_node = question.getElementsByTagName("type")[0]
- type = (type_node.childNodes[0].data).strip()
-
- points_node = question.getElementsByTagName("points")[0]
- points = float((points_node.childNodes[0].data).strip()) \
- if points_node else 1.0
-
- test_node = question.getElementsByTagName("test")[0]
- test = decode_html((test_node.childNodes[0].data).strip())
-
- opt_node = question.getElementsByTagName("options")[0]
- opt = decode_html((opt_node.childNodes[0].data).strip())
-
- new_question = Question(summary=summary,
- description=description,
- points=points,
- options=opt,
- type=type,
- test=test)
- new_question.save()
-
-class Command(BaseCommand):
- args = '<q_file1.xml q_file2.xml>'
- help = 'loads the questions from given XML files'
-
- def handle(self, *args, **options):
- """Handle the command."""
- # Delete existing stuff.
- clear_questions()
-
- # Load from files.
- for fname in args:
- self.stdout.write('Importing from {0} ... '.format(basename(fname)))
- load_questions_xml(fname)
- self.stdout.write('Done\n')
-