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
« 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
3from django.db import migrations
6def update_bom_role(apps, schema_editor):
7 """Update the ruleset for the BOM role.
9 As the 'bom' role was previously covered by the 'part' role,
10 we need to update the ruleset to include the correct models.
12 """
13 from users.ruleset import RuleSetEnum
15 Group = apps.get_model("auth", "Group")
16 RuleSet = apps.get_model("users", "RuleSet")
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()
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 )
35class Migration(migrations.Migration):
37 dependencies = [
38 ("part", "0147_remove_part_default_supplier"),
39 ("users", "0014_userprofile")
40 ]
42 operations = [
43 migrations.RunPython(update_bom_role, reverse_code=migrations.RunPython.noop),
44 ]