# Generated by Django 3.2.10 on 2021-12-17 22:56 from django.conf import settings from django.db import migrations, models import django.db.models.deletion import django.db.models.expressions class Migration(migrations.Migration): dependencies = [ ("desecapi", "0017_alter_user_limit_domains"), ] operations = [ migrations.AlterField( model_name="token", name="user", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL ), ), migrations.CreateModel( name="TokenDomainPolicy", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("perm_dyndns", models.BooleanField(default=False)), ("perm_rrsets", models.BooleanField(default=False)), ( "domain", models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, to="desecapi.domain", ), ), ( "token", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="desecapi.token" ), ), ( "token_user", models.ForeignKey( db_constraint=False, on_delete=django.db.models.deletion.CASCADE, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ], ), migrations.AddField( model_name="token", name="domain_policies", field=models.ManyToManyField( through="desecapi.TokenDomainPolicy", to="desecapi.Domain" ), ), migrations.AddConstraint( model_name="tokendomainpolicy", constraint=models.UniqueConstraint( fields=("token", "domain"), name="unique_entry" ), ), migrations.AddConstraint( model_name="tokendomainpolicy", constraint=models.UniqueConstraint( condition=models.Q(("domain__isnull", True)), fields=("token",), name="unique_entry_null_domain", ), ), # The remaining operations ensure that domain.owner and token.user can't be inconsistent migrations.AlterModelOptions( name="token", options={}, ), migrations.AddConstraint( model_name="token", constraint=models.UniqueConstraint( fields=("id", "user"), name="unique_id_user" ), ), migrations.AddConstraint( model_name="domain", constraint=models.UniqueConstraint( fields=("id", "owner"), name="unique_id_owner" ), ), migrations.RunSQL( "ALTER TABLE desecapi_tokendomainpolicy" " ADD FOREIGN KEY ( domain_id, token_user_id ) REFERENCES desecapi_domain ( id, owner_id )," " ADD FOREIGN KEY ( token_id, token_user_id ) REFERENCES desecapi_token ( id, user_id );", migrations.RunSQL.noop, ), ]