def add_workbook(self, archive): """ Add MSExcel workbook to payload of archive. """ stream_merge = lambda s: reduce(lambda a, b: '%s%s' % (a, b), s, '') _series = IFormSeries.providedBy(self.context) xls_view_cls = SeriesXLSView if _series else DatasetXLSView view = xls_view_cls(self.context, self.request) view.update() filename = view.filename() payload_iter = view.payload() # iterator of 64k blocks payload = stream_merge(list(payload_iter)) # concatenate together archive.writestr(filename, payload)
def __init__(self, context, request): if not IFormSeries.providedBy(context): raise ValueError('%s does not provide IFormSeries' % context) self.context = context self.request = request