Esempio n. 1
0
    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()
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
    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
Esempio n. 6
0
    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
Esempio n. 7
0
    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
Esempio n. 8
0
    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
Esempio n. 9
0
    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)
Esempio n. 10
0
    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)
Esempio n. 11
0
    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
Esempio n. 12
0
    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'
Esempio n. 13
0
    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'
Esempio n. 14
0
    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'
Esempio n. 15
0
    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
Esempio n. 16
0
    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()
Esempio n. 17
0
    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
Esempio n. 18
0
    def add_questions_container(self):
        self.questions = {}

        self.quiz_category_id = 22345678
        self.quiz_category_stamp = generate_stamp()
Esempio n. 19
0
    def add_questions_container(self):
        self.questions = {}

        self.quiz_category_id = 22345678
        self.quiz_category_stamp = generate_stamp()