0009_update_group_perms.py 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. from django.db import migrations, models
  2. def update_content_types(apps, schema_editor):
  3. ObjectType = apps.get_model('core', 'ObjectType')
  4. ObjectPermission = apps.get_model('users', 'ObjectPermission')
  5. db_alias = schema_editor.connection.alias
  6. auth_group_ct = ObjectType.objects.using(db_alias).filter(app_label='auth', model='group').first()
  7. users_group_ct = ObjectType.objects.using(db_alias).filter(app_label='users', model='group').first()
  8. if auth_group_ct and users_group_ct:
  9. perms = ObjectPermission.objects.using(db_alias).filter(object_types__in=[auth_group_ct])
  10. for perm in perms:
  11. perm.object_types.remove(auth_group_ct)
  12. perm.object_types.add(users_group_ct)
  13. perm.save()
  14. class Migration(migrations.Migration):
  15. dependencies = [
  16. ('users', '0008_flip_objectpermission_assignments'),
  17. ]
  18. operations = [
  19. # Update ContentTypes
  20. migrations.RunPython(code=update_content_types, reverse_code=migrations.RunPython.noop),
  21. migrations.AlterField(
  22. model_name='objectpermission',
  23. name='object_types',
  24. field=models.ManyToManyField(related_name='object_permissions', to='core.objecttype'),
  25. ),
  26. ]