Coverage for src/backend/InvenTree/part/migrations/0116_auto_20231023_0332.py: 37%

33 statements  

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

1# Generated by Django 3.2.22 on 2023-10-23 03:32 

2 

3from django.db import migrations 

4 

5 

6def migrate_part_responsible_owner(apps, schema_editor): 

7 """Copy existing part.responsible field to part.responsible_owner""" 

8 

9 Owner = apps.get_model('users', 'Owner') 

10 Part = apps.get_model('part', 'Part') 

11 User = apps.get_model('auth', 'user') 

12 ContentType = apps.get_model('contenttypes', 'contenttype') 

13 

14 user_type = ContentType.objects.get_for_model(User) 

15 

16 parts = Part.objects.exclude(responsible=None) 

17 

18 for part in parts: 18 ↛ 21line 18 didn't jump to line 21 because the loop on line 18 never started

19 

20 # Find a corresponding Owner object, or create one if it does not exist 

21 owner, _created = Owner.objects.get_or_create( 

22 owner_type=user_type, 

23 owner_id=part.responsible.id, 

24 ) 

25 

26 part.responsible_owner = owner 

27 part.save() 

28 

29 if parts.count() > 0: 29 ↛ 30line 29 didn't jump to line 30 because the condition on line 29 was never true

30 print(f"Added 'responsible_owner' for {parts.count()} parts") 

31 

32 

33def reverse_owner_migration(apps, schema_editor): 

34 """Reverse the owner migration: 

35 

36 - Set the 'responsible' field to a selected user 

37 - Only where 'responsible_owner' is set 

38 - Only where 'responsible_owner' is a User object 

39 """ 

40 

41 Part = apps.get_model('part', 'Part') 

42 User = apps.get_model('auth', 'user') 

43 ContentType = apps.get_model('contenttypes', 'contenttype') 

44 

45 user_type = ContentType.objects.get_for_model(User) 

46 

47 parts = Part.objects.exclude(responsible_owner=None) 

48 

49 for part in parts: 

50 

51 if part.responsible_owner.owner_type == user_type: 

52 

53 # Attempt to find matching user 

54 try: 

55 user = User.objects.get(pk=part.responsible_owner.owner_id) 

56 part.responsible = user 

57 part.save() 

58 except User.DoesNotExist: 

59 print("User does not exist:", part.responsible_owner.owner_id) 

60 

61 if parts.count() > 0: 

62 print(f"Added 'responsible' for {parts.count()} parts") 

63 

64class Migration(migrations.Migration): 

65 

66 dependencies = [ 

67 ('part', '0115_part_responsible_owner'), 

68 ('users', '0005_owner_model'), 

69 ] 

70 

71 operations = [ 

72 migrations.RunPython( 

73 migrate_part_responsible_owner, 

74 reverse_code=reverse_owner_migration, 

75 ) 

76 ]