mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Adds "report snippet" class allowing re-usable report snippets to be uploaded
This commit is contained in:
parent
79ddea50f5
commit
90bef69a59
@ -3,7 +3,12 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from django.contrib import admin
|
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):
|
class ReportTemplateAdmin(admin.ModelAdmin):
|
||||||
@ -16,5 +21,6 @@ class ReportAssetAdmin(admin.ModelAdmin):
|
|||||||
list_display = ('asset', 'description')
|
list_display = ('asset', 'description')
|
||||||
|
|
||||||
|
|
||||||
|
admin.site.register(ReportSnippet, ReportSnippetAdmin)
|
||||||
admin.site.register(TestReport, ReportTemplateAdmin)
|
admin.site.register(TestReport, ReportTemplateAdmin)
|
||||||
admin.site.register(ReportAsset, ReportAssetAdmin)
|
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')
|
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):
|
def __str__(self):
|
||||||
return "{n} - {d}".format(n=self.name, d=self.description)
|
return "{n} - {d}".format(n=self.name, d=self.description)
|
||||||
|
|
||||||
|
|
||||||
def getSubdir(self):
|
def getSubdir(self):
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
@ -105,6 +109,47 @@ class ReportTemplateBase(models.Model):
|
|||||||
|
|
||||||
return template
|
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):
|
def get_context_data(self, request):
|
||||||
"""
|
"""
|
||||||
Supply context data to the template for rendering
|
Supply context data to the template for rendering
|
||||||
@ -147,26 +192,6 @@ class ReportTemplateBase(models.Model):
|
|||||||
wp = WeasyprintReportMixin(request, self.template_name, **kwargs)
|
wp = WeasyprintReportMixin(request, self.template_name, **kwargs)
|
||||||
return wp.render_to_response(context, **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(
|
enabled = models.BooleanField(
|
||||||
default=True,
|
default=True,
|
||||||
verbose_name=_('Enabled'),
|
verbose_name=_('Enabled'),
|
||||||
|
Loading…
Reference in New Issue
Block a user