0018_tokendomainpolicy.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # Generated by Django 3.2.10 on 2021-12-17 22:56
  2. from django.conf import settings
  3. from django.db import migrations, models
  4. import django.db.models.deletion
  5. import django.db.models.expressions
  6. class Migration(migrations.Migration):
  7. dependencies = [
  8. ('desecapi', '0017_alter_user_limit_domains'),
  9. ]
  10. operations = [
  11. migrations.AlterField(
  12. model_name='token',
  13. name='user',
  14. field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
  15. ),
  16. migrations.CreateModel(
  17. name='TokenDomainPolicy',
  18. fields=[
  19. ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  20. ('perm_dyndns', models.BooleanField(default=False)),
  21. ('perm_rrsets', models.BooleanField(default=False)),
  22. ('domain', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='desecapi.domain')),
  23. ('token', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='desecapi.token')),
  24. ('token_user', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
  25. ],
  26. ),
  27. migrations.AddField(
  28. model_name='token',
  29. name='domain_policies',
  30. field=models.ManyToManyField(through='desecapi.TokenDomainPolicy', to='desecapi.Domain'),
  31. ),
  32. migrations.AddConstraint(
  33. model_name='tokendomainpolicy',
  34. constraint=models.UniqueConstraint(fields=('token', 'domain'), name='unique_entry'),
  35. ),
  36. migrations.AddConstraint(
  37. model_name='tokendomainpolicy',
  38. constraint=models.UniqueConstraint(condition=models.Q(('domain__isnull', True)), fields=('token',), name='unique_entry_null_domain'),
  39. ),
  40. # The remaining operations ensure that domain.owner and token.user can't be inconsistent
  41. migrations.AlterModelOptions(
  42. name='token',
  43. options={},
  44. ),
  45. migrations.AddConstraint(
  46. model_name='token',
  47. constraint=models.UniqueConstraint(fields=('id', 'user'), name='unique_id_user'),
  48. ),
  49. migrations.AddConstraint(
  50. model_name='domain',
  51. constraint=models.UniqueConstraint(fields=('id', 'owner'), name='unique_id_owner'),
  52. ),
  53. migrations.RunSQL(
  54. "ALTER TABLE desecapi_tokendomainpolicy"
  55. " ADD FOREIGN KEY ( domain_id, token_user_id ) REFERENCES desecapi_domain ( id, owner_id ),"
  56. " ADD FOREIGN KEY ( token_id, token_user_id ) REFERENCES desecapi_token ( id, user_id );",
  57. migrations.RunSQL.noop
  58. ),
  59. ]