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

1""" Tablib - HTML export support. 

2""" 

3 

4import codecs 

5from io import BytesIO 

6 

7from MarkupPy import markup 

8 

9 

10class HTMLFormat: 

11 BOOK_ENDINGS = 'h3' 

12 

13 title = 'html' 

14 extensions = ('html', ) 

15 

16 @classmethod 

17 def export_set(cls, dataset): 

18 """HTML representation of a Dataset.""" 

19 

20 stream = BytesIO() 

21 

22 page = markup.page() 

23 page.table.open() 

24 

25 if dataset.headers is not None: 

26 new_header = [item if item is not None else '' for item in dataset.headers] 

27 

28 page.thead.open() 

29 headers = markup.oneliner.th(new_header) 

30 page.tr(headers) 

31 page.thead.close() 

32 

33 for row in dataset: 

34 new_row = [item if item is not None else '' for item in row] 

35 

36 html_row = markup.oneliner.td(new_row) 

37 page.tr(html_row) 

38 

39 page.table.close() 

40 

41 # Allow unicode characters in output 

42 wrapper = codecs.getwriter("utf8")(stream) 

43 wrapper.writelines(str(page)) 

44 

45 return stream.getvalue().decode('utf-8') 

46 

47 @classmethod 

48 def export_book(cls, databook): 

49 """HTML representation of a Databook.""" 

50 

51 stream = BytesIO() 

52 

53 # Allow unicode characters in output 

54 wrapper = codecs.getwriter("utf8")(stream) 

55 

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') 

61 

62 return stream.getvalue().decode('utf-8')