prawda/falsz questions
[librarian.git] / librarian / pyhtml.py
index 909217a..d3314cc 100644 (file)
@@ -94,7 +94,8 @@ class EduModule(Xmill):
             'uporzadkuj': Uporzadkuj,
             'luki': Luki,
             'zastap': Zastap,
             'uporzadkuj': Uporzadkuj,
             'luki': Luki,
             'zastap': Zastap,
-            'przyporzadkuj': Przyporzadkuj
+            'przyporzadkuj': Przyporzadkuj,
+            'prawdafalsz': PrawdaFalsz
             }
         
         typ = element.attrib['typ']
             }
         
         typ = element.attrib['typ']
@@ -137,6 +138,9 @@ class Excercise(EduModule):
         self.question_counter = 0
         super(Excercise, self).__init__(*args, **kw)
 
         self.question_counter = 0
         super(Excercise, self).__init__(*args, **kw)
 
+    def handle_rozw_kom(self, element):
+        return None
+
     def handle_cwiczenie(self, element):
         self.options = {'excercise': element.attrib['typ']}
         self.question_counter = 0
     def handle_cwiczenie(self, element):
         self.options = {'excercise': element.attrib['typ']}
         self.question_counter = 0
@@ -173,7 +177,7 @@ class Excercise(EduModule):
 
         return '<div class="question" data-no="%d" %s>' %\
             (self.question_counter, solution_s), \
 
         return '<div class="question" data-no="%d" %s>' %\
             (self.question_counter, solution_s), \
-    "</div>"    
+    "</div>"
 
 
 class Wybor(Excercise):
 
 
 class Wybor(Excercise):
@@ -183,8 +187,9 @@ class Wybor(Excercise):
             self.piece_counter += 1
             no = self.piece_counter
             eid = "q%(qc)d_%(no)d" % locals()
             self.piece_counter += 1
             no = self.piece_counter
             eid = "q%(qc)d_%(no)d" % locals()
+            aname = element.attrib.get('nazwa', None)
             return u"""
             return u"""
-<li class="question-piece" data-qc="%(qc)d" data-no="%(no)d">
+<li class="question-piece" data-qc="%(qc)d" data-no="%(no)d" data-name="%(aname)s">
 <input type="checkbox" name="" id="%(eid)s" />
 <label for="%(eid)s">
 """ % locals(), u"</label></li>"
 <input type="checkbox" name="" id="%(eid)s" />
 <label for="%(eid)s">
 """ % locals(), u"</label></li>"
@@ -194,15 +199,18 @@ class Wybor(Excercise):
 
 
 class Uporzadkuj(Excercise):
 
 
 class Uporzadkuj(Excercise):
-    def handle_cwiczenie(self, element):
-        pre, post = super(Uporzadkuj, self).handle_cwiczenie(element)
+    def handle_pytanie(self, element):
+        """
+Overrides the returned content default handle_pytanie
+        """
+        # we ignore the result, returning our own
+        super(Uporzadkuj, self).handle_pytanie(element)
         order_items = element.xpath(".//punkt/@rozw")
         order_items = element.xpath(".//punkt/@rozw")
-        if order_items == []: pdb.set_trace()
 
 
-        return pre + u"""<div class="question" data-original="%s">""" % \
-            ','.join(order_items), \
-            u"""</div>""" + post
-    
+        return u"""<div class="question" data-original="%s" data-no="%s">""" % \
+            (','.join(order_items), self.question_counter), \
+            u"""</div>"""
+
     def handle_punkt(self, element):
         return """<li class="question-piece" data-pos="%(rozw)s"/>""" \
             % element.attrib,\
     def handle_punkt(self, element):
         return """<li class="question-piece" data-pos="%(rozw)s"/>""" \
             % element.attrib,\
@@ -214,7 +222,6 @@ class Luki(Excercise):
         return '<input type="text" class="luka question-piece" data-solution="%s"></input>' % element.text
 
 
         return '<input type="text" class="luka question-piece" data-solution="%s"></input>' % element.text
 
 
-
 class Zastap(Excercise):
     def handle_zastap(self, element):
         return '<span class="zastap question-piece" data-solution="%(rozw)s">' % element.attrib, '</span>'
 class Zastap(Excercise):
     def handle_zastap(self, element):
         return '<span class="zastap question-piece" data-solution="%(rozw)s">' % element.attrib, '</span>'
@@ -237,20 +244,31 @@ class Przyporzadkuj(Excercise):
             self.options = {'subject': True}
         else:
             attrs = {}
             self.options = {'subject': True}
         else:
             attrs = {}
-        return super(Przyporzadkuj, self).handle_lista(lista, attrs)  
-
+        pre, post = super(Przyporzadkuj, self).handle_lista(lista, attrs)
+        return pre, post + '<br class="clr"/>'
 
     def handle_punkt(self, element):
         print "in punkt %s %s" % (element.attrib, self.options)
 
         if self.options['subject']:
 
     def handle_punkt(self, element):
         print "in punkt %s %s" % (element.attrib, self.options)
 
         if self.options['subject']:
-            return '<li data-solution="%(rozw)s" class="question-piece draggable multiple">' % element.attrib, '</li>'
+            return '<li data-solution="%(rozw)s" class="question-piece draggable">' % element.attrib, '</li>'
         elif self.options['predicate']:
         elif self.options['predicate']:
-            return '<li data-predicate="%(nazwa)s">' % element.attrib, '<ul class="subjects droppable"><li>Placeholder</li></ul></li>'
+            print etree.tostring(element, encoding=unicode)
+            return '<li data-predicate="%(nazwa)s">' % element.attrib, '<ul class="subjects droppable"></ul></li>'
         else:
             return super(Przyporzadkuj, self).handle_punkt(element)
 
 
         else:
             return super(Przyporzadkuj, self).handle_punkt(element)
 
 
+class PrawdaFalsz(Excercise):
+    def handle_punkt(self, element):
+        if 'rozw' in element.attrib:
+            return u'''<li data-solution="%s" class="question-piece">
+            <span class="buttons">
+            <a href="#" data-value="true" class="true">Prawda</a>
+            <a href="#" data-value="false" class="false">Fałsz</a>
+        </span>''' % {'prawda': 'true', 'falsz': 'false'}[element.attrib['rozw']], '</li>'
+        else:
+            return super(PrawdaFalsz, self).handle_punkt(element)
 
 
 def transform(wldoc, stylesheet='edumed', options=None, flags=None):
 
 
 def transform(wldoc, stylesheet='edumed', options=None, flags=None):
@@ -260,7 +278,6 @@ def transform(wldoc, stylesheet='edumed', options=None, flags=None):
     otherwise returns True if file has been written,False if it hasn't.
     File won't be written if it has no content.
     """
     otherwise returns True if file has been written,False if it hasn't.
     File won't be written if it has no content.
     """
-    
     edumod = EduModule(options)
 #    from pdb import set_trace; set_trace()
     html = edumod.generate(wldoc.edoc.getroot())
     edumod = EduModule(options)
 #    from pdb import set_trace; set_trace()
     html = edumod.generate(wldoc.edoc.getroot())