Do an initial save on all resources during amigration to force the creation of RBAC role objects.

This commit is contained in:
Akita Noek
2016-04-10 12:00:23 -04:00
parent 7d2e660749
commit e3a45235a6

View File

@@ -39,6 +39,7 @@ def migrate_users(apps, schema_editor):
user_content_type = ContentType.objects.get_for_model(User) user_content_type = ContentType.objects.get_for_model(User)
for user in User.objects.iterator(): for user in User.objects.iterator():
user.save()
try: try:
Role.objects.get(content_type=user_content_type, object_id=user.id) Role.objects.get(content_type=user_content_type, object_id=user.id)
logger.info(smart_text(u"found existing role for user: {}".format(user.username))) logger.info(smart_text(u"found existing role for user: {}".format(user.username)))
@@ -80,6 +81,7 @@ def migrate_users(apps, schema_editor):
def migrate_organization(apps, schema_editor): def migrate_organization(apps, schema_editor):
Organization = apps.get_model('main', "Organization") Organization = apps.get_model('main', "Organization")
for org in Organization.objects.iterator(): for org in Organization.objects.iterator():
org.save() # force creates missing roles
for admin in org.deprecated_admins.all(): for admin in org.deprecated_admins.all():
org.admin_role.members.add(admin) org.admin_role.members.add(admin)
logger.info(smart_text(u"added admin: {}, {}".format(org.name, admin.username))) logger.info(smart_text(u"added admin: {}, {}".format(org.name, admin.username)))
@@ -91,6 +93,7 @@ def migrate_organization(apps, schema_editor):
def migrate_team(apps, schema_editor): def migrate_team(apps, schema_editor):
Team = apps.get_model('main', 'Team') Team = apps.get_model('main', 'Team')
for t in Team.objects.iterator(): for t in Team.objects.iterator():
t.save()
for user in t.deprecated_users.all(): for user in t.deprecated_users.all():
t.member_role.members.add(user) t.member_role.members.add(user)
logger.info(smart_text(u"team: {}, added user: {}".format(t.name, user.username))) logger.info(smart_text(u"team: {}, added user: {}".format(t.name, user.username)))
@@ -160,6 +163,7 @@ def migrate_credential(apps, schema_editor):
InventorySource = apps.get_model('main', 'InventorySource') InventorySource = apps.get_model('main', 'InventorySource')
for cred in Credential.objects.iterator(): for cred in Credential.objects.iterator():
cred.save()
results = (JobTemplate.objects.filter(Q(credential=cred) | Q(cloud_credential=cred)).all() or results = (JobTemplate.objects.filter(Q(credential=cred) | Q(cloud_credential=cred)).all() or
InventorySource.objects.filter(credential=cred).all()) InventorySource.objects.filter(credential=cred).all())
if results: if results:
@@ -213,6 +217,7 @@ def migrate_inventory(apps, schema_editor):
return None return None
for inventory in Inventory.objects.iterator(): for inventory in Inventory.objects.iterator():
inventory.save()
for perm in Permission.objects.filter(inventory=inventory): for perm in Permission.objects.filter(inventory=inventory):
role = None role = None
execrole = None execrole = None
@@ -260,6 +265,7 @@ def migrate_projects(apps, schema_editor):
# Migrate projects to single organizations, duplicating as necessary # Migrate projects to single organizations, duplicating as necessary
for project in Project.objects.iterator(): for project in Project.objects.iterator():
project.save()
original_project_name = project.name original_project_name = project.name
project_orgs = project.deprecated_organizations.distinct().all() project_orgs = project.deprecated_organizations.distinct().all()
@@ -371,6 +377,7 @@ def migrate_job_templates(apps, schema_editor):
Permission = apps.get_model('main', 'Permission') Permission = apps.get_model('main', 'Permission')
for jt in JobTemplate.objects.iterator(): for jt in JobTemplate.objects.iterator():
jt.save()
permission = Permission.objects.filter( permission = Permission.objects.filter(
inventory=jt.inventory, inventory=jt.inventory,
project=jt.project, project=jt.project,