mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
# 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)
 | 
						|
    ]
 |