0001_initial.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. import mptt.fields
  4. import django.db.models.deletion
  5. from django.conf import settings
  6. from django.contrib.postgres.fields import JSONField
  7. from django.db import migrations, models
  8. from misago.acl.models import permissions_default
  9. class Migration(migrations.Migration):
  10. dependencies = [
  11. ('misago_acl', '0001_initial'),
  12. migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  13. ]
  14. operations = [
  15. migrations.CreateModel(
  16. name='Category',
  17. fields=[
  18. (
  19. 'id', models.AutoField(
  20. verbose_name='ID', serialize=False, auto_created=True, primary_key=True
  21. )
  22. ),
  23. ('special_role', models.CharField(max_length=255, null=True, blank=True)),
  24. ('name', models.CharField(max_length=255)),
  25. ('slug', models.CharField(max_length=255)),
  26. ('description', models.TextField(null=True, blank=True)),
  27. ('is_closed', models.BooleanField(default=False)),
  28. ('threads', models.PositiveIntegerField(default=0)),
  29. ('posts', models.PositiveIntegerField(default=0)),
  30. ('last_thread_title', models.CharField(max_length=255, null=True, blank=True)),
  31. ('last_thread_slug', models.CharField(max_length=255, null=True, blank=True)),
  32. ('last_poster_name', models.CharField(max_length=255, null=True, blank=True)),
  33. ('last_poster_slug', models.CharField(max_length=255, null=True, blank=True)),
  34. ('last_post_on', models.DateTimeField(null=True, blank=True)),
  35. ('prune_started_after', models.PositiveIntegerField(default=0)),
  36. ('prune_replied_after', models.PositiveIntegerField(default=0)),
  37. ('css_class', models.CharField(max_length=255, null=True, blank=True)),
  38. ('lft', models.PositiveIntegerField(editable=False, db_index=True)),
  39. ('rght', models.PositiveIntegerField(editable=False, db_index=True)),
  40. ('tree_id', models.PositiveIntegerField(editable=False, db_index=True)),
  41. ('level', models.PositiveIntegerField(editable=False, db_index=True)),
  42. (
  43. 'archive_pruned_in', models.ForeignKey(
  44. related_name='pruned_archive',
  45. on_delete=django.db.models.deletion.SET_NULL,
  46. blank=True,
  47. to='misago_categories.Category',
  48. null=True
  49. )
  50. ),
  51. (
  52. 'last_poster', models.ForeignKey(
  53. related_name='+',
  54. on_delete=django.db.models.deletion.SET_NULL,
  55. blank=True,
  56. to=settings.AUTH_USER_MODEL,
  57. null=True
  58. )
  59. ),
  60. (
  61. 'parent', mptt.fields.TreeForeignKey(
  62. related_name='children',
  63. blank=True,
  64. to='misago_categories.Category',
  65. null=True
  66. )
  67. ),
  68. ],
  69. options={
  70. 'abstract': False,
  71. },
  72. bases=(models.Model, ),
  73. ),
  74. migrations.CreateModel(
  75. name='CategoryRole',
  76. fields=[
  77. (
  78. 'id', models.AutoField(
  79. verbose_name='ID', serialize=False, auto_created=True, primary_key=True
  80. )
  81. ),
  82. ('name', models.CharField(max_length=255)),
  83. ('special_role', models.CharField(max_length=255, null=True, blank=True)),
  84. ('permissions', JSONField(default=permissions_default)),
  85. ],
  86. options={
  87. 'abstract': False,
  88. },
  89. bases=(models.Model, ),
  90. ),
  91. migrations.CreateModel(
  92. name='RoleCategoryACL',
  93. fields=[
  94. (
  95. 'id', models.AutoField(
  96. verbose_name='ID', serialize=False, auto_created=True, primary_key=True
  97. )
  98. ),
  99. (
  100. 'category', models.ForeignKey(
  101. related_name='category_role_set', to='misago_categories.Category'
  102. )
  103. ),
  104. (
  105. 'category_role',
  106. models.ForeignKey(to='misago_categories.CategoryRole', to_field='id')
  107. ),
  108. ('role', models.ForeignKey(related_name='categories_acls', to='misago_acl.Role')),
  109. ],
  110. options={},
  111. bases=(models.Model, ),
  112. ),
  113. ]