From f29fdf694f4983ffdb16d6ff622684b75a940340 Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Mon, 8 Feb 2016 16:05:05 -0500 Subject: [PATCH] convert Team to django migrations --- awx/main/migrations/0004_rbac_migrations.py | 1 + awx/main/migrations/_rbac.py | 8 ++++++++ awx/main/models/organization.py | 6 ------ awx/main/tests/functional/test_rbac_inventory.py | 10 ++++++---- awx/main/tests/functional/test_rbac_team.py | 8 ++++++-- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/awx/main/migrations/0004_rbac_migrations.py b/awx/main/migrations/0004_rbac_migrations.py index 5d02d6bd00..1f9757139a 100644 --- a/awx/main/migrations/0004_rbac_migrations.py +++ b/awx/main/migrations/0004_rbac_migrations.py @@ -14,4 +14,5 @@ class Migration(migrations.Migration): operations = [ migrations.RunPython(rbac.migrate_organization), migrations.RunPython(rbac.migrate_credential), + migrations.RunPython(rbac.migrate_team), ] diff --git a/awx/main/migrations/_rbac.py b/awx/main/migrations/_rbac.py index b0403b1a0d..05b056c0cd 100644 --- a/awx/main/migrations/_rbac.py +++ b/awx/main/migrations/_rbac.py @@ -12,6 +12,14 @@ def migrate_organization(apps, schema_editor): migrations[org.name].append(user) return migrations +def migrate_team(apps, schema_editor): + migrations = defaultdict(list) + team = apps.get_model('main', 'Team') + for t in team.objects.all(): + for user in t.users.all(): + t.member_role.members.add(user) + migrations[t.name].append(user) + return migrations def migrate_credential(apps, schema_editor): migrations = defaultdict(list) diff --git a/awx/main/models/organization.py b/awx/main/models/organization.py index 62636e42e6..5b24b304bd 100644 --- a/awx/main/models/organization.py +++ b/awx/main/models/organization.py @@ -134,12 +134,6 @@ class Team(CommonModelNameNotUnique, ResourceMixin): cred.mark_inactive() super(Team, self).mark_inactive(save=save) - def migrate_to_rbac(self): - migrated = [] - for user in self.users.all(): - self.member_role.members.add(user) - migrated.append(user) - return migrated class Permission(CommonModelNameNotUnique): ''' diff --git a/awx/main/tests/functional/test_rbac_inventory.py b/awx/main/tests/functional/test_rbac_inventory.py index 478de37d18..7297aaa2a5 100644 --- a/awx/main/tests/functional/test_rbac_inventory.py +++ b/awx/main/tests/functional/test_rbac_inventory.py @@ -1,6 +1,8 @@ import pytest +from awx.main.migrations import _rbac as rbac from awx.main.models import Permission +from django.apps import apps @pytest.mark.django_db def test_inventory_admin_user(inventory, permissions, user): @@ -82,7 +84,7 @@ def test_inventory_admin_team(inventory, permissions, user, team): assert inventory.accessible_by(u, permissions['admin']) is False - team_migrations = team.migrate_to_rbac() + team_migrations = rbac.migrate_team(apps, None) migrations = inventory.migrate_to_rbac() assert len(team_migrations) == 1 @@ -107,7 +109,7 @@ def test_inventory_auditor(inventory, permissions, user, team): assert inventory.accessible_by(u, permissions['admin']) is False assert inventory.accessible_by(u, permissions['auditor']) is False - team_migrations = team.migrate_to_rbac() + team_migrations = rbac.migrate_team(apps,None) migrations = inventory.migrate_to_rbac() assert len(team_migrations) == 1 @@ -131,7 +133,7 @@ def test_inventory_updater(inventory, permissions, user, team): assert inventory.accessible_by(u, permissions['admin']) is False assert inventory.accessible_by(u, permissions['auditor']) is False - team_migrations = team.migrate_to_rbac() + team_migrations = rbac.migrate_team(apps,None) migrations = inventory.migrate_to_rbac() assert len(team_migrations) == 1 @@ -156,7 +158,7 @@ def test_inventory_executor(inventory, permissions, user, team): assert inventory.accessible_by(u, permissions['admin']) is False assert inventory.accessible_by(u, permissions['auditor']) is False - team_migrations = team.migrate_to_rbac() + team_migrations = rbac.migrate_team(apps, None) migrations = inventory.migrate_to_rbac() assert len(team_migrations) == 1 diff --git a/awx/main/tests/functional/test_rbac_team.py b/awx/main/tests/functional/test_rbac_team.py index 42356783f3..72e26d0c37 100644 --- a/awx/main/tests/functional/test_rbac_team.py +++ b/awx/main/tests/functional/test_rbac_team.py @@ -1,13 +1,17 @@ import pytest +from awx.main.migrations import _rbac as rbac +from django.apps import apps + @pytest.mark.django_db def test_team_migration_user(team, user, permissions): u = user('user', False) team.users.add(u) + team.save() assert not team.accessible_by(u, permissions['auditor']) - migrated = team.migrate_to_rbac() + migrated = rbac.migrate_team(apps, None) + assert len(migrated) == 1 assert team.accessible_by(u, permissions['auditor']) -