Coverage for src/backend/InvenTree/report/migrations/0022_reporttemplate.py: 100%
9 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
1# Generated by Django 4.2.11 on 2024-04-21 03:11
3import InvenTree.models
4import django.core.validators
5from django.db import migrations, models
6import report.helpers
7import report.models
8import report.validators
11class Migration(migrations.Migration):
13 dependencies = [
14 ('report', '0021_auto_20231009_0144'),
15 ]
17 operations = [
18 migrations.CreateModel(
19 name='ReportTemplate',
20 fields=[
21 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
22 ('metadata', models.JSONField(blank=True, help_text='JSON metadata field, for use by external plugins', null=True, verbose_name='Plugin Metadata')),
23 ('name', models.CharField(help_text='Template name', max_length=100, verbose_name='Name')),
24 ('template', models.FileField(help_text='Template file', upload_to='report/report', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['html', 'htm'])], verbose_name='Template')),
25 ('description', models.CharField(help_text='Template description', max_length=250, verbose_name='Description')),
26 ('revision', models.PositiveIntegerField(default=1, editable=False, help_text='Revision number (auto-increments)', verbose_name='Revision')),
27 ('page_size', models.CharField(default=report.helpers.report_page_size_default, help_text='Page size for PDF reports', max_length=20, verbose_name='Page Size')),
28 ('landscape', models.BooleanField(default=False, help_text='Render report in landscape orientation', verbose_name='Landscape')),
29 ('filename_pattern', models.CharField(default='output.pdf', help_text='Pattern for generating filenames', max_length=100, verbose_name='Filename Pattern')),
30 ('enabled', models.BooleanField(default=True, help_text='Template is enabled', verbose_name='Enabled')),
31 ('model_type', models.CharField(max_length=100, help_text='Target model type for template', validators=[report.validators.validate_report_model_type])),
32 ('filters', models.CharField(blank=True, help_text='Template query filters (comma-separated list of key=value pairs)', max_length=250, validators=[report.validators.validate_filters], verbose_name='Filters')),
33 ],
34 options={
35 'abstract': False,
36 'unique_together': [('name', 'model_type')]
37 },
38 bases=(InvenTree.models.PluginValidationMixin, models.Model),
39 ),
40 ]