mirror of
https://github.com/ansible/awx.git
synced 2026-09-16 17:00:12 -02:30
Remove UserResource and ensure RolePermission during migration
This commit is contained in:
@@ -65,27 +65,6 @@ class Migration(migrations.Migration):
|
||||
'verbose_name_plural': 'permissions',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserResource',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('created', models.DateTimeField(default=None, editable=False)),
|
||||
('modified', models.DateTimeField(default=None, editable=False)),
|
||||
('description', models.TextField(default=b'', blank=True)),
|
||||
('active', models.BooleanField(default=True, editable=False)),
|
||||
('name', models.CharField(max_length=512)),
|
||||
('admin_role', awx.main.fields.ImplicitRoleField(related_name='+', to='main.Role', null=b'True')),
|
||||
('created_by', models.ForeignKey(related_name="{u'class': 'userresource', u'app_label': 'main'}(class)s_created+", on_delete=django.db.models.deletion.SET_NULL, default=None, editable=False, to=settings.AUTH_USER_MODEL, null=True)),
|
||||
('modified_by', models.ForeignKey(related_name="{u'class': 'userresource', u'app_label': 'main'}(class)s_modified+", on_delete=django.db.models.deletion.SET_NULL, default=None, editable=False, to=settings.AUTH_USER_MODEL, null=True)),
|
||||
('tags', taggit.managers.TaggableManager(to='taggit.Tag', through='taggit.TaggedItem', blank=True, help_text='A comma-separated list of tags.', verbose_name='Tags')),
|
||||
('user', awx.main.fields.AutoOneToOneField(related_name='resource', editable=False, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'main_rbac_user_resource',
|
||||
'verbose_name': 'user_resource',
|
||||
'verbose_name_plural': 'user_resources',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='credential',
|
||||
name='owner_role',
|
||||
|
||||
@@ -1,14 +1,30 @@
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from collections import defaultdict
|
||||
import _old_access as old_access
|
||||
|
||||
def migrate_users(apps, schema_editor):
|
||||
migrations = list()
|
||||
|
||||
User = apps.get_model('auth', "User")
|
||||
Role = apps.get_model('main', "Role")
|
||||
RolePermission = apps.get_model('main', "RolePermission")
|
||||
|
||||
for user in User.objects.all():
|
||||
ur = user.resource # implicitly creates the UserResource field if it didn't already exist
|
||||
ur.admin_role.members.add(user)
|
||||
try:
|
||||
Role.objects.get(content_type=ContentType.objects.get_for_model(User), object_id=user.id)
|
||||
except Role.DoesNotExist:
|
||||
role = Role.objects.create(
|
||||
singleton_name = '%s-admin_role' % user.username,
|
||||
content_object = user,
|
||||
)
|
||||
role.members.add(user)
|
||||
RolePermission.objects.create(
|
||||
role = role,
|
||||
resource = user,
|
||||
create=1, read=1, write=1, delete=1, update=1,
|
||||
execute=1, scm_update=1, use=1,
|
||||
)
|
||||
|
||||
if user.is_superuser:
|
||||
Role.singleton('System Administrator').members.add(user)
|
||||
|
||||
Reference in New Issue
Block a user