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
51
accounts/apps.py
Normal file
51
accounts/apps.py
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
from django.apps import AppConfig
|
||||
from django.db.models.signals import post_migrate
|
||||
|
||||
|
||||
def apply_change_password(sender, **kwargs):
|
||||
'''
|
||||
Apply new change_password permission for all users
|
||||
Depending on settings SHOW_PROFILE_EDIT_PASSWORD
|
||||
'''
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User, Permission
|
||||
if hasattr(settings, 'SHOW_PROFILE_EDIT_PASSWORD'):
|
||||
print('\033[92mSHOW_PROFILE_EDIT_PASSWORD is found inside settings.py')
|
||||
print('\033[92mApplying permission can_change_password for all users')
|
||||
users = User.objects.all()
|
||||
permission = Permission.objects.get(codename='change_password')
|
||||
if settings.SHOW_PROFILE_EDIT_PASSWORD:
|
||||
print('\033[91mWarning!!! Setting to True for all users')
|
||||
for user in users:
|
||||
user.user_permissions.add(permission)
|
||||
else:
|
||||
print('\033[91mWarning!!! Setting to False for all users')
|
||||
for user in users:
|
||||
user.user_permissions.remove(permission)
|
||||
print('\033[1mDon`t forget to remove the option from settings.py')
|
||||
|
||||
|
||||
def create_admin(sender, **kwargs):
|
||||
'''
|
||||
Create initial admin user
|
||||
'''
|
||||
from django.contrib.auth.models import User
|
||||
from accounts.models import UserAttributes
|
||||
|
||||
plan = kwargs['plan']
|
||||
for migration, rolled_back in plan:
|
||||
if migration.app_label == 'accounts' and migration.name == '0001_initial' and not rolled_back:
|
||||
if User.objects.count() == 0:
|
||||
print('\033[92mCreating default admin user')
|
||||
admin = User.objects.create_superuser('admin', None, 'admin')
|
||||
UserAttributes(user=admin, max_instances=-1, max_cpus=-1, max_memory=-1, max_disk_size=-1).save()
|
||||
break
|
||||
|
||||
|
||||
class AccountsConfig(AppConfig):
|
||||
name = 'accounts'
|
||||
verbose_name = 'Accounts'
|
||||
|
||||
def ready(self):
|
||||
post_migrate.connect(apply_change_password, sender=self)
|
||||
post_migrate.connect(create_admin, sender=self)
|
||||
Loading…
Add table
Add a link
Reference in a new issue