General A/B testing.
[wolnelektury.git] / src / reporting / utils.py
index f5d4c33..797542a 100755 (executable)
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
@@ -22,7 +21,7 @@ def render_to_pdf(output_path, template, context=None, add_files=None):
     :param dict add_files: a dictionary of additional files XeTeX will need
     """
 
     :param dict add_files: a dictionary of additional files XeTeX will need
     """
 
-    from StringIO import StringIO
+    from io import BytesIO
     import shutil
     from tempfile import mkdtemp
     import subprocess
     import shutil
     from tempfile import mkdtemp
     import subprocess
@@ -30,10 +29,10 @@ def render_to_pdf(output_path, template, context=None, add_files=None):
     from django.template.loader import render_to_string
 
     rendered = render_to_string(template, context)
     from django.template.loader import render_to_string
 
     rendered = render_to_string(template, context)
-    texml = StringIO(rendered.encode('utf-8'))
+    texml = BytesIO(rendered.encode('utf-8'))
     tempdir = mkdtemp(prefix="render_to_pdf-")
     tex_path = os.path.join(tempdir, "doc.tex")
     tempdir = mkdtemp(prefix="render_to_pdf-")
     tex_path = os.path.join(tempdir, "doc.tex")
-    with open(tex_path, 'w') as tex_file:
+    with open(tex_path, 'wb') as tex_file:
         Texml.processor.process(texml, tex_file, encoding="utf-8")
 
     if add_files:
         Texml.processor.process(texml, tex_file, encoding="utf-8")
 
     if add_files:
@@ -72,7 +71,7 @@ def render_to_csv(output_path, template, context=None, add_files=None):
     makedirs(os.path.dirname(output_path))
 
     rendered = render_to_string(template, context)
     makedirs(os.path.dirname(output_path))
 
     rendered = render_to_string(template, context)
-    with open(output_path, 'w') as csv_file:
+    with open(output_path, 'wb') as csv_file:
         csv_file.write(rendered.encode('utf-8'))
 
 
         csv_file.write(rendered.encode('utf-8'))
 
 
@@ -111,7 +110,7 @@ def generated_file_view(file_name, mime_type, send_name=None, signals=None):
 
             response = HttpResponse(content_type=mime_type)
             response['Content-Disposition'] = 'attachment; filename=%s' % name
 
             response = HttpResponse(content_type=mime_type)
             response['Content-Disposition'] = 'attachment; filename=%s' % name
-            with open(file_path) as f:
+            with open(file_path, 'rb') as f:
                 for chunk in read_chunks(f):
                     response.write(chunk)
             return response
                 for chunk in read_chunks(f):
                     response.write(chunk)
             return response