mirror of
https://github.com/ansible/awx.git
synced 2026-02-28 16:28:43 -03:30
convert Organization to django migration
This commit is contained in:
16
awx/main/migrations/0004_rbac_migrations.py
Normal file
16
awx/main/migrations/0004_rbac_migrations.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from awx.main.migrations import _rbac as rbac
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('main', '0003_rbac_changes'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(rbac.migrate_organization, rbac.unmigrate_organization),
|
||||||
|
]
|
||||||
17
awx/main/migrations/_rbac.py
Normal file
17
awx/main/migrations/_rbac.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
def migrate_organization(apps, schema_editor):
|
||||||
|
migrations = defaultdict(list)
|
||||||
|
organization = apps.get_model('main', "Organization")
|
||||||
|
for org in organization.objects.all():
|
||||||
|
for admin in org.admins.all():
|
||||||
|
org.admin_role.members.add(admin)
|
||||||
|
migrations[org.name].append(admin)
|
||||||
|
for user in org.users.all():
|
||||||
|
org.auditor_role.members.add(user)
|
||||||
|
migrations[org.name].append(user)
|
||||||
|
return migrations
|
||||||
|
|
||||||
|
|
||||||
|
def unmigrate_organization(apps, schema_editor):
|
||||||
|
pass
|
||||||
@@ -76,16 +76,6 @@ class Organization(CommonModel, ResourceMixin):
|
|||||||
script.save()
|
script.save()
|
||||||
super(Organization, self).mark_inactive(save=save)
|
super(Organization, self).mark_inactive(save=save)
|
||||||
|
|
||||||
def migrate_to_rbac(self):
|
|
||||||
migrated_users = []
|
|
||||||
for admin in self.admins.all():
|
|
||||||
self.admin_role.members.add(admin)
|
|
||||||
migrated_users.append(admin)
|
|
||||||
for user in self.users.all():
|
|
||||||
self.auditor_role.members.add(user)
|
|
||||||
migrated_users.append(user)
|
|
||||||
return migrated_users
|
|
||||||
|
|
||||||
|
|
||||||
class Team(CommonModelNameNotUnique, ResourceMixin):
|
class Team(CommonModelNameNotUnique, ResourceMixin):
|
||||||
'''
|
'''
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from awx.main.migrations import _rbac as rbac
|
||||||
from awx.main.access import OrganizationAccess
|
from awx.main.access import OrganizationAccess
|
||||||
|
from django.apps import apps
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_organization_migration_admin(organization, permissions, user):
|
def test_organization_migration_admin(organization, permissions, user):
|
||||||
@@ -9,8 +12,9 @@ def test_organization_migration_admin(organization, permissions, user):
|
|||||||
|
|
||||||
assert not organization.accessible_by(u, permissions['admin'])
|
assert not organization.accessible_by(u, permissions['admin'])
|
||||||
|
|
||||||
migrated_users = organization.migrate_to_rbac()
|
migrations = rbac.migrate_organization(apps, None)
|
||||||
assert len(migrated_users) == 1
|
|
||||||
|
assert len(migrations) == 1
|
||||||
assert organization.accessible_by(u, permissions['admin'])
|
assert organization.accessible_by(u, permissions['admin'])
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
@@ -20,8 +24,9 @@ def test_organization_migration_user(organization, permissions, user):
|
|||||||
|
|
||||||
assert not organization.accessible_by(u, permissions['auditor'])
|
assert not organization.accessible_by(u, permissions['auditor'])
|
||||||
|
|
||||||
migrated_users = organization.migrate_to_rbac()
|
migrations = rbac.migrate_organization(apps, None)
|
||||||
assert len(migrated_users) == 1
|
|
||||||
|
assert len(migrations) == 1
|
||||||
assert organization.accessible_by(u, permissions['auditor'])
|
assert organization.accessible_by(u, permissions['auditor'])
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
|
|||||||
Reference in New Issue
Block a user