X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/893924685f2bc659cb71d7c68501fc3cf1daa0f0..22290f82670463d15f15f42cf1fe3ead76a6c08e:/librarian/pypdf.py?ds=sidebyside diff --git a/librarian/pypdf.py b/librarian/pypdf.py index b261eb6..bb2881f 100644 --- a/librarian/pypdf.py +++ b/librarian/pypdf.py @@ -66,9 +66,10 @@ def mark_alien_characters(text): class EduModule(Xmill): - def __init__(self, options=None): - super(EduModule, self).__init__(options) + def __init__(self, options=None, state=None): + super(EduModule, self).__init__(options, state) self.activity_counter = 0 + self.activity_last = None self.exercise_counter = 0 def swap_endlines(txt): @@ -106,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): @@ -173,10 +174,6 @@ class EduModule(Xmill): handle_naglowek_czesc = \ handle_naglowek_listy = \ handle_naglowek_osoba = \ - handle_naglowek_podrozdzial = \ - handle_naglowek_podrozdzial = \ - handle_naglowek_rozdzial = \ - handle_naglowek_rozdzial = \ handle_naglowek_scena = \ handle_nazwa_utworu = \ handle_nota = \ @@ -197,6 +194,30 @@ class EduModule(Xmill): handle_dywiz = \ handle_texcommand + def handle_naglowek_rozdzial(self, element): + if not self.options['teacher']: + if element.text.startswith((u'Wiedza', u'Zadania', u'Słowniczek', u'Dla ucznia')): + self.state['mute'] = False + else: + self.state['mute'] = True + return None + 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 def handle_extra(self, _e): @@ -218,7 +239,7 @@ class EduModule(Xmill): 'activity_counter': self.activity_counter, 'sub_gen': True, } - submill = EduModule(self.options) + submill = EduModule(self.options, self.state) if element.xpath('opis'): opis = submill.generate(element.xpath('opis')[0]) @@ -240,9 +261,16 @@ class EduModule(Xmill): counter = self.activity_counter + if element.getnext().tag == 'aktywnosc' or (self.activity_last and self.activity_last.getnext() == element): + counter_tex = """%(counter)d.""" % locals() + else: + counter_tex = '' + + self.activity_last = element + return u""" -%(counter)d. +%(counter_tex)s %(czas)s %(forma)s @@ -280,9 +308,7 @@ class EduModule(Xmill): if surl is None: # print '** missing src on , 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', @@ -311,7 +337,7 @@ class EduModule(Xmill): if not typ in exercise_handlers: return '(no handler)' self.options = {'exercise_counter': self.exercise_counter} - handler = exercise_handlers[typ](self.options) + handler = exercise_handlers[typ](self.options, self.state) return handler.generate(element) # XXX this is copied from pyhtml.py, except for return and @@ -324,11 +350,14 @@ 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': - subgen = EduModule(self.options) + subgen = EduModule(self.options, self.state) definiens_s = subgen.generate(definiens) return u'', u": " + definiens_s @@ -380,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)