From f790c52704439a5433ceebe17babcca61245c4f7 Mon Sep 17 00:00:00 2001 From: Real-Gecko Date: Thu, 28 May 2020 11:20:23 +0600 Subject: [PATCH] Added 'instances:clone_instances' permission Replaces 'can_clone_instances' user attribute --- ...move_userattributes_can_clone_instances.py | 18 ++++++++++ .../0003_migrate_can_clone_instances.py | 35 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 accounts/migrations/0005_remove_userattributes_can_clone_instances.py create mode 100644 instances/migrations/0003_migrate_can_clone_instances.py diff --git a/accounts/migrations/0005_remove_userattributes_can_clone_instances.py b/accounts/migrations/0005_remove_userattributes_can_clone_instances.py new file mode 100644 index 0000000..76e0458 --- /dev/null +++ b/accounts/migrations/0005_remove_userattributes_can_clone_instances.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.12 on 2020-05-28 04:24 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0004_apply_change_password'), + ('instances', '0003_migrate_can_clone_instances'), + ] + + operations = [ + migrations.RemoveField( + model_name='userattributes', + name='can_clone_instances', + ), + ] diff --git a/instances/migrations/0003_migrate_can_clone_instances.py b/instances/migrations/0003_migrate_can_clone_instances.py new file mode 100644 index 0000000..6b7cc16 --- /dev/null +++ b/instances/migrations/0003_migrate_can_clone_instances.py @@ -0,0 +1,35 @@ +from django.db import migrations + + +def migrate_can_clone_instances(apps, schema_editor): + from django.contrib.auth.models import User, Permission + user: User + users = User.objects.all() + + permission = Permission.objects.get(codename='clone_instances') + + for user in users: + if user.userattributes.can_clone_instances: + user.user_permissions.add(permission) + + +def reverse_can_clone_instances(apps, schema_editor): + from django.contrib.auth.models import User, Permission + user: User + users = User.objects.all() + + permission = Permission.objects.get(codename='clone_instances') + + for user in users: + user.user_permissions.remove(permission) + + +class Migration(migrations.Migration): + + dependencies = [ + ('instances', '0002_permissionset'), + ] + + operations = [ + migrations.RunPython(migrate_can_clone_instances, reverse_can_clone_instances), + ]