ugly fix (error reporting)
[librarian.git] / librarian / pypdf.py
index 59b2cc4..bb2881f 100644 (file)
@@ -107,7 +107,7 @@ class EduModule(Xmill):
                 dc.authors_expert
         else:
             authors = getattr(dc, "authors_%s" % which)
-        return u', '.join(author.readable() for author in authors)
+        return u', '.join(author.readable() for author in authors if author)
 
     @escape(1)
     def get_title(self, element):
@@ -174,7 +174,6 @@ class EduModule(Xmill):
     handle_naglowek_czesc = \
     handle_naglowek_listy = \
     handle_naglowek_osoba = \
-    handle_naglowek_podrozdzial = \
     handle_naglowek_scena = \
     handle_nazwa_utworu = \
     handle_nota = \
@@ -197,7 +196,7 @@ class EduModule(Xmill):
 
     def handle_naglowek_rozdzial(self, element):
         if not self.options['teacher']:
-            if element.text.startswith((u'Wiedza', u'Zadania', u'Słowniczek')):
+            if element.text.startswith((u'Wiedza', u'Zadania', u'Słowniczek', u'Dla ucznia')):
                 self.state['mute'] = False
             else:
                 self.state['mute'] = True
@@ -205,6 +204,19 @@ class EduModule(Xmill):
         return self.handle_texcommand(element)
     handle_naglowek_rozdzial.unmuter = True
 
+    def handle_naglowek_podrozdzial(self, element):
+        self.activity_counter = 0
+        if not self.options['teacher']:
+            if element.text.startswith(u'Dla ucznia'):
+                self.state['mute'] = False
+                return None
+            elif element.text.startswith(u'Dla nauczyciela'):
+                self.state['mute'] = True
+                return None
+            elif self.state['mute']:
+                return None
+        return self.handle_texcommand(element)
+    handle_naglowek_podrozdzial.unmuter = True
 
     def handle_uwaga(self, _e):
         return None
@@ -249,7 +261,7 @@ class EduModule(Xmill):
 
         counter = self.activity_counter
 
-        if element.getnext().tag == 'aktywnosc' or self.activity_last.getnext() == element:
+        if element.getnext().tag == 'aktywnosc' or (self.activity_last and self.activity_last.getnext() == element):
             counter_tex = """<cmd name="activitycounter"><parm>%(counter)d.</parm></cmd>""" % locals()
         else:
             counter_tex = ''
@@ -296,9 +308,7 @@ class EduModule(Xmill):
             if surl is None:
                 # print '** missing src on <slowniczek>, setting default'
                 surl = 'http://edukacjamedialna.edu.pl/lekcje/slowniczek/'
-            sxml = None
-            if surl:
-                sxml = etree.fromstring(self.options['wldoc'].provider.by_uri(surl).get_string())
+            sxml = etree.fromstring(self.options['wldoc'].provider.by_uri(surl).get_string())
             self.options = {'slowniczek': True, 'slowniczek_xml': sxml }
 
         listcmd = {'num': 'enumerate',
@@ -340,7 +350,10 @@ class EduModule(Xmill):
         if self.options['slowniczek_xml'] is not None and (nxt is None or nxt.tag != 'definiens'):
             sxml = self.options['slowniczek_xml']
             assert element.text != ''
-            defloc = sxml.xpath("//definiendum[text()='%s']" % element.text)
+            if "'" in (element.text or ''):
+                defloc = sxml.xpath("//definiendum[text()=\"%s\"]" % (element.text or '').strip())
+            else:
+                defloc = sxml.xpath("//definiendum[text()='%s']" % (element.text or '').strip())
             if defloc:
                 definiens = defloc[0].getnext()
                 if definiens.tag == 'definiens':
@@ -396,6 +409,7 @@ class EduModule(Xmill):
         frmt = self.options['format']
         name = element.attrib.get('nazwa', '').strip()
         image = frmt.get_image(name.strip())
+        name = image.get_filename().rsplit('/', 1)[-1]
         img_path = "obraz/%s" % name.replace("_", "")
         frmt.attachments[img_path] = image
         return cmd("obraz", parms=[img_path])(self)