mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +00:00 
			
		
		
		
	Revoke support for LaTex reporting
This commit is contained in:
		| @@ -208,7 +208,6 @@ INSTALLED_APPS = [ | ||||
|     'mptt',                                 # Modified Preorder Tree Traversal | ||||
|     'markdownx',                            # Markdown editing | ||||
|     'markdownify',                          # Markdown template rendering | ||||
|     'django_tex',                           # LaTeX output | ||||
|     'django_admin_shell',                   # Python shell for the admin interface | ||||
|     'djmoney',                              # django-money integration | ||||
|     'djmoney.contrib.exchange',             # django-money exchange rates | ||||
| @@ -265,14 +264,6 @@ TEMPLATES = [ | ||||
|             ], | ||||
|         }, | ||||
|     }, | ||||
|     # Backend for LaTeX report rendering | ||||
|     { | ||||
|         'NAME': 'tex', | ||||
|         'BACKEND': 'django_tex.engine.TeXEngine', | ||||
|         'DIRS': [ | ||||
|             os.path.join(MEDIA_ROOT, 'report'), | ||||
|         ] | ||||
|     }, | ||||
| ] | ||||
|  | ||||
| REST_FRAMEWORK = { | ||||
| @@ -485,22 +476,6 @@ DATE_INPUT_FORMATS = [ | ||||
|     "%Y-%m-%d", | ||||
| ] | ||||
|  | ||||
| # LaTeX rendering settings (django-tex) | ||||
| LATEX_SETTINGS = CONFIG.get('latex', {}) | ||||
|  | ||||
| # Is LaTeX rendering enabled? (Off by default) | ||||
| LATEX_ENABLED = LATEX_SETTINGS.get('enabled', False) | ||||
|  | ||||
| # Set the latex interpreter in the config.yaml settings file | ||||
| LATEX_INTERPRETER = LATEX_SETTINGS.get('interpreter', 'pdflatex') | ||||
|  | ||||
| LATEX_INTERPRETER_OPTIONS = LATEX_SETTINGS.get('options', '') | ||||
|  | ||||
| LATEX_GRAPHICSPATH = [ | ||||
|     # Allow LaTeX files to access the report assets directory | ||||
|     os.path.join(MEDIA_ROOT, "report", "assets"), | ||||
| ] | ||||
|  | ||||
| # crispy forms use the bootstrap templates | ||||
| CRISPY_TEMPLATE_PACK = 'bootstrap3' | ||||
|  | ||||
|   | ||||
| @@ -107,19 +107,6 @@ static_root: '../inventree_static' | ||||
| # If unspecified, the local user's temp directory will be used | ||||
| #backup_dir: '/home/inventree/backup/' | ||||
|  | ||||
| # LaTeX report rendering | ||||
| # InvenTree uses the django-tex plugin to enable LaTeX report rendering | ||||
| # Ref: https://pypi.org/project/django-tex/ | ||||
| # Note: Ensure that a working LaTeX toolchain is installed and working *before* starting the server | ||||
| latex: | ||||
|   # Select the LaTeX interpreter to use for PDF rendering | ||||
|   # Note: The intepreter needs to be installed on the system! | ||||
|   # e.g. to install pdflatex: apt-get texlive-latex-base | ||||
|   enabled: False | ||||
|   interpreter: pdflatex  | ||||
|   # Extra options to pass through to the LaTeX interpreter | ||||
|   options: '' | ||||
|  | ||||
| # Permit custom authentication backends | ||||
| #authentication_backends: | ||||
| #  - 'django.contrib.auth.backends.ModelBackend' | ||||
|   | ||||
							
								
								
									
										20
									
								
								InvenTree/report/migrations/0007_auto_20210204_1617.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								InvenTree/report/migrations/0007_auto_20210204_1617.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| # Generated by Django 3.0.7 on 2021-02-04 05:17 | ||||
|  | ||||
| import django.core.validators | ||||
| from django.db import migrations, models | ||||
| import report.models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('report', '0006_reportsnippet'), | ||||
|     ] | ||||
|  | ||||
|     operations = [ | ||||
|         migrations.AlterField( | ||||
|             model_name='testreport', | ||||
|             name='template', | ||||
|             field=models.FileField(help_text='Report template file', upload_to=report.models.rename_template, validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['html', 'htm'])], verbose_name='Template'), | ||||
|         ), | ||||
|     ] | ||||
| @@ -14,7 +14,6 @@ from django.db import models | ||||
| from django.conf import settings | ||||
|  | ||||
| from django.core.validators import FileExtensionValidator | ||||
| from django.core.exceptions import ValidationError | ||||
|  | ||||
| import stock.models | ||||
|  | ||||
| @@ -29,17 +28,6 @@ except OSError as err: | ||||
|     print("You may require some further system packages to be installed.") | ||||
|     sys.exit(1) | ||||
|  | ||||
| # Conditional import if LaTeX templating is enabled | ||||
| if settings.LATEX_ENABLED: | ||||
|     try: | ||||
|         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: | ||||
|         print("OSError: {e}".format(e=err)) | ||||
|         print("You may not have a working LaTeX toolchain installed?") | ||||
|         sys.exit(1) | ||||
|  | ||||
| from django.http import HttpResponse | ||||
|  | ||||
|  | ||||
| @@ -104,7 +92,7 @@ class ReportBase(models.Model): | ||||
|     def template_name(self): | ||||
|         """ | ||||
|         Returns the file system path to the template file. | ||||
|         Required for passing the file to an external process (e.g. LaTeX) | ||||
|         Required for passing the file to an external process | ||||
|         """ | ||||
|  | ||||
|         template = os.path.join('report_template', self.getSubdir(), os.path.basename(self.template.name)) | ||||
| @@ -124,7 +112,7 @@ class ReportBase(models.Model): | ||||
|         upload_to=rename_template, | ||||
|         verbose_name=_('Template'), | ||||
|         help_text=_("Report template file"), | ||||
|         validators=[FileExtensionValidator(allowed_extensions=['html', 'htm', 'tex'])], | ||||
|         validators=[FileExtensionValidator(allowed_extensions=['html', 'htm'])], | ||||
|     ) | ||||
|  | ||||
|     description = models.CharField( | ||||
| @@ -153,12 +141,11 @@ class ReportTemplateBase(ReportBase): | ||||
|         """ | ||||
|         Render the template to a PDF file. | ||||
|  | ||||
|         Supported template formats: | ||||
|             .tex - Uses django-tex plugin to render LaTeX template against an installed LaTeX engine | ||||
|             .html - Uses django-weasyprint plugin to render HTML template against Weasyprint | ||||
|         Uses django-weasyprint plugin to render HTML template against Weasyprint | ||||
|         """ | ||||
|  | ||||
|         filename = kwargs.get('filename', 'report.pdf') | ||||
|         # TODO: Support custom filename generation! | ||||
|         # filename = kwargs.get('filename', 'report.pdf') | ||||
|  | ||||
|         context = self.get_context_data(request) | ||||
|  | ||||
| @@ -171,31 +158,17 @@ class ReportTemplateBase(ReportBase): | ||||
|         context['date'] = datetime.datetime.now().date() | ||||
|         context['datetime'] = datetime.datetime.now() | ||||
|  | ||||
|         if self.extension == '.tex': | ||||
|             # Render LaTeX template to PDF | ||||
|             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) | ||||
|                 except TexError: | ||||
|                     return TexResponse(rendered, filename="error.tex") | ||||
|             else: | ||||
|                 raise ValidationError("Enable LaTeX support in config.yaml") | ||||
|         elif self.extension in ['.htm', '.html']: | ||||
|             # Render HTML template to PDF | ||||
|             wp = WeasyprintReportMixin( | ||||
|                 request, | ||||
|                 self.template_name, | ||||
|                 base_url=request.build_absolute_uri("/"), | ||||
|                 presentational_hints=True, | ||||
|                 **kwargs) | ||||
|         # Render HTML template to PDF | ||||
|         wp = WeasyprintReportMixin( | ||||
|             request, | ||||
|             self.template_name, | ||||
|             base_url=request.build_absolute_uri("/"), | ||||
|             presentational_hints=True, | ||||
|             **kwargs) | ||||
|  | ||||
|             return wp.render_to_response( | ||||
|                 context, | ||||
|                 **kwargs) | ||||
|         return wp.render_to_response( | ||||
|             context, | ||||
|             **kwargs) | ||||
|  | ||||
|     enabled = models.BooleanField( | ||||
|         default=True, | ||||
|   | ||||
| @@ -23,7 +23,6 @@ coverage==5.3                   # Unit test coverage | ||||
| coveralls==2.1.2                # Coveralls linking (for Travis) | ||||
| rapidfuzz==0.7.6                # Fuzzy string matching | ||||
| django-stdimage==5.1.1          # Advanced ImageField management | ||||
| django-tex==1.1.7               # LaTeX PDF export | ||||
| django-weasyprint==1.0.1        # HTML PDF export | ||||
| django-debug-toolbar==2.2       # Debug / profiling toolbar | ||||
| django-admin-shell==0.1.2       # Python shell for the admin interface | ||||
|   | ||||
		Reference in New Issue
	
	Block a user