# Generated by Django 4.2.15 on 2024-09-03 03:48

from django.db import migrations
from guardian.shortcuts import assign_perm, get_users_with_perms, remove_perm
from api.models.app import VIEW_APP_PERMISSION, CHANGE_APP_PERMISSION
from api.models.domain import Domain
from api.models.certificate import Certificate


def migration_permission(apps, schema_editor):
    App = apps.get_model('api', 'App')
    for app in App.objects.all():
        for user in get_users_with_perms(app):
            remove_perm('use_app', user, app)
            assign_perm(VIEW_APP_PERMISSION.codename, user, app)
            assign_perm(CHANGE_APP_PERMISSION.codename, user, app)


def migration_certificate(apps, schema_editor):
    for domain in Domain.objects.all():
        if domain.certificate:
            certificate = Certificate.objects.filter(
                app=domain.app, name=domain.certificate.name).first()
            if not certificate:
                certificate = domain.certificate
                certificate.pk = None
                certificate.app = domain.app
                certificate.save()
            domain.certificate = certificate
            domain.save()
    Certificate.objects.filter(app=None).delete()


class Migration(migrations.Migration):

    dependencies = [
        ('api', '0012_alter_app_options_rename_procfile_type_domain_ptype_and_more'),
    ]

    operations = [
        migrations.RunPython(migration_permission),
        migrations.RunPython(migration_certificate),
    ]
