Beispiel #1
0
 def render(self, qn, idgen, renderer):
     assert self.text is not None, "Short answer question with no question text"
     self.note = renderer.render_text_html(self.note)
     self.rendered = renderer.render_text(self.text)
     template = Template(filename=template_filename("shortanswer"))
     fragment = template.render(question=self, title=qn, id=idgen())
     return fragment
Beispiel #2
0
    def render(self, qn, idgen, renderer):
        """
        Render a question 'in house'.
        """
        if 'random_order' in self.confopts:
            ro = self.confopts['random_order']
            if ro == "yes" or ro == "Yes":
                ro = "Yes"
            elif ro == "no" or ro == "No":
                ro = "No"
            else:
                raise Exception(f"Invalid mcq random_order value, expected 'yes' or 'no' in question starting at line {self.startline}")
            self.random_order = ro
        else:
            self.random_order = "No"

        assert self.index is not None, "MCQ with no correct answer"
        template = Template(filename = template_filename("mcq"))
        self.note = renderer.render_text_html(self.note)
        self.rendered = renderer.render_text(self.stem)
        for option in self.options:
            option.rendered = renderer.render_text(option.text)
        return template.render(
            question = self,
            id = idgen(),
            title = qn
        )
Beispiel #3
0
 def render(self, qn, idgen, renderer):
     assert len(self.options) > 0, "MAQ with no answers"
     template = Template(filename=template_filename("maq"))
     self.note = renderer.render_text_html(self.note)
     self.rendered = renderer.render_text(self.text)
     for option in self.options:
         option.rendered = renderer.render_text(option.text)
     fragment = template.render(question=self, title=qn, id=idgen())
     return fragment
Beispiel #4
0
 def render(self, counter, idgen, renderer):
     """
     Render a question 'in house'.
     """
     assert self.index is not None, "MCQ with no correct answer"
     template = Template(filename=template_filename("mcq"))
     self.rendered = renderer.render_text(self.stem)
     for option in self.options:
         option.rendered = renderer.render_text(option.text)
     return template.render(question=self,
                            id=idgen(),
                            title="Q" + str(counter))
Beispiel #5
0
    def render(self, qn, idgen, renderer):
        template = Template(filename=template_filename("fillblank"))
        rendered = renderer.render_text(self.text)

        bcounter = 0
        while re.search('[{][}]', rendered):
            tag = self.next_tag()
            if bcounter >= len(self.blanks):
                raise Exception(
                    "Fewer answers than {} placeholders in fill-in-the-blank question, starting at line "
                    + str(self.startline))
            answer = self.blanks[bcounter]
            self.mapping[tag] = answer
            bcounter += 1
            rendered = rendered.replace('{}', f"[{tag}]", 1)
        self.rendered = rendered
        if bcounter < len(self.blanks):
            raise Exception(
                "More answers than {} placeholders in fill-in-the-blank question starting at line "
                + str(self.startline))

        return template.render(question=self, id=idgen(), title=qn)
Beispiel #6
0
 def display(self, fmt):
     t = Template(filename=template_filename("html_blanks"))
     return t.render(question=self, fmt=fmt)
Beispiel #7
0
 def render(self, qn, idgen, renderer):
     template = Template(filename=template_filename("numeric"))
     self.note = renderer.render_text_html(self.note)
     self.rendered = renderer.render_text(self.text)
     return template.render(question=self, id=idgen(), title=qn)
Beispiel #8
0
 def display(self, fmt):
     """
     Return a view of this question for the HTML output.
     """
     t = Template(filename=template_filename("html_mcq"))
     return t.render(question=self, fmt=fmt)
Beispiel #9
0
 def render(self, qn, idgen, renderer):
     template = Template(filename=template_filename("jumbled"))
     self.rendered = renderer.render_text(self.text2)
     return template.render(question=self, id=idgen(), title=qn)
Beispiel #10
0
 def render(self, counter, idgen, renderer):
     template = Template(filename=template_filename("numeric"))
     self.rendered = renderer.render_text(self.text)
     return template.render(question=self,
                            id=idgen(),
                            title="Q" + str(counter))