Coverage for src/backend/InvenTree/importer/migrations/0001_initial.py: 100%

11 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 17:47 +0000

1# Generated by Django 4.2.12 on 2024-06-30 04:42 

2 

3from django.conf import settings 

4import django.core.validators 

5from django.db import migrations, models 

6import django.db.models.deletion 

7import importer.validators 

8import InvenTree.helpers 

9from importer.status_codes import DataImportStatusCode 

10 

11 

12class Migration(migrations.Migration): 

13 

14 initial = True 

15 

16 dependencies = [ 

17 migrations.swappable_dependency(settings.AUTH_USER_MODEL), 

18 ] 

19 

20 operations = [ 

21 migrations.CreateModel( 

22 name='DataImportSession', 

23 fields=[ 

24 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 

25 ('timestamp', models.DateTimeField(auto_now_add=True, verbose_name='Timestamp')), 

26 ('data_file', models.FileField(help_text='Data file to import', upload_to='import', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=InvenTree.helpers.GetExportFormats()), importer.validators.validate_data_file], verbose_name='Data File')), 

27 ('columns', models.JSONField(blank=True, null=True, verbose_name='Columns')), 

28 ('model_type', models.CharField(max_length=100, validators=[importer.validators.validate_importer_model_type])), 

29 ('status', models.PositiveIntegerField(choices=DataImportStatusCode.items(), default=DataImportStatusCode.INITIAL.value, help_text='Import status')), 

30 ('field_defaults', models.JSONField(blank=True, null=True, validators=[importer.validators.validate_field_defaults], verbose_name='Field Defaults')), 

31 ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='User')), 

32 ], 

33 ), 

34 migrations.CreateModel( 

35 name='DataImportRow', 

36 fields=[ 

37 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 

38 ('row_index', models.PositiveIntegerField(default=0, verbose_name='Row Index')), 

39 ('row_data', models.JSONField(blank=True, null=True, verbose_name='Original row data')), 

40 ('data', models.JSONField(blank=True, null=True, verbose_name='Data')), 

41 ('errors', models.JSONField(blank=True, null=True, verbose_name='Errors')), 

42 ('valid', models.BooleanField(default=False, verbose_name='Valid')), 

43 ('complete', models.BooleanField(default=False, verbose_name='Complete')), 

44 ('session', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rows', to='importer.dataimportsession', verbose_name='Import Session')), 

45 ], 

46 ), 

47 migrations.CreateModel( 

48 name='DataImportColumnMap', 

49 fields=[ 

50 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 

51 ('field', models.CharField(max_length=100, verbose_name='Field')), 

52 ('column', models.CharField(blank=True, max_length=100, verbose_name='Column')), 

53 ('session', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='column_mappings', to='importer.dataimportsession', verbose_name='Import Session')), 

54 ], 

55 ), 

56 ]