mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Merge remote-tracking branch 'inventree/master'
This commit is contained in:
commit
2f88cc9fe0
@ -8,6 +8,8 @@ from __future__ import unicode_literals
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
@ -29,11 +31,22 @@ except OSError as err:
|
|||||||
if settings.LATEX_ENABLED:
|
if settings.LATEX_ENABLED:
|
||||||
try:
|
try:
|
||||||
from django_tex.shortcuts import render_to_pdf
|
from django_tex.shortcuts import render_to_pdf
|
||||||
|
from django_tex.core import render_template_with_context
|
||||||
|
from django_tex.exceptions import TexError
|
||||||
except OSError as err:
|
except OSError as err:
|
||||||
print("OSError: {e}".format(e=err))
|
print("OSError: {e}".format(e=err))
|
||||||
print("You may not have a working LaTeX toolchain installed?")
|
print("You may not have a working LaTeX toolchain installed?")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
from django.http import HttpResponse
|
||||||
|
|
||||||
|
|
||||||
|
class TexResponse(HttpResponse):
|
||||||
|
def __init__(self, content, filename=None):
|
||||||
|
super().__init__(content_type="application/txt")
|
||||||
|
self["Content-Disposition"] = 'filename="{}"'.format(filename)
|
||||||
|
self.write(content)
|
||||||
|
|
||||||
|
|
||||||
def rename_template(instance, filename):
|
def rename_template(instance, filename):
|
||||||
|
|
||||||
@ -150,11 +163,20 @@ class ReportTemplateBase(models.Model):
|
|||||||
context = self.get_context_data(request)
|
context = self.get_context_data(request)
|
||||||
|
|
||||||
context['request'] = request
|
context['request'] = request
|
||||||
|
context['user'] = request.user
|
||||||
|
context['datetime'] = datetime.datetime.now()
|
||||||
|
|
||||||
if self.extension == '.tex':
|
if self.extension == '.tex':
|
||||||
# Render LaTeX template to PDF
|
# Render LaTeX template to PDF
|
||||||
if settings.LATEX_ENABLED:
|
if settings.LATEX_ENABLED:
|
||||||
|
# Attempt to render to LaTeX template
|
||||||
|
# If there is a rendering error, return the (partially rendered) template,
|
||||||
|
# so at least we can debug what is going on
|
||||||
|
try:
|
||||||
|
rendered = render_template_with_context(self.template_name, context)
|
||||||
return render_to_pdf(request, self.template_name, context, filename=filename)
|
return render_to_pdf(request, self.template_name, context, filename=filename)
|
||||||
|
except TexError:
|
||||||
|
return TexResponse(rendered, filename="error.tex")
|
||||||
else:
|
else:
|
||||||
return ValidationError("Enable LaTeX support in config.yaml")
|
return ValidationError("Enable LaTeX support in config.yaml")
|
||||||
elif self.extension in ['.htm', '.html']:
|
elif self.extension in ['.htm', '.html']:
|
||||||
|
Loading…
Reference in New Issue
Block a user