mirror of
https://github.com/ansible/awx.git
synced 2026-03-21 10:57:36 -02:30
convert Team to django migrations
This commit is contained in:
@@ -14,4 +14,5 @@ class Migration(migrations.Migration):
|
|||||||
operations = [
|
operations = [
|
||||||
migrations.RunPython(rbac.migrate_organization),
|
migrations.RunPython(rbac.migrate_organization),
|
||||||
migrations.RunPython(rbac.migrate_credential),
|
migrations.RunPython(rbac.migrate_credential),
|
||||||
|
migrations.RunPython(rbac.migrate_team),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -12,6 +12,14 @@ def migrate_organization(apps, schema_editor):
|
|||||||
migrations[org.name].append(user)
|
migrations[org.name].append(user)
|
||||||
return migrations
|
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):
|
def migrate_credential(apps, schema_editor):
|
||||||
migrations = defaultdict(list)
|
migrations = defaultdict(list)
|
||||||
|
|||||||
@@ -134,12 +134,6 @@ class Team(CommonModelNameNotUnique, ResourceMixin):
|
|||||||
cred.mark_inactive()
|
cred.mark_inactive()
|
||||||
super(Team, self).mark_inactive(save=save)
|
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):
|
class Permission(CommonModelNameNotUnique):
|
||||||
'''
|
'''
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from awx.main.migrations import _rbac as rbac
|
||||||
from awx.main.models import Permission
|
from awx.main.models import Permission
|
||||||
|
from django.apps import apps
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_inventory_admin_user(inventory, permissions, user):
|
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
|
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()
|
migrations = inventory.migrate_to_rbac()
|
||||||
|
|
||||||
assert len(team_migrations) == 1
|
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['admin']) is False
|
||||||
assert inventory.accessible_by(u, permissions['auditor']) 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()
|
migrations = inventory.migrate_to_rbac()
|
||||||
|
|
||||||
assert len(team_migrations) == 1
|
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['admin']) is False
|
||||||
assert inventory.accessible_by(u, permissions['auditor']) 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()
|
migrations = inventory.migrate_to_rbac()
|
||||||
|
|
||||||
assert len(team_migrations) == 1
|
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['admin']) is False
|
||||||
assert inventory.accessible_by(u, permissions['auditor']) 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()
|
migrations = inventory.migrate_to_rbac()
|
||||||
|
|
||||||
assert len(team_migrations) == 1
|
assert len(team_migrations) == 1
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from awx.main.migrations import _rbac as rbac
|
||||||
|
from django.apps import apps
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_team_migration_user(team, user, permissions):
|
def test_team_migration_user(team, user, permissions):
|
||||||
u = user('user', False)
|
u = user('user', False)
|
||||||
team.users.add(u)
|
team.users.add(u)
|
||||||
|
team.save()
|
||||||
|
|
||||||
assert not team.accessible_by(u, permissions['auditor'])
|
assert not team.accessible_by(u, permissions['auditor'])
|
||||||
|
|
||||||
migrated = team.migrate_to_rbac()
|
migrated = rbac.migrate_team(apps, None)
|
||||||
|
|
||||||
assert len(migrated) == 1
|
assert len(migrated) == 1
|
||||||
assert team.accessible_by(u, permissions['auditor'])
|
assert team.accessible_by(u, permissions['auditor'])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user