0001_initial.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import mptt.fields
  2. import django.db.models.deletion
  3. from django.conf import settings
  4. from django.contrib.postgres.fields import JSONField
  5. from django.db import migrations, models
  6. from misago.acl.models import permissions_default
  7. class Migration(migrations.Migration):
  8. initial = True
  9. dependencies = [
  10. ("misago_acl", "0001_initial"),
  11. migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  12. ]
  13. operations = [
  14. migrations.CreateModel(
  15. name="Category",
  16. fields=[
  17. (
  18. "id",
  19. models.AutoField(
  20. verbose_name="ID",
  21. serialize=False,
  22. auto_created=True,
  23. primary_key=True,
  24. ),
  25. ),
  26. (
  27. "special_role",
  28. models.CharField(max_length=255, null=True, blank=True),
  29. ),
  30. ("name", models.CharField(max_length=255)),
  31. ("slug", models.CharField(max_length=255)),
  32. ("description", models.TextField(null=True, blank=True)),
  33. ("is_closed", models.BooleanField(default=False)),
  34. ("threads", models.PositiveIntegerField(default=0)),
  35. ("posts", models.PositiveIntegerField(default=0)),
  36. (
  37. "last_thread_title",
  38. models.CharField(max_length=255, null=True, blank=True),
  39. ),
  40. (
  41. "last_thread_slug",
  42. models.CharField(max_length=255, null=True, blank=True),
  43. ),
  44. (
  45. "last_poster_name",
  46. models.CharField(max_length=255, null=True, blank=True),
  47. ),
  48. (
  49. "last_poster_slug",
  50. models.CharField(max_length=255, null=True, blank=True),
  51. ),
  52. ("last_post_on", models.DateTimeField(null=True, blank=True)),
  53. ("prune_started_after", models.PositiveIntegerField(default=0)),
  54. ("prune_replied_after", models.PositiveIntegerField(default=0)),
  55. ("css_class", models.CharField(max_length=255, null=True, blank=True)),
  56. ("lft", models.PositiveIntegerField(editable=False, db_index=True)),
  57. ("rght", models.PositiveIntegerField(editable=False, db_index=True)),
  58. ("tree_id", models.PositiveIntegerField(editable=False, db_index=True)),
  59. ("level", models.PositiveIntegerField(editable=False, db_index=True)),
  60. (
  61. "archive_pruned_in",
  62. models.ForeignKey(
  63. related_name="pruned_archive",
  64. on_delete=django.db.models.deletion.SET_NULL,
  65. blank=True,
  66. to="misago_categories.Category",
  67. null=True,
  68. ),
  69. ),
  70. (
  71. "last_poster",
  72. models.ForeignKey(
  73. related_name="+",
  74. on_delete=django.db.models.deletion.SET_NULL,
  75. blank=True,
  76. to=settings.AUTH_USER_MODEL,
  77. null=True,
  78. ),
  79. ),
  80. (
  81. "parent",
  82. mptt.fields.TreeForeignKey(
  83. related_name="children",
  84. on_delete=django.db.models.deletion.CASCADE,
  85. blank=True,
  86. to="misago_categories.Category",
  87. null=True,
  88. ),
  89. ),
  90. ],
  91. options={"abstract": False},
  92. bases=(models.Model,),
  93. ),
  94. migrations.CreateModel(
  95. name="CategoryRole",
  96. fields=[
  97. (
  98. "id",
  99. models.AutoField(
  100. verbose_name="ID",
  101. serialize=False,
  102. auto_created=True,
  103. primary_key=True,
  104. ),
  105. ),
  106. ("name", models.CharField(max_length=255)),
  107. (
  108. "special_role",
  109. models.CharField(max_length=255, null=True, blank=True),
  110. ),
  111. ("permissions", JSONField(default=permissions_default)),
  112. ],
  113. options={"abstract": False},
  114. bases=(models.Model,),
  115. ),
  116. migrations.CreateModel(
  117. name="RoleCategoryACL",
  118. fields=[
  119. (
  120. "id",
  121. models.AutoField(
  122. verbose_name="ID",
  123. serialize=False,
  124. auto_created=True,
  125. primary_key=True,
  126. ),
  127. ),
  128. (
  129. "category",
  130. models.ForeignKey(
  131. related_name="category_role_set",
  132. on_delete=django.db.models.deletion.CASCADE,
  133. to="misago_categories.Category",
  134. ),
  135. ),
  136. (
  137. "category_role",
  138. models.ForeignKey(
  139. on_delete=django.db.models.deletion.CASCADE,
  140. to="misago_categories.CategoryRole",
  141. to_field="id",
  142. ),
  143. ),
  144. (
  145. "role",
  146. models.ForeignKey(
  147. related_name="categories_acls",
  148. on_delete=django.db.models.deletion.CASCADE,
  149. to="misago_acl.Role",
  150. ),
  151. ),
  152. ],
  153. options={},
  154. bases=(models.Model,),
  155. ),
  156. ]