From d11ef5c17b766241762faa8a38587e298e296459 Mon Sep 17 00:00:00 2001 From: mattack108 Date: Tue, 15 Jan 2013 11:59:25 +0000 Subject: PEP8 all the things! --- wkhtmltopdf/views.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'wkhtmltopdf/views.py') diff --git a/wkhtmltopdf/views.py b/wkhtmltopdf/views.py index 94cbbf9..e888d09 100644 --- a/wkhtmltopdf/views.py +++ b/wkhtmltopdf/views.py @@ -16,7 +16,7 @@ class PDFResponse(HttpResponse): """HttpResponse that sets the headers for PDF output.""" def __init__(self, content, mimetype=None, status=200, content_type=None, - filename=None, show_content_in_browser=None, *args, **kwargs): + filename=None, show_content_in_browser=None, *args, **kwargs): if content_type is None: content_type = 'application/pdf' @@ -149,19 +149,17 @@ class PDFTemplateResponse(TemplateResponse, PDFResponse): f.close() def make_absolute_paths(self, content): - """Convert all MEDIA files into a file://URL paths in order to correctly get it displayed in PDFs - - mattl's disclaimer: I know it sucks, but it works and I haz no time for better solution now - """ + """Convert all MEDIA files into a file://URL paths in order to + correctly get it displayed in PDFs.""" overrides = [ { - 'root': settings.MEDIA_ROOT, - 'url': settings.MEDIA_URL, + 'root': settings.MEDIA_ROOT, + 'url': settings.MEDIA_URL, }, { - 'root': settings.STATIC_ROOT, - 'url': settings.STATIC_URL, + 'root': settings.STATIC_ROOT, + 'url': settings.STATIC_URL, } ] has_scheme = re.compile(r'^[^:/]+://') @@ -173,8 +171,8 @@ class PDFTemplateResponse(TemplateResponse, PDFResponse): if not x['root'].endswith('/'): x['root'] += '/' - occurences = re.findall('''["|']({0}.*?)["|']'''.format(x['url']), - content) + occur_pattern = '''["|']({0}.*?)["|']''' + occurences = re.findall(occur_pattern.format(x['url']), content) occurences = list(set(occurences)) # Remove dups for occur in occurences: content = content.replace(occur, @@ -190,7 +188,7 @@ class PDFTemplateView(TemplateView): # Filename for downloaded PDF. If None, the response is inline. filename = 'rendered_pdf.pdf' - # Send file as attachement, or if True render content in the browser. + # Send file as attachement. If True render content in the browser. show_content_in_browser = False # Filenames for the content, header, and footer templates. -- cgit v1.2.3 From 461178373f0b9f3d552bc0b2a546a4cd35599923 Mon Sep 17 00:00:00 2001 From: mattack108 Date: Tue, 15 Jan 2013 12:06:12 +0000 Subject: Send good headers, in correct format --- wkhtmltopdf/views.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'wkhtmltopdf/views.py') diff --git a/wkhtmltopdf/views.py b/wkhtmltopdf/views.py index e888d09..0fa0b02 100644 --- a/wkhtmltopdf/views.py +++ b/wkhtmltopdf/views.py @@ -30,9 +30,10 @@ class PDFResponse(HttpResponse): def set_filename(self, filename, show_content_in_browser): self.filename = filename if filename: - fileheader = 'attachment; filename={0}' + # mattl: file name surrounded by double qoutes, per RFC2231 + fileheader = 'attachment; filename="{0}"' if show_content_in_browser: - fileheader = 'filename={0}' + fileheader = 'inline; filename="{0}"' filename = content_disposition_filename(filename) header_content = fileheader.format(filename) -- cgit v1.2.3 From ce103cd4391cfee5096c9891a15403cf2493121a Mon Sep 17 00:00:00 2001 From: mattack108 Date: Tue, 15 Jan 2013 15:12:13 +0000 Subject: Remove double quotes from filename as it's done by content_disposition_filename --- wkhtmltopdf/views.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'wkhtmltopdf/views.py') diff --git a/wkhtmltopdf/views.py b/wkhtmltopdf/views.py index 0fa0b02..7974fc0 100644 --- a/wkhtmltopdf/views.py +++ b/wkhtmltopdf/views.py @@ -30,10 +30,9 @@ class PDFResponse(HttpResponse): def set_filename(self, filename, show_content_in_browser): self.filename = filename if filename: - # mattl: file name surrounded by double qoutes, per RFC2231 - fileheader = 'attachment; filename="{0}"' + fileheader = 'attachment; filename={0}' if show_content_in_browser: - fileheader = 'inline; filename="{0}"' + fileheader = 'inline; filename={0}' filename = content_disposition_filename(filename) header_content = fileheader.format(filename) -- cgit v1.2.3 From 8410054212002609dd1521152bcb80fda9fade2e Mon Sep 17 00:00:00 2001 From: mattack108 Date: Tue, 15 Jan 2013 15:21:41 +0000 Subject: Remove old unused arg from PDFTemplateResponse class --- wkhtmltopdf/views.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'wkhtmltopdf/views.py') diff --git a/wkhtmltopdf/views.py b/wkhtmltopdf/views.py index 7974fc0..fd68c0a 100644 --- a/wkhtmltopdf/views.py +++ b/wkhtmltopdf/views.py @@ -48,8 +48,7 @@ class PDFTemplateResponse(TemplateResponse, PDFResponse): status=None, content_type=None, current_app=None, filename=None, show_content_in_browser=None, header_template=None, footer_template=None, - cmd_options=None, override_settings=None, - *args, **kwargs): + cmd_options=None, *args, **kwargs): super(PDFTemplateResponse, self).__init__(request=request, template=template, -- cgit v1.2.3 From 813537e4adb811f10011349ce06bee0de0775dc6 Mon Sep 17 00:00:00 2001 From: mattack108 Date: Tue, 15 Jan 2013 15:48:13 +0000 Subject: Move make_absolute_paths to utils so it can be used in tests --- wkhtmltopdf/views.py | 41 ++++------------------------------------- 1 file changed, 4 insertions(+), 37 deletions(-) (limited to 'wkhtmltopdf/views.py') diff --git a/wkhtmltopdf/views.py b/wkhtmltopdf/views.py index fd68c0a..5a46490 100644 --- a/wkhtmltopdf/views.py +++ b/wkhtmltopdf/views.py @@ -1,7 +1,6 @@ from __future__ import absolute_import from tempfile import NamedTemporaryFile -import re from django.conf import settings from django.http import HttpResponse @@ -9,7 +8,8 @@ from django.template.response import TemplateResponse from django.utils.encoding import smart_str from django.views.generic import TemplateView -from .utils import content_disposition_filename, pathname2fileurl, wkhtmltopdf +from .utils import (content_disposition_filename, make_absolute_paths, + wkhtmltopdf) class PDFResponse(HttpResponse): @@ -73,9 +73,9 @@ class PDFTemplateResponse(TemplateResponse, PDFResponse): template = self.resolve_template(template_name) context = self.resolve_context(self.context_data) - content = smart_str(template.render(context)) - content = self.make_absolute_paths(content) + content = smart_str(template.render(context)) + content = make_absolute_paths(content) tempfile = NamedTemporaryFile(mode=mode, bufsize=bufsize, suffix=suffix, prefix=prefix, @@ -147,39 +147,6 @@ class PDFTemplateResponse(TemplateResponse, PDFResponse): for f in filter(None, (input_file, header_file, footer_file)): f.close() - def make_absolute_paths(self, content): - """Convert all MEDIA files into a file://URL paths in order to - correctly get it displayed in PDFs.""" - - overrides = [ - { - 'root': settings.MEDIA_ROOT, - 'url': settings.MEDIA_URL, - }, - { - 'root': settings.STATIC_ROOT, - 'url': settings.STATIC_URL, - } - ] - has_scheme = re.compile(r'^[^:/]+://') - - for x in overrides: - if has_scheme.match(x['url']): - continue - - if not x['root'].endswith('/'): - x['root'] += '/' - - occur_pattern = '''["|']({0}.*?)["|']''' - occurences = re.findall(occur_pattern.format(x['url']), content) - occurences = list(set(occurences)) # Remove dups - for occur in occurences: - content = content.replace(occur, - pathname2fileurl(x['root']) + - occur[len(x['url']):]) - - return content - class PDFTemplateView(TemplateView): """Class-based view for HTML templates rendered to PDF.""" -- cgit v1.2.3