X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/22af332597f857ee4fe60ea2ebfd8723fd9d5da9..80d789aa009be1449b83b04b5838ebcc15368d68:/apps/reporting/utils.py?ds=sidebyside diff --git a/apps/reporting/utils.py b/apps/reporting/utils.py index 0f04995be..a8a6bb1dd 100755 --- a/apps/reporting/utils.py +++ b/apps/reporting/utils.py @@ -2,6 +2,7 @@ # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # +from errno import ENOENT import os import os.path from django.conf import settings @@ -58,6 +59,27 @@ def render_to_pdf(output_path, template, context=None, add_files=None): shutil.rmtree(tempdir) +def render_to_csv(output_path, template, context=None, add_files=None): + """Renders a TeXML document into a PDF file. + + :param str output_path: is where the PDF file should go + :param str template: is a TeXML template path + :param context: is context for rendering the template + :param dict add_files: a dictionary of additional files XeTeX will need + """ + + from django.template.loader import render_to_string + + try: + os.makedirs(os.path.dirname(output_path)) + except: + pass + + rendered = render_to_string(template, context) + with open(output_path, 'w') as csv_file: + csv_file.write(rendered.encode('utf-8')) + + def read_chunks(f, size=8192): chunk = f.read(size) while chunk: @@ -72,7 +94,11 @@ def generated_file_view(file_name, mime_type, send_name=None, signals=None): send_name = os.path.basename(file_name) def signal_handler(*args, **kwargs): - os.unlink(file_path) + try: + os.unlink(file_path) + except OSError as oe: + if oe.errno != ENOENT: + raise oe if signals: for signal in signals: