1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2024-11-01 12:04:15 +00:00
webvirtcloud/instances/apps.py

51 lines
1.9 KiB
Python
Raw Normal View History

2020-05-28 12:19:25 +00:00
from django.apps import AppConfig
from django.db.models.signals import post_migrate
def migrate_can_clone_instances(sender, **kwargs):
2022-11-02 05:54:35 +00:00
"""
2020-05-28 12:19:25 +00:00
Migrate can clone instances user attribute to permission
2022-11-02 05:54:35 +00:00
"""
2020-10-15 05:58:42 +00:00
from django.contrib.auth.models import Permission, User
2020-05-28 12:19:25 +00:00
2022-11-02 05:54:35 +00:00
plan = kwargs.get("plan", [])
2020-05-28 12:19:25 +00:00
for migration, rolled_back in plan:
2022-11-02 05:54:35 +00:00
if (migration.app_label == "instances" and migration.name == "0002_permissionset" and not rolled_back):
2020-05-28 12:19:25 +00:00
users = User.objects.all()
2022-11-02 05:54:35 +00:00
permission = Permission.objects.get(codename="clone_instances")
print(
"\033[1m* \033[92mMigrating can_clone_instaces user attribute to permission\033[0m"
)
2020-05-28 12:19:25 +00:00
for user in users:
if user.userattributes:
if user.userattributes.can_clone_instances:
user.user_permissions.add(permission)
break
2020-10-15 05:58:42 +00:00
def apply_passwordless_console(sender, **kwargs):
2022-11-02 05:54:35 +00:00
"""
Apply new passwordless_console permission for all users
2022-11-02 05:54:35 +00:00
"""
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
2022-11-02 05:54:35 +00:00
User = get_user_model()
2022-11-02 05:54:35 +00:00
plan = kwargs.get("plan", [])
for migration, rolled_back in plan:
2022-11-02 05:54:35 +00:00
if (migration.app_label == "instances" and migration.name == "0009_auto_20200717_0524" and not rolled_back):
print("\033[1m* \033[92mApplying permission passwordless_console for all users\033[0m")
users = User.objects.all()
2022-11-02 05:54:35 +00:00
permission = Permission.objects.get(codename="passwordless_console")
for user in users:
user.user_permissions.add(permission)
2020-10-15 05:58:42 +00:00
2020-05-28 12:19:25 +00:00
class InstancesConfig(AppConfig):
2022-11-02 05:54:35 +00:00
name = "instances"
verbose_name = "Instances"
2020-05-28 12:19:25 +00:00
def ready(self):
post_migrate.connect(migrate_can_clone_instances, sender=self)
post_migrate.connect(apply_passwordless_console, sender=self)