Skip to content

Commit

Permalink
merge release/0.4.3
Browse files Browse the repository at this point in the history
  • Loading branch information
CI committed Jan 9, 2019
2 parents 7638f2a + d88f0ef commit 6290216
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 7 deletions.
4 changes: 4 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
Release 0.4.3
-------------
* Format dataset to be rendered once

Release 0.4.2
-------------
* PDF renderer gracefully handles large blobs of text
Expand Down
2 changes: 1 addition & 1 deletion src/unicef_rest_export/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
NAME = 'unicef_rest_export'
VERSION = __version__ = "0.4.2"
VERSION = __version__ = "0.4.3"
__author__ = 'UNICEF'
15 changes: 9 additions & 6 deletions src/unicef_rest_export/renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,23 +169,22 @@ class ExportPDFRenderer(ExportFileRenderer):
media_type = "application/pdf"
format = "pdf"

def export_set(self, dataset, columns_per_page):
def export_set(self, formatted, headers, columns_per_page):
stream = BytesIO()
doc = SimpleDocTemplate(stream, pagesize=landscape(letter))
styles = getSampleStyleSheet()
styleCell = styles["Normal"]
styleCell.fontSize = 7
elements = []

if dataset.headers:
if headers:
# slice the data into a set number of columns
# in order to fit on the page
formatted = dataset._package()
for start in range(0, len(dataset.headers), columns_per_page):
for start in range(0, len(headers), columns_per_page):
end = start + columns_per_page
data = [['Row'] + [
item if item is not None else ''
for item in dataset.headers[start:end]
for item in headers[start:end]
]]

row_num = 1
Expand Down Expand Up @@ -229,12 +228,16 @@ def export_failure(self):
return stream.getvalue()

def render_dataset(self, data, *args, **kwargs):
formatted = data._package()
headers = data.headers
with open(self.filename, "wb") as fp:
columns_per_page = PDF_COLUMNS_PER_PAGE
success = False
while columns_per_page > 1:
try:
fp.write(self.export_set(data, columns_per_page))
fp.write(
self.export_set(formatted, headers, columns_per_page)
)
except LayoutError:
columns_per_page -= 1
else:
Expand Down

0 comments on commit 6290216

Please sign in to comment.