Coverage for src/backend/InvenTree/order/migrations/0074_auto_20220709_0108.py: 72%

46 statements  

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

1# Generated by Django 3.2.14 on 2022-07-09 01:08 

2 

3from django.db import migrations 

4 

5 

6def update_order_references(order_model, prefix): 

7 """Update all references of the given model, with the specified prefix""" 

8 

9 n = 0 

10 

11 for order in order_model.objects.all(): 11 ↛ 12line 11 didn't jump to line 12 because the loop on line 11 never started

12 if not order.reference.startswith(prefix): 

13 order.reference = prefix + order.reference 

14 order.save() 

15 

16 n += 1 

17 

18 return n 

19 

20 

21def update_salesorder_reference(apps, schema_editor): 

22 """Migrate the reference pattern for the SalesOrder model""" 

23 

24 # Extract the existing "prefix" value 

25 InvenTreeSetting = apps.get_model('common', 'inventreesetting') 

26 

27 try: 

28 prefix = InvenTreeSetting.objects.get(key='SALESORDER_REFERENCE_PREFIX').value 

29 except Exception: 

30 prefix = 'SO-' 

31 

32 # Construct a reference pattern 

33 pattern = prefix + '{ref:04d}' 

34 

35 # Create or update the BuildOrder.reference pattern 

36 try: 

37 setting = InvenTreeSetting.objects.get(key='SALESORDER_REFERENCE_PATTERN') 

38 setting.value = pattern 

39 setting.save() 

40 except InvenTreeSetting.DoesNotExist: 

41 setting = InvenTreeSetting.objects.create( 

42 key='SALESORDER_REFERENCE_PATTERN', 

43 value=pattern, 

44 ) 

45 

46 # Update any existing sales order references 

47 SalesOrder = apps.get_model('order', 'salesorder') 

48 n = update_order_references(SalesOrder, prefix) 

49 

50 if n > 0: 50 ↛ 51line 50 didn't jump to line 51 because the condition on line 50 was never true

51 print(f"Updated reference field for {n} SalesOrder objects") 

52 

53 

54def update_purchaseorder_reference(apps, schema_editor): 

55 """Migrate the reference pattern for the PurchaseOrder model""" 

56 

57 # Extract the existing "prefix" value 

58 InvenTreeSetting = apps.get_model('common', 'inventreesetting') 

59 

60 try: 

61 prefix = InvenTreeSetting.objects.get(key='PURCHASEORDER_REFERENCE_PREFIX').value 

62 except Exception: 

63 prefix = 'PO-' 

64 

65 # Construct a reference pattern 

66 pattern = prefix + '{ref:04d}' 

67 

68 # Create or update the BuildOrder.reference pattern 

69 try: 

70 setting = InvenTreeSetting.objects.get(key='PURCHASEORDER_REFERENCE_PATTERN') 

71 setting.value = pattern 

72 setting.save() 

73 except InvenTreeSetting.DoesNotExist: 

74 setting = InvenTreeSetting.objects.create( 

75 key='PURCHASEORDER_REFERENCE_PATTERN', 

76 value=pattern, 

77 ) 

78 

79 # Update any existing sales order references 

80 PurchaseOrder = apps.get_model('order', 'purchaseorder') 

81 n = update_order_references(PurchaseOrder, prefix) 

82 

83 if n > 0: 83 ↛ 84line 83 didn't jump to line 84 because the condition on line 83 was never true

84 print(f"Updated reference field for {n} PurchaseOrder objects") 

85 

86 

87class Migration(migrations.Migration): 

88 

89 dependencies = [ 

90 ('order', '0073_alter_purchaseorder_reference'), 

91 ] 

92 

93 operations = [ 

94 migrations.RunPython( 

95 update_salesorder_reference, 

96 reverse_code=migrations.RunPython.noop, 

97 ), 

98 migrations.RunPython( 

99 update_purchaseorder_reference, 

100 reverse_code=migrations.RunPython.noop, 

101 ) 

102 ]