fnp
/
librarian.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
no additional formats links if not needed
[librarian.git]
/
librarian
/
pyhtml.py
diff --git
a/librarian/pyhtml.py
b/librarian/pyhtml.py
index
c039ab8
..
64ac47f
100644
(file)
--- a/
librarian/pyhtml.py
+++ b/
librarian/pyhtml.py
@@
-11,6
+11,8
@@
import re
import random
import random
+DEFAULT_MATERIAL_FORMAT = 'odt'
+
class EduModule(Xmill):
def __init__(self, options=None):
class EduModule(Xmill):
def __init__(self, options=None):
@@
-37,6
+39,12
@@
class EduModule(Xmill):
handle_naglowek_osoba = handle_naglowek_podrozdzial = tag('h3')
handle_akap = handle_akap_dialog = handle_akap_cd = tag('p', 'paragraph')
handle_strofa = tag('div', 'stanza')
handle_naglowek_osoba = handle_naglowek_podrozdzial = tag('h3')
handle_akap = handle_akap_dialog = handle_akap_cd = tag('p', 'paragraph')
handle_strofa = tag('div', 'stanza')
+ handle_wyroznienie = tag('em')
+ handle_tytul_dziela = tag('em', 'title')
+ handle_slowo_obce = tag('em', 'foreign')
+
+ def handle_uwaga(self, _e):
+ return None
def handle_aktywnosc(self, element):
self.activity_counter += 1
def handle_aktywnosc(self, element):
self.activity_counter += 1
@@
-157,7
+165,6
@@
class EduModule(Xmill):
def handle_definiens(self, element):
return u"<dd>", u"</dd>"
def handle_definiens(self, element):
return u"<dd>", u"</dd>"
-
def handle_podpis(self, element):
return u"""<div class="caption">""", u"</div>"
def handle_podpis(self, element):
return u"""<div class="caption">""", u"</div>"
@@
-179,14
+186,19
@@
class EduModule(Xmill):
def handle_link(self, element):
if 'url' in element.attrib:
def handle_link(self, element):
if 'url' in element.attrib:
- return tag('a', href=element.attrib['url'])(element)
+ return tag('a', href=element.attrib['url'])(
self,
element)
elif 'material' in element.attrib:
elif 'material' in element.attrib:
- formats = re.split(r"[, ]+", element.attrib['format'])
+ formats = re.split(r"[, ]+",
+ element.attrib.get('format', DEFAULT_MATERIAL_FORMAT))
+ make_url = lambda f: self.options['urlmapper'] \
+ .url_for_material(element.attrib['material'], f)
+ def_href = make_url(formats[0])
fmt_links = []
fmt_links = []
- for f in formats:
- fmt_links.append(u'<a href="%s">%s</a>' % (self.options['urlmapper'].url_for_material(element.attrib['material'], f), f.upper()))
+ for f in formats[1:]:
+ fmt_links.append(u'<a href="%s">%s</a>' % (make_url(f), f.upper()))
+ more_links = u' (%s)' % u', '.join(fmt_links) if fmt_links else u''
- return u"
", u' (%s)' % u' '.join(fmt_links)
+ return u"
<a href='%s'>" % def_href, u'</a>%s' % more_links
class Exercise(EduModule):
class Exercise(EduModule):
@@
-194,6
+206,8
@@
class Exercise(EduModule):
self.question_counter = 0
super(Exercise, self).__init__(*args, **kw)
self.question_counter = 0
super(Exercise, self).__init__(*args, **kw)
+ handle_opis = tag('div', 'description')
+
def handle_rozw_kom(self, element):
return u"""<div style="display:none" class="comment">""", u"""</div>"""
def handle_rozw_kom(self, element):
return u"""<div style="display:none" class="comment">""", u"""</div>"""
@@
-257,6
+271,13
@@
class Wybor(Exercise):
if len(solutions) != 1:
is_single_choice = False
break
if len(solutions) != 1:
is_single_choice = False
break
+ choices = element.xpath(".//*[@nazwa]")
+ uniq = set()
+ for n in choices: uniq.add(n.attrib['nazwa'])
+ if len(choices) != len(uniq):
+ is_single_choice = False
+ break
+
self.options = {'single': is_single_choice}
return pre, post
self.options = {'single': is_single_choice}
return pre, post
@@
-378,7
+399,7
@@
class Przyporzadkuj(Exercise):
if self.options['subject']:
self.piece_counter += 1
if self.options['handles']:
if self.options['subject']:
self.piece_counter += 1
if self.options['handles']:
- return '<li><span data-solution="%s" data-no="%s" class="question-piece draggable handle">%s</span>' % (element.attrib['rozw'], self.piece_counter, self.piece_counter), '</li>'
+ return '<li><span data-solution="%s" data-no="%s" class="question-piece draggable handle
add-li
">%s</span>' % (element.attrib['rozw'], self.piece_counter, self.piece_counter), '</li>'
else:
return '<li data-solution="%s" data-no="%s" class="question-piece draggable">' % (element.attrib['rozw'], self.piece_counter), '</li>'
else:
return '<li data-solution="%s" data-no="%s" class="question-piece draggable">' % (element.attrib['rozw'], self.piece_counter), '</li>'