예제 #1
0
    def get_lines(self):
        from course.models.parsons_question import ParsonsQuestion

        if not isinstance(self.question, ParsonsQuestion):
            return {}

        random.seed(self.random_seed)
        lines = []
        for line in self.question.lines:
            lines.append(render_text(line, self.get_variables()))
        random.shuffle(lines)
        return lines
예제 #2
0
    def get_additional_file(self, submission):
        code = render_text(submission.answer, submission.uqj.get_variables())
        filename = submission.question.additional_file_name

        if not filename:
            return None

        zipfile = BytesIO()
        z = ZipFile(zipfile, "w")
        z.writestr(filename, code)
        z.close()

        return encodebytes(zipfile.getvalue()).decode("UTF-8").strip()
예제 #3
0
    def get_rendered_choices(self):
        if not isinstance(self.question, MultipleChoiceQuestion):
            return {}

        choices = json.loads(self.question.choices) if type(
            self.question.choices) == str else self.question.choices

        keys = list(choices.keys())
        keys = keys[:self.question.visible_distractor_count + 1]

        random.seed(self.random_seed)
        random.shuffle(keys)

        return {
            key: render_text(choices[key], self.get_variables())
            for key in keys
        }
    def get_rendered_choices(self):
        from course.models.multiple_choice import MultipleChoiceQuestion
        if not isinstance(self.question, MultipleChoiceQuestion):
            return {}

        choices = json.loads(self.question.choices) if type(
            self.question.choices) == str else self.question.choices

        keys = list(choices.keys())
        keys = keys[:self.question.visible_distractor_count +
                    len(self.question.answer.split(','))]
        random.seed(self.random_seed)
        random.shuffle(keys)

        return {
            key: render_text(choices[key], self.get_variables())
            for key in keys
        }
    def get_lines(self):
        from course.models.parsons import ParsonsQuestion

        if not isinstance(self.question, ParsonsQuestion):
            return {}

        random.seed(self.random_seed)
        rendered_lines = []
        for input_files in self.question.input_files:
            lines = [
                render_text(line, self.get_variables())
                for line in input_files['lines']
            ]
            random.shuffle(lines)
            rendered_lines.append({
                'name': input_files['name'],
                'lines': lines
            })
        return rendered_lines
 def get_rendered_text(self):
     return render_text(self.question.text, self.get_variables())
예제 #7
0
 def get_source_code(self, submission):
     code = render_text(submission.question.junit_template,
                        submission.uqj.get_variables())
     return code.replace("{{code}}", submission.answer)
 def get_source_code(self, submission):
     source_code = render_text(submission.question.junit_template, submission.uqj.get_variables())
     for filename, code in submission.get_embed_files().items():
         source_code = source_code.replace("{{" + filename + "}}", code)
     return source_code