0.5.13 pdf articles export
This commit is contained in:
@@ -9,6 +9,7 @@ from GeneralApp.funcs import get_inter_http_respose
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.urls import reverse
|
||||
from collections import OrderedDict
|
||||
from django.template.loader import render_to_string
|
||||
|
||||
|
||||
def get_tree_arts(art, arts, sel_arts_ids):
|
||||
@@ -27,22 +28,59 @@ def get_tree_arts(art, arts, sel_arts_ids):
|
||||
return docs_tree
|
||||
|
||||
|
||||
# def get_tree_arts(art, arts):
|
||||
#
|
||||
# docs_tree = OrderedDict()
|
||||
# docs_tree.update({
|
||||
# art['name']: {
|
||||
# 'url': art['url'],
|
||||
# 'id': art['id'],
|
||||
# 'children': get_tree_arts(art, DocArt.objects.filter(parent=art)),
|
||||
# } for art in arts.filter(parent=None)
|
||||
# })
|
||||
# return docs_tree
|
||||
import os
|
||||
def link_callback(uri, rel):
|
||||
if settings.STATIC_URL and uri.startswith(settings.STATIC_URL):
|
||||
path = os.path.join(settings.STATIC_ROOT, uri.replace(settings.STATIC_URL, ""))
|
||||
elif settings.MEDIA_URL and uri.startswith(settings.MEDIA_URL):
|
||||
path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
|
||||
else:
|
||||
path = os.path.join(settings.STATIC_ROOT, uri)
|
||||
return path
|
||||
|
||||
|
||||
def _response_pdf(path):
|
||||
|
||||
filePDF = open(path, 'rb')
|
||||
|
||||
content = filePDF.read()
|
||||
# content = str(content)
|
||||
filePDF.close()
|
||||
|
||||
response = HttpResponse(content, content_type='application/pdf')
|
||||
response['Content-Disposition'] = 'filename="{fn}"'.format(fn=os.path.basename(path))
|
||||
return response
|
||||
|
||||
|
||||
def pdf_render(request, template, context, file_name):
|
||||
from BaseModels.functions import url_translit
|
||||
|
||||
filename = url_translit(file_name)
|
||||
|
||||
html = render_to_string(template, context, request)
|
||||
f = open(f'{settings.PDF_FOLDER}/{filename}.html', 'w')
|
||||
f.write(html)
|
||||
f.close()
|
||||
|
||||
os.system(
|
||||
u'{wkhtmltopdf} --load-error-handling ignore --default-header {pdf_folder}/{file_name}.html {pdf_folder}/{file_name}.pdf'.format(
|
||||
wkhtmltopdf=settings.WKHTML_TO_PDF, pdf_folder=settings.PDF_FOLDER, file_name=filename))
|
||||
path = settings.PDF_FOLDER + '/' + filename + '.pdf'
|
||||
# os.system(u'{wkhtmltopdf} {print_folder}/order{filename}.html {print_folder}/order{filename}.pdf'.format(wkhtmltopdf=settings.WKHTML_TO_PDF, print_folder=settings.PRINT_FOLDER))
|
||||
return _response_pdf(path)
|
||||
|
||||
|
||||
|
||||
def DocsView(request, version=None, art_url=None):
|
||||
|
||||
|
||||
|
||||
if art_url and version:
|
||||
|
||||
generate_pdf = False
|
||||
if request.GET and 'pdf' in request.GET and request.GET['pdf'] == 'true':
|
||||
generate_pdf = True
|
||||
|
||||
kwargs = {
|
||||
'enable': True,
|
||||
'url': art_url,
|
||||
@@ -85,10 +123,19 @@ def DocsView(request, version=None, art_url=None):
|
||||
'allow_versions': versions,
|
||||
'breadcrumbs': breadcrumbs,
|
||||
'prev_article': art.get_prev_article(version=vers_obj),
|
||||
'next_article': art.get_next_article(version=vers_obj)
|
||||
'next_article': art.get_next_article(version=vers_obj),
|
||||
'pdf_render': generate_pdf
|
||||
}
|
||||
t = loader.get_template('pages/p_documentation.html')
|
||||
return get_inter_http_respose(t, Dict, request)
|
||||
|
||||
if not generate_pdf:
|
||||
tpl = 'pages/p_documentation.html'
|
||||
t = loader.get_template(tpl)
|
||||
return get_inter_http_respose(t, Dict, request)
|
||||
else:
|
||||
tpl = 'blocks/b_documentation_article.html'
|
||||
# tpl = 'pages/p_documentation.html'
|
||||
return pdf_render(request, tpl, Dict, art.name)
|
||||
|
||||
except DocArt.DoesNotExist:
|
||||
raise Http404
|
||||
|
||||
|
||||
Reference in New Issue
Block a user