mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +00:00 
			
		
		
		
	Adds "report snippet" class allowing re-usable report snippets to be uploaded
This commit is contained in:
		| @@ -3,7 +3,12 @@ from __future__ import unicode_literals | ||||
|  | ||||
| from django.contrib import admin | ||||
|  | ||||
| from .models import TestReport, ReportAsset | ||||
| from .models import ReportSnippet, TestReport, ReportAsset | ||||
|  | ||||
|  | ||||
| class ReportSnippetAdmin(admin.ModelAdmin): | ||||
|  | ||||
|     list_display = ('name', 'description', 'template') | ||||
|  | ||||
|  | ||||
| class ReportTemplateAdmin(admin.ModelAdmin): | ||||
| @@ -16,5 +21,6 @@ class ReportAssetAdmin(admin.ModelAdmin): | ||||
|     list_display = ('asset', 'description') | ||||
|  | ||||
|  | ||||
| admin.site.register(ReportSnippet, ReportSnippetAdmin) | ||||
| admin.site.register(TestReport, ReportTemplateAdmin) | ||||
| admin.site.register(ReportAsset, ReportAssetAdmin) | ||||
|   | ||||
							
								
								
									
										27
									
								
								InvenTree/report/migrations/0006_reportsnippet.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								InvenTree/report/migrations/0006_reportsnippet.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| # Generated by Django 3.0.7 on 2021-02-03 05:57 | ||||
|  | ||||
| import django.core.validators | ||||
| from django.db import migrations, models | ||||
| import report.models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('report', '0005_auto_20210119_0815'), | ||||
|     ] | ||||
|  | ||||
|     operations = [ | ||||
|         migrations.CreateModel( | ||||
|             name='ReportSnippet', | ||||
|             fields=[ | ||||
|                 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||||
|                 ('name', models.CharField(help_text='Template name', max_length=100, unique=True, verbose_name='Name')), | ||||
|                 ('template', models.FileField(help_text='Report template file', upload_to=report.models.rename_template, validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['html', 'htm', 'tex'])], verbose_name='Template')), | ||||
|                 ('description', models.CharField(help_text='Report template description', max_length=250, verbose_name='Description')), | ||||
|             ], | ||||
|             options={ | ||||
|                 'abstract': False, | ||||
|             }, | ||||
|         ), | ||||
|     ] | ||||
| @@ -77,14 +77,18 @@ class WeasyprintReportMixin(WeasyTemplateResponseMixin): | ||||
|         self.pdf_filename = kwargs.get('filename', 'report.pdf') | ||||
|  | ||||
|  | ||||
| class ReportTemplateBase(models.Model): | ||||
| class ReportBase(models.Model): | ||||
|     """ | ||||
|     Reporting template model. | ||||
|     Base class for uploading html templates | ||||
|     """ | ||||
|  | ||||
|     class Meta: | ||||
|         abstract = True | ||||
|  | ||||
|     def __str__(self): | ||||
|         return "{n} - {d}".format(n=self.name, d=self.description) | ||||
|  | ||||
|  | ||||
|     def getSubdir(self): | ||||
|         return '' | ||||
|  | ||||
| @@ -105,6 +109,47 @@ class ReportTemplateBase(models.Model): | ||||
|  | ||||
|         return template | ||||
|  | ||||
|     name = models.CharField( | ||||
|         blank=False, max_length=100, | ||||
|         verbose_name=_('Name'), | ||||
|         help_text=_('Template name'), | ||||
|         unique=True, | ||||
|     ) | ||||
|  | ||||
|     template = models.FileField( | ||||
|         upload_to=rename_template, | ||||
|         verbose_name=_('Template'), | ||||
|         help_text=_("Report template file"), | ||||
|         validators=[FileExtensionValidator(allowed_extensions=['html', 'htm', 'tex'])], | ||||
|     ) | ||||
|  | ||||
|     description = models.CharField( | ||||
|         max_length=250, | ||||
|         verbose_name=_('Description'), | ||||
|         help_text=_("Report template description") | ||||
|     ) | ||||
|  | ||||
|  | ||||
| class ReportSnippet(ReportBase): | ||||
|     """ | ||||
|     Report template 'snippet' which can be used to make templates | ||||
|     that can then be included in other reports. | ||||
|  | ||||
|     Useful for 'common' template actions, sub-templates, etc | ||||
|     """ | ||||
|  | ||||
|     def getSubdir(self): | ||||
|         return "" | ||||
|  | ||||
|  | ||||
| class ReportTemplateBase(ReportBase): | ||||
|     """ | ||||
|     Reporting template model. | ||||
|  | ||||
|     Able to be passed context data | ||||
|  | ||||
|     """ | ||||
|  | ||||
|     def get_context_data(self, request): | ||||
|         """ | ||||
|         Supply context data to the template for rendering | ||||
| @@ -147,26 +192,6 @@ class ReportTemplateBase(models.Model): | ||||
|             wp = WeasyprintReportMixin(request, self.template_name, **kwargs) | ||||
|             return wp.render_to_response(context, **kwargs) | ||||
|  | ||||
|     name = models.CharField( | ||||
|         blank=False, max_length=100, | ||||
|         verbose_name=_('Name'), | ||||
|         help_text=_('Template name'), | ||||
|         unique=True, | ||||
|     ) | ||||
|  | ||||
|     template = models.FileField( | ||||
|         upload_to=rename_template, | ||||
|         verbose_name=_('Template'), | ||||
|         help_text=_("Report template file"), | ||||
|         validators=[FileExtensionValidator(allowed_extensions=['html', 'htm', 'tex'])], | ||||
|     ) | ||||
|  | ||||
|     description = models.CharField( | ||||
|         max_length=250, | ||||
|         verbose_name=_('Description'), | ||||
|         help_text=_("Report template description") | ||||
|     ) | ||||
|  | ||||
|     enabled = models.BooleanField( | ||||
|         default=True, | ||||
|         verbose_name=_('Enabled'), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user