Coverage for src/backend/InvenTree/part/migrations/0148_auto_20260427_2233.py: 56%

14 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-04-27 22:33 

2 

3from django.db import migrations 

4 

5 

6def update_bom_role(apps, schema_editor): 

7 """Update the ruleset for the BOM role. 

8  

9 As the 'bom' role was previously covered by the 'part' role, 

10 we need to update the ruleset to include the correct models. 

11  

12 """ 

13 from users.ruleset import RuleSetEnum 

14 

15 Group = apps.get_model("auth", "Group") 

16 RuleSet = apps.get_model("users", "RuleSet") 

17 

18 # For each existing group, create a new 'bom' ruleset 

19 for group in Group.objects.all(): 19 ↛ 21line 19 didn't jump to line 21 because the loop on line 19 never started

20 # Find a matching 'part' ruleset for this group 

21 if ruleset := RuleSet.objects.filter(name=RuleSetEnum.PART, group=group).first(): 

22 # A 'part' ruleset exists for this group - create a new 'bom' ruleset based on this 

23 ruleset.pk = None # Create a new instance 

24 ruleset.name = RuleSetEnum.BOM 

25 ruleset.save() 

26 

27 else: 

28 # No 'part' ruleset exists for this group - create a default 'bom' ruleset 

29 RuleSet.objects.create( 

30 name=RuleSetEnum.BOM, 

31 group=group 

32 ) 

33 

34 

35class Migration(migrations.Migration): 

36 

37 dependencies = [ 

38 ("part", "0147_remove_part_default_supplier"), 

39 ("users", "0014_userprofile") 

40 ] 

41 

42 operations = [ 

43 migrations.RunPython(update_bom_role, reverse_code=migrations.RunPython.noop), 

44 ]