Coverage for src/backend/InvenTree/order/migrations/0117_purchaseorderextraline_line_int_and_more.py: 59%
16 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 5.2.13 on 2026-05-07 04:10
3from django.db import migrations, models
6def add_integer_line_number(apps, schema_editor):
7 """Add integer line numbers to existing line items."""
9 for model in [
10 apps.get_model('order', 'PurchaseOrderLineItem'),
11 apps.get_model('order', 'ReturnOrderLineItem'),
12 apps.get_model('order', 'SalesOrderLineItem'),
13 apps.get_model('order', 'PurchaseOrderExtraLine'),
14 apps.get_model('order', 'ReturnOrderExtraLine'),
15 apps.get_model('order', 'SalesOrderExtraLine'),
16 ]:
17 items = []
19 for item in model.objects.exclude(line__isnull=True).exclude(line=''): 19 ↛ 21line 19 didn't jump to line 21 because the loop on line 19 never started
20 # Attempt to convert the existing line number to an integer
21 try:
22 item.line_int = int(item.line)
23 items.append(item)
24 except (ValueError, TypeError):
25 pass
27 if len(items) > 0: 27 ↛ 28line 27 didn't jump to line 28 because the condition on line 27 was never true
28 print(f"- Updating {len(items)} line items for model {model._meta.model_name}")
29 model.objects.bulk_update(items, ['line_int'], batch_size=250)
33class Migration(migrations.Migration):
35 dependencies = [
36 ("order", "0116_purchaseorderextraline_line_and_more"),
37 ]
39 operations = [
40 migrations.AddField(
41 model_name="purchaseorderextraline",
42 name="line_int",
43 field=models.IntegerField(default=0),
44 ),
45 migrations.AddField(
46 model_name="purchaseorderlineitem",
47 name="line_int",
48 field=models.IntegerField(default=0),
49 ),
50 migrations.AddField(
51 model_name="returnorderextraline",
52 name="line_int",
53 field=models.IntegerField(default=0),
54 ),
55 migrations.AddField(
56 model_name="returnorderlineitem",
57 name="line_int",
58 field=models.IntegerField(default=0),
59 ),
60 migrations.AddField(
61 model_name="salesorderextraline",
62 name="line_int",
63 field=models.IntegerField(default=0),
64 ),
65 migrations.AddField(
66 model_name="salesorderlineitem",
67 name="line_int",
68 field=models.IntegerField(default=0),
69 ),
70 migrations.RunPython(
71 code=add_integer_line_number,
72 reverse_code=migrations.RunPython.noop,
73 ),
74 ]