mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
41 lines
1.2 KiB
3 years ago
|
# Generated by Django 3.1.12 on 2021-08-26 09:59
|
||
|
|
||
|
from django.db import migrations, transaction
|
||
|
from django.db.models import F
|
||
|
|
||
|
|
||
|
def migrate_app_account(apps, schema_editor):
|
||
|
db_alias = schema_editor.connection.alias
|
||
|
app_perm_model = apps.get_model("perms", "ApplicationPermission")
|
||
|
app_account_model = apps.get_model("applications", 'Account')
|
||
|
|
||
|
queryset = app_perm_model.objects \
|
||
|
.exclude(system_users__isnull=True) \
|
||
|
.exclude(applications__isnull=True) \
|
||
|
.annotate(systemuser=F('system_users')) \
|
||
|
.annotate(app=F('applications')) \
|
||
|
.values('app', 'systemuser', 'org_id')
|
||
|
|
||
|
accounts = []
|
||
|
for p in queryset:
|
||
|
if not p['app']:
|
||
|
continue
|
||
|
account = app_account_model(
|
||
|
app_id=p['app'], systemuser_id=p['systemuser'],
|
||
|
version=1, org_id=p['org_id']
|
||
|
)
|
||
|
accounts.append(account)
|
||
|
|
||
|
app_account_model.objects.using(db_alias).bulk_create(accounts, ignore_conflicts=True)
|
||
|
|
||
|
|
||
|
class Migration(migrations.Migration):
|
||
|
|
||
|
dependencies = [
|
||
|
('applications', '0010_appaccount_historicalappaccount'),
|
||
|
]
|
||
|
|
||
|
operations = [
|
||
|
migrations.RunPython(migrate_app_account)
|
||
|
]
|