Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/tablib/formats/_html.py: 27%
36 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1""" Tablib - HTML export support.
2"""
4import codecs
5from io import BytesIO
7from MarkupPy import markup
10class HTMLFormat:
11 BOOK_ENDINGS = 'h3'
13 title = 'html'
14 extensions = ('html', )
16 @classmethod
17 def export_set(cls, dataset):
18 """HTML representation of a Dataset."""
20 stream = BytesIO()
22 page = markup.page()
23 page.table.open()
25 if dataset.headers is not None:
26 new_header = [item if item is not None else '' for item in dataset.headers]
28 page.thead.open()
29 headers = markup.oneliner.th(new_header)
30 page.tr(headers)
31 page.thead.close()
33 for row in dataset:
34 new_row = [item if item is not None else '' for item in row]
36 html_row = markup.oneliner.td(new_row)
37 page.tr(html_row)
39 page.table.close()
41 # Allow unicode characters in output
42 wrapper = codecs.getwriter("utf8")(stream)
43 wrapper.writelines(str(page))
45 return stream.getvalue().decode('utf-8')
47 @classmethod
48 def export_book(cls, databook):
49 """HTML representation of a Databook."""
51 stream = BytesIO()
53 # Allow unicode characters in output
54 wrapper = codecs.getwriter("utf8")(stream)
56 for i, dset in enumerate(databook._datasets):
57 title = (dset.title if dset.title else 'Set %s' % (i))
58 wrapper.write(f'<{cls.BOOK_ENDINGS}>{title}</{cls.BOOK_ENDINGS}>\n')
59 wrapper.write(dset.html)
60 wrapper.write('\n')
62 return stream.getvalue().decode('utf-8')