0018_tokendomainpolicy.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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(
  15. on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
  16. ),
  17. ),
  18. migrations.CreateModel(
  19. name="TokenDomainPolicy",
  20. fields=[
  21. (
  22. "id",
  23. models.BigAutoField(
  24. auto_created=True,
  25. primary_key=True,
  26. serialize=False,
  27. verbose_name="ID",
  28. ),
  29. ),
  30. ("perm_dyndns", models.BooleanField(default=False)),
  31. ("perm_rrsets", models.BooleanField(default=False)),
  32. (
  33. "domain",
  34. models.ForeignKey(
  35. null=True,
  36. on_delete=django.db.models.deletion.CASCADE,
  37. to="desecapi.domain",
  38. ),
  39. ),
  40. (
  41. "token",
  42. models.ForeignKey(
  43. on_delete=django.db.models.deletion.CASCADE, to="desecapi.token"
  44. ),
  45. ),
  46. (
  47. "token_user",
  48. models.ForeignKey(
  49. db_constraint=False,
  50. on_delete=django.db.models.deletion.CASCADE,
  51. related_name="+",
  52. to=settings.AUTH_USER_MODEL,
  53. ),
  54. ),
  55. ],
  56. ),
  57. migrations.AddField(
  58. model_name="token",
  59. name="domain_policies",
  60. field=models.ManyToManyField(
  61. through="desecapi.TokenDomainPolicy", to="desecapi.Domain"
  62. ),
  63. ),
  64. migrations.AddConstraint(
  65. model_name="tokendomainpolicy",
  66. constraint=models.UniqueConstraint(
  67. fields=("token", "domain"), name="unique_entry"
  68. ),
  69. ),
  70. migrations.AddConstraint(
  71. model_name="tokendomainpolicy",
  72. constraint=models.UniqueConstraint(
  73. condition=models.Q(("domain__isnull", True)),
  74. fields=("token",),
  75. name="unique_entry_null_domain",
  76. ),
  77. ),
  78. # The remaining operations ensure that domain.owner and token.user can't be inconsistent
  79. migrations.AlterModelOptions(
  80. name="token",
  81. options={},
  82. ),
  83. migrations.AddConstraint(
  84. model_name="token",
  85. constraint=models.UniqueConstraint(
  86. fields=("id", "user"), name="unique_id_user"
  87. ),
  88. ),
  89. migrations.AddConstraint(
  90. model_name="domain",
  91. constraint=models.UniqueConstraint(
  92. fields=("id", "owner"), name="unique_id_owner"
  93. ),
  94. ),
  95. migrations.RunSQL(
  96. "ALTER TABLE desecapi_tokendomainpolicy"
  97. " ADD FOREIGN KEY ( domain_id, token_user_id ) REFERENCES desecapi_domain ( id, owner_id ),"
  98. " ADD FOREIGN KEY ( token_id, token_user_id ) REFERENCES desecapi_token ( id, user_id );",
  99. migrations.RunSQL.noop,
  100. ),
  101. ]