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

1# Generated by Django 5.2.13 on 2026-05-07 04:10 

2 

3from django.db import migrations, models 

4 

5 

6def add_integer_line_number(apps, schema_editor): 

7 """Add integer line numbers to existing line items.""" 

8 

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 = [] 

18 

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 

26 

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) 

30 

31 

32 

33class Migration(migrations.Migration): 

34 

35 dependencies = [ 

36 ("order", "0116_purchaseorderextraline_line_and_more"), 

37 ] 

38 

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 ]