mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 18:09:57 -03:30
convert Organization to django migration
This commit is contained in:
parent
b8a7ad17ea
commit
1ed18e4561
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()
|
||||
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):
|
||||
'''
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import pytest
|
||||
|
||||
from awx.main.migrations import _rbac as rbac
|
||||
from awx.main.access import OrganizationAccess
|
||||
from django.apps import apps
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
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'])
|
||||
|
||||
migrated_users = organization.migrate_to_rbac()
|
||||
assert len(migrated_users) == 1
|
||||
migrations = rbac.migrate_organization(apps, None)
|
||||
|
||||
assert len(migrations) == 1
|
||||
assert organization.accessible_by(u, permissions['admin'])
|
||||
|
||||
@pytest.mark.django_db
|
||||
@ -20,8 +24,9 @@ def test_organization_migration_user(organization, permissions, user):
|
||||
|
||||
assert not organization.accessible_by(u, permissions['auditor'])
|
||||
|
||||
migrated_users = organization.migrate_to_rbac()
|
||||
assert len(migrated_users) == 1
|
||||
migrations = rbac.migrate_organization(apps, None)
|
||||
|
||||
assert len(migrations) == 1
|
||||
assert organization.accessible_by(u, permissions['auditor'])
|
||||
|
||||
@pytest.mark.django_db
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user