mirror of
https://github.com/retspen/webvirtcloud
synced 2025-07-31 12:41:08 +00:00
Fixe migrations for new deployments
This commit is contained in:
parent
e4e79d3d4b
commit
85929b5327
11 changed files with 88 additions and 104 deletions
|
@ -0,0 +1 @@
|
|||
default_app_config = 'instances.apps.InstancesConfig'
|
31
instances/apps.py
Normal file
31
instances/apps.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
from django.apps import AppConfig
|
||||
from django.db.models.signals import post_migrate
|
||||
|
||||
|
||||
def migrate_can_clone_instances(sender, **kwargs):
|
||||
'''
|
||||
Migrate can clone instances user attribute to permission
|
||||
'''
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User, Permission
|
||||
from accounts.models import UserAttributes
|
||||
|
||||
plan = kwargs['plan']
|
||||
for migration, rolled_back in plan:
|
||||
if migration.app_label == 'instances' and migration.name == '0002_permissionset' and not rolled_back:
|
||||
users = User.objects.all()
|
||||
permission = Permission.objects.get(codename='clone_instances')
|
||||
print('\033[92mMigrating can_clone_instaces user attribute to permission')
|
||||
for user in users:
|
||||
if user.userattributes:
|
||||
if user.userattributes.can_clone_instances:
|
||||
user.user_permissions.add(permission)
|
||||
break
|
||||
|
||||
|
||||
class InstancesConfig(AppConfig):
|
||||
name = 'instances'
|
||||
verbose_name = 'instances'
|
||||
|
||||
def ready(self):
|
||||
post_migrate.connect(migrate_can_clone_instances, sender=self)
|
|
@ -1,35 +0,0 @@
|
|||
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),
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue