mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +00:00 
			
		
		
		
	| @@ -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']: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user