Coverage for src/backend/InvenTree/report/migrations/0025_labeltemplate.py: 100%

8 statements  

« 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-22 12:48 

2 

3import InvenTree.models 

4import django.core.validators 

5from django.db import migrations, models 

6import report.models 

7import report.validators 

8 

9 

10class Migration(migrations.Migration): 

11 

12 dependencies = [ 

13 ('report', '0024_delete_billofmaterialsreport_delete_buildreport_and_more'), 

14 ] 

15 

16 operations = [ 

17 migrations.CreateModel( 

18 name='LabelTemplate', 

19 fields=[ 

20 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 

21 ('metadata', models.JSONField(blank=True, help_text='JSON metadata field, for use by external plugins', null=True, verbose_name='Plugin Metadata')), 

22 ('name', models.CharField(help_text='Template name', max_length=100, verbose_name='Name')), 

23 ('description', models.CharField(help_text='Template description', max_length=250, verbose_name='Description')), 

24 ('template', models.FileField(help_text='Template file', upload_to='report/label', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['html', 'htm'])], verbose_name='Template')), 

25 ('revision', models.PositiveIntegerField(default=1, editable=False, help_text='Revision number (auto-increments)', verbose_name='Revision')), 

26 ('filename_pattern', models.CharField(default='output.pdf', help_text='Pattern for generating filenames', max_length=100, verbose_name='Filename Pattern')), 

27 ('enabled', models.BooleanField(default=True, help_text='Template is enabled', verbose_name='Enabled')), 

28 ('model_type', models.CharField(max_length=100, validators=[report.validators.validate_report_model_type])), 

29 ('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')), 

30 ('width', models.FloatField(default=50, help_text='Label width, specified in mm', validators=[django.core.validators.MinValueValidator(2)], verbose_name='Width [mm]')), 

31 ('height', models.FloatField(default=20, help_text='Label height, specified in mm', validators=[django.core.validators.MinValueValidator(2)], verbose_name='Height [mm]')), 

32 ], 

33 options={ 

34 'abstract': False, 

35 'unique_together': {('name', 'model_type')}, 

36 }, 

37 bases=(InvenTree.models.PluginValidationMixin, models.Model), 

38 ), 

39 ]