diff options
author | maheshgudi | 2018-03-21 19:14:09 +0530 |
---|---|---|
committer | maheshgudi | 2018-03-21 19:14:09 +0530 |
commit | 09ab00808ba9ea288047662e5c7ee2a134f0ac41 (patch) | |
tree | b9ad94f07ae3891295656203c169cb0b03b08d96 /yaksh/management/commands/load_questions_xml.py | |
parent | efeeaae745f32c4da34f91ca3618d7c3441a5f32 (diff) | |
parent | 4b356aa2f6097cd0f46292218f31ded18b631e53 (diff) | |
download | online_test-09ab00808ba9ea288047662e5c7ee2a134f0ac41.tar.gz online_test-09ab00808ba9ea288047662e5c7ee2a134f0ac41.tar.bz2 online_test-09ab00808ba9ea288047662e5c7ee2a134f0ac41.zip |
Merge branch 'master' of https://github.com/fossee/online_test into arrange_options
Diffstat (limited to 'yaksh/management/commands/load_questions_xml.py')
-rw-r--r-- | yaksh/management/commands/load_questions_xml.py | 73 |
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') - |