From c6153f6818143babb2a4d83e0964011c308db89c Mon Sep 17 00:00:00 2001 From: Dmitriy Shesterkin Date: Tue, 2 May 2017 23:06:06 +0300 Subject: [PATCH] refactor pdf to png method on subprocess, add media url for develop mode --- requirements/base.txt | 1 - src/commons/pdf_tools.py | 1 - src/docs/views/base_views.py | 18 ++++++++++-------- src/dokumentor/urls.py | 12 +++++------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 8d65574..3b0f960 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -34,7 +34,6 @@ djangocms-text-ckeditor==3.1.0 djangocms-video==0.0.1 easy-thumbnails==2.3 flup==1.0.3.dev20161029 -ghostscript==0.4.1 gnureadline==6.3.3 html5lib==0.9999999 httplib2==0.10.3 diff --git a/src/commons/pdf_tools.py b/src/commons/pdf_tools.py index 5bd3519..c549e2a 100644 --- a/src/commons/pdf_tools.py +++ b/src/commons/pdf_tools.py @@ -27,7 +27,6 @@ def render_pdf_to_string(request, template_name, dictionary=None): pdf = pisa.pisaDocument(BytesIO(html.encode('utf-8')), result, encoding='utf-8') pdf_content = result.getvalue() result.close() - print(type(pdf_content)) if not pdf.err: return pdf_content return None diff --git a/src/docs/views/base_views.py b/src/docs/views/base_views.py index b829199..3b46e3d 100644 --- a/src/docs/views/base_views.py +++ b/src/docs/views/base_views.py @@ -6,8 +6,7 @@ import tempfile from email.header import Header from time import time import simplejson as json - -import ghostscript +import subprocess as s from django.contrib import messages from django.db import DatabaseError @@ -404,27 +403,31 @@ class BaseViews(object): os.makedirs(tmp_media_dir) tmp_dir = tempfile.mkdtemp(dir=tmp_media_dir) - os.chmod(tmp_dir, 755) + # os.chmod(tmp_dir, 755) # TODO: check on ubuntu tmp_dirname = os.path.split(tmp_dir)[1] f = open(filename, 'wb') f.write(pdf) f.close() - args = ["", + + args = ["gs", + "-q", "-dNOPAUSE", "-dBATCH", "-dSAFER", "-sDEVICE=png16m", "-r150", "-sOutputFile=%s" % os.path.join(tmp_dir, "page-%03d.png"), "-f", filename ] - GS = ghostscript.Ghostscript(*args) + + p = s.Popen(args=args, stdout=s.PIPE, stderr=s.PIPE) + # # ghostscript.Ghostscript(*args) # TODO: check on ubuntu + p.wait() os.remove(filename) filename = '%s.pdf' % self.get_filename(*args, **kwargs) imgs = glob.glob(os.path.join(tmp_dir, '*.png')) imgs = [os.path.split(i)[1] for i in imgs] imgs = ['%stmp/%s/%s' % (MEDIA_URL, tmp_dirname, i) for i in imgs] email_form = self.EMAIL_FORM_CLASS() - dictionary = { 'obj': obj, 'images': imgs, @@ -444,7 +447,6 @@ class BaseViews(object): # else: # return HttpResponseServerError('Server error. Try later.') - def as_pdf(self, *args, **kwargs): """Вывести документ в формате PDF в HttpResponse.""" try: @@ -535,7 +537,7 @@ class BaseViews(object): initial = {} client = getattr(self.get_obj(kwargs['id']), 'client', None) if client: - initial['to'] = client.contact_email # подставить в форму email клиента + initial['to'] = client.contact_email # подставить в форму email клиента form = self.EMAIL_FORM_CLASS(initial=initial) dictionary = { diff --git a/src/dokumentor/urls.py b/src/dokumentor/urls.py index 9e08c4a..ade4887 100644 --- a/src/dokumentor/urls.py +++ b/src/dokumentor/urls.py @@ -4,8 +4,9 @@ from django.conf import settings from django.conf.urls import patterns, include, url import autocomplete_light - +from django.conf.urls.static import static from django.contrib import admin + admin.autodiscover() autocomplete_light.autodiscover() @@ -30,14 +31,11 @@ urlpatterns = patterns('', if settings.DEBUG: - urlpatterns += patterns('', - url(r'^m/(?P.*)$', 'django.views.static.serve', { - 'document_root': settings.MEDIA_ROOT, - 'show_indexes': True, - }), + urlpatterns.extend( + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ) -if settings.DEBUG: import debug_toolbar urlpatterns = [ url(r'^__debug__/', include(debug_toolbar.urls)),