Skip to content

Commit

Permalink
Migrate CoreDeveloper to StaffAreaAdministrator
Browse files Browse the repository at this point in the history
  • Loading branch information
Jongmassey committed Oct 4, 2024
1 parent fe1548c commit 9ca2b76
Showing 1 changed file with 44 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Generated by Django 5.1.1 on 2024-10-02 11:00

from django.db import migrations

from jobserver.authorization.roles import StaffAreaAdministrator


# We want to eventually remove the "real" CoreDeveloper so make a fake one here
class CoreDeveloper:
__module__ = "jobserver.authorization.roles"


def change_user_role(apps, from_role, to_role):
User = apps.get_model("jobserver", "User")
users = User.objects.filter(roles__contains=from_role)
for user in users:
# we can't rely on comparison of our fake class for .remove()
for role in user.roles:
if role.__qualname__ == from_role.__qualname__:
user.roles.remove(role)
break
user.roles.append(to_role)
User.objects.bulk_update(users, ["roles"])


def coredeveloper_to_staffadministrator(apps, schema_editor):
change_user_role(apps, CoreDeveloper, StaffAreaAdministrator)


def staffadministrator_to_coredeveloper(apps, schema_editor):
change_user_role(apps, StaffAreaAdministrator, CoreDeveloper)


class Migration(migrations.Migration):
dependencies = [
("jobserver", "0007_remove_user_is_staff_remove_user_is_superuser"),
]

operations = [
migrations.RunPython(
coredeveloper_to_staffadministrator,
reverse_code=staffadministrator_to_coredeveloper,
)
]

0 comments on commit 9ca2b76

Please sign in to comment.