Adds "report snippet" class allowing re-usable report snippets to be uploaded

This commit is contained in:
Oliver Walters 2021-02-03 16:58:06 +11:00
parent 79ddea50f5
commit 90bef69a59
3 changed files with 81 additions and 23 deletions

View File

@ -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)

View 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,
},
),
]

View File

@ -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'),