def __init__(self, archive_filename): self.archive_filename = archive_filename self.timestamp = str(time.time()).split('.')[0] try: self.zip = zipfile.ZipFile(self.archive_filename) except zipfile.error: raise zipfile.error(self.archive_filename) self.manifest = self.parse_manifest() self.forums = [] self.labels = [] self.quizzes = [] self.resources = [] self.questions = {} self.questions['essay'] = [] self.questions['matching'] = [] self.questions['truefalse'] = [] self.questions['shortanswer'] = [] self.questions['multichoice'] = [] self.convert_resources() self.sections = self.create_default_sections() self.sections += self.create_content_areas() self.quiz_category_stamp = utils.generate_stamp() self.quiz_category_id = utils.m_hash(self.quiz_category_stamp) self.has_questions = any(self.questions.values()) self.zip.close()
def add_questions_shortanswer(self): shortanswer_questions = [] for n in xrange(2): sa_question = {} sa_question['name'] = 'Shortanswer Question #%s' % (n + 1) sa_question['text'] = 'Text for shortanswer question #%s' % (n + 1) sa_question['stamp'] = generate_stamp() sa_question['id'] = m_hash(sa_question) sa_question['general_feedback'] = 'Gen feedback for sa #%s' % (n + 1) answers = [] for i in xrange(4): answer = {} answer['answer_text'] = 'Answer %s text for sa #%s' % (i, n) answer['points'] = 1 if i == 1 else 0 answer['feedback'] = 'Answer %s feedback for sa #%s' % (i, n) answer['id'] = m_hash(answer) answers.append(answer) sa_question['answers'] = answers sa_question['answer_string'] = ','.join(str(a['id']) for a in answers) shortanswer_questions.append(sa_question) self.questions['shortanswer'] = shortanswer_questions
def add_questions_matching(self): matching_questions = [] for n in xrange(2): ma_question = {} ma_question['name'] = 'Matching Question #%s' % (n + 1) ma_question['text'] = 'Text for matching question #%s' % (n + 1) ma_question['stamp'] = generate_stamp() ma_question['id'] = m_hash(ma_question) ma_question['general_feedback'] = 'Gen feedback for ma #%s' % (n + 1) answers = [] for i in xrange(4): answer = {} answer['question_text'] = 'Question %s text for mc #%s' % (i, n) answer['answer_text'] = 'Question %s text for mc #%s' % (i, n) answer['id'] = m_hash(answer) answers.append(answer) ma_question['answers'] = answers matching_questions.append(ma_question) self.questions['matching'] = matching_questions
def add_questions_shortanswer(self): shortanswer_questions = [] for n in xrange(2): sa_question = {} sa_question['name'] = 'Shortanswer Question #%s' % (n + 1) sa_question['text'] = 'Text for shortanswer question #%s' % (n + 1) sa_question['stamp'] = generate_stamp() sa_question['id'] = m_hash(sa_question) sa_question['general_feedback'] = 'Gen feedback for sa #%s' % (n + 1) answers = [] for i in xrange(4): answer = {} answer['answer_text'] = 'Answer %s text for sa #%s' % (i, n) answer['points'] = 1 if i == 1 else 0 answer['feedback'] = 'Answer %s feedback for sa #%s' % (i, n) answer['id'] = m_hash(answer) answers.append(answer) sa_question['answers'] = answers sa_question['answer_string'] = ','.join( str(a['id']) for a in answers) shortanswer_questions.append(sa_question) self.questions['shortanswer'] = shortanswer_questions
def add_questions_multichoice(self): multichoice_questions = [] for n in xrange(2): mc_question = {} mc_question['name'] = 'Multichoice Question #%s' % (n + 1) mc_question['text'] = 'Text for multichoice question #%s' % (n + 1) mc_question['stamp'] = generate_stamp() mc_question['single_answer'] = n mc_question['id'] = m_hash(mc_question) mc_question['general_feedback'] = 'Gen feedback for mc #%s' % (n + 1) mc_question['correct_feedback'] = 'Correct feedback for mc #%s' % (n + 1) mc_question['partially_correct_feedback'] = 'Partial feedback for mc #%s' % (n + 1) mc_question['incorrect_feecback'] = 'Incorrect feedback for mc #%s' % (n + 1) answers = [] for i in xrange(4): answer = {} answer['answer_text'] = 'Answer %s text for mc #%s' % (i, n) answer['points'] = 1 if i == 1 else 0 answer['feedback'] = 'Answer %s feedback for mc #%s' % (i, n) answer['id'] = m_hash(answer) answers.append(answer) mc_question['answers'] = answers mc_question['answer_string'] = ','.join(str(a['id']) for a in answers) multichoice_questions.append(mc_question) self.questions['multichoice'] = multichoice_questions
def add_questions_essay(self): essay_questions = [] for n in xrange(2): essay_question = {} essay_question['name'] = 'Essay Question #%s' % (n + 1) essay_question['text'] = 'Text for essay question #%s' % (n + 1) essay_question['stamp'] = generate_stamp() essay_question['id'] = m_hash(essay_question) essay_question['feedback'] = 'Feedback for Essay Question #%s' % (n + 1) essay_question['answer_id'] = m_hash(essay_question) essay_questions.append(essay_question) self.questions['essay'] = essay_questions
def add_questions_essay(self): essay_questions = [] for n in xrange(2): essay_question = {} essay_question['name'] = 'Essay Question #%s' % (n + 1) essay_question['text'] = 'Text for essay question #%s' % (n + 1) essay_question['stamp'] = generate_stamp() essay_question['id'] = m_hash(essay_question) essay_question['feedback'] = 'Feedback for Essay Question #%s' % ( n + 1) essay_question['answer_id'] = m_hash(essay_question) essay_questions.append(essay_question) self.questions['essay'] = essay_questions
def __init__(self, xml, res_num): if self.__class__ == 'Question': raise NotImplementedError('Do not instantiate base class') self.res_num = res_num ContentItem.__init__(self, xml) if not self.name: self.name = '________' self.name = re.sub(r'<.*?>', '', self.name).strip() query = './/flow[@class="FILE_BLOCK"]//matapplication' for elem in self.xml.findall(query): self.image = utils.fix_filename(elem.attrib['label'], res_num) self.stamp = utils.generate_stamp() self.id = utils.m_hash(self)
def __init__(self, xml, res_num): if self.__class__ == 'Question': raise NotImplementedError('Do not instantiate base class') ContentItem.__init__(self, xml) if not self.name: self.name = '________' self.name = re.sub(r'<.*?>', '', self.name).strip() self.res_num = res_num query = './/flow[@class="FILE_BLOCK"]//matapplication' for elem in self.xml.findall(query): self.image = utils.fix_filename(elem.attrib['label'], res_num) self.stamp = utils.generate_stamp() self.id = utils.m_hash(self)
def add_questions_multichoice(self): multichoice_questions = [] for n in xrange(2): mc_question = {} mc_question['name'] = 'Multichoice Question #%s' % (n + 1) mc_question['text'] = 'Text for multichoice question #%s' % (n + 1) mc_question['stamp'] = generate_stamp() mc_question['single_answer'] = n mc_question['id'] = m_hash(mc_question) mc_question['general_feedback'] = 'Gen feedback for mc #%s' % (n + 1) mc_question['correct_feedback'] = 'Correct feedback for mc #%s' % ( n + 1) mc_question[ 'partially_correct_feedback'] = 'Partial feedback for mc #%s' % ( n + 1) mc_question[ 'incorrect_feecback'] = 'Incorrect feedback for mc #%s' % (n + 1) answers = [] for i in xrange(4): answer = {} answer['answer_text'] = 'Answer %s text for mc #%s' % (i, n) answer['points'] = 1 if i == 1 else 0 answer['feedback'] = 'Answer %s feedback for mc #%s' % (i, n) answer['id'] = m_hash(answer) answers.append(answer) mc_question['answers'] = answers mc_question['answer_string'] = ','.join( str(a['id']) for a in answers) multichoice_questions.append(mc_question) self.questions['multichoice'] = multichoice_questions
def _load(self): self.name = self.xml.find('.//assessment').attrib['title'] self.stamp = utils.generate_stamp() self.category_id = utils.m_hash(self.name, self.stamp) query = './/presentation_material//mat_formattedtext' description = self.xml.find(query).text query = './/rubric[@view="All"]//mat_formattedtext' instructions = self.xml.find(query).text description = '' if not description else description instructions = '' if not instructions else instructions self.intro = description + '<br /><br />' + instructions self.intro = '' if self.intro == '<br /><br />' else self.intro self.type = 'quiz'
def _load(self): self.name = self.xml.find('.//assessment').attrib['title'] self.stamp = utils.generate_stamp() self.category_id = utils.m_hash(self.name, self.stamp) query = './/presentation_material//mat_formattedtext' description = self.xml.find(query).text query = './/rubric[@view="All"]//mat_formattedtext' instructions = self.xml.find(query).text description = '' if not description else description instructions = '' if not instructions else instructions self.intro = description + '<br /><br />' + instructions self.intro = '' if self.intro == '<br /><br />' else self.intro while '@[email protected]@X@bbcswebdav' in self.intro: self.intro = self.handle_embedded_stubfile(self.intro) self.type = 'quiz'
def add_questions_truefalse(self): truefalse_questions = [] for n in xrange(2): tf_question = {} tf_question['name'] = 'True/False Question #%s' % (n + 1) tf_question['text'] = 'Text for truefalse question #%s' % (n + 1) tf_question['stamp'] = generate_stamp() tf_question['id'] = m_hash(tf_question) tf_question['general_feedback'] = 'Gen feedback for tf #%s' % (n + 1) tf_question['true_answer_id'] = m_hash(tf_question) tf_question['true_points'] = n tf_question['true_feedback'] = '#%s true feedback' % (n + 1) tf_question['false_answer_id'] = m_hash(tf_question) tf_question['false_points'] = -n + 1 tf_question['false_feedback'] = '#%s false feedback' % (n + 1) truefalse_questions.append(tf_question) self.questions['truefalse'] = truefalse_questions
def __init__(self, archive_filename, course_id, parameters): self.archive_filename = archive_filename self.course_id = course_id self.parameters = parameters self.timestamp = str(time.time()).split('.')[0] try: self.zip = zipfile.ZipFile(self.archive_filename) except zipfile.error: raise zipfile.error(self.archive_filename) self.manifest = self.parse_manifest() self.forums = [] self.labels = [] self.quizzes = [] self.resources = [] self.questions = {} self.questions['essay'] = [] self.questions['matching'] = [] self.questions['truefalse'] = [] self.questions['shortanswer'] = [] self.questions['multichoice'] = [] self.convert_resources() self.sections = self.create_default_sections() self.sections += self.create_content_areas() self.quiz_category_stamp = utils.generate_stamp() self.quiz_category_id = utils.m_hash(self.quiz_category_stamp) self.has_questions = any(self.questions.values()) self.zip.close()
def add_questions_container(self): self.questions = {} self.quiz_category_id = 22345678 self.quiz_category_stamp = generate_stamp()