convert Organization to django migration

This commit is contained in:
Wayne Witzel III 2016-02-08 15:35:39 -05:00
parent b8a7ad17ea
commit 1ed18e4561
4 changed files with 42 additions and 14 deletions

View 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),
]

View 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

View File

@ -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):
'''

View File

@ -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