0001_initial.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. from django.conf import settings
  4. from django.db import models, migrations
  5. import django.db.models.deletion
  6. import django.utils.timezone
  7. from misago.core.pgutils import CreatePartialIndex, CreatePartialCompositeIndex
  8. class Migration(migrations.Migration):
  9. dependencies = [
  10. ('misago_categories', '0001_initial'),
  11. migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  12. ]
  13. operations = [
  14. migrations.CreateModel(
  15. name='Post',
  16. fields=[
  17. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  18. ('poster_name', models.CharField(max_length=255)),
  19. ('poster_ip', models.GenericIPAddressField()),
  20. ('original', models.TextField()),
  21. ('parsed', models.TextField()),
  22. ('checksum', models.CharField(max_length=64, default='-')),
  23. ('has_attachments', models.BooleanField(default=False)),
  24. ('pickled_attachments', models.TextField(null=True, blank=True)),
  25. ('posted_on', models.DateTimeField()),
  26. ('updated_on', models.DateTimeField()),
  27. ('edits', models.PositiveIntegerField(default=0)),
  28. ('last_editor_name', models.CharField(max_length=255, null=True, blank=True)),
  29. ('last_editor_slug', models.SlugField(max_length=255, null=True, blank=True)),
  30. ('hidden_by', models.ForeignKey(related_name='+', on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  31. ('hidden_by_name', models.CharField(max_length=255, null=True, blank=True)),
  32. ('hidden_by_slug', models.SlugField(max_length=255, null=True, blank=True)),
  33. ('hidden_on', models.DateTimeField(default=django.utils.timezone.now)),
  34. ('has_reports', models.BooleanField(default=False)),
  35. ('has_open_reports', models.BooleanField(default=False)),
  36. ('is_unapproved', models.BooleanField(default=False, db_index=True)),
  37. ('is_hidden', models.BooleanField(default=False)),
  38. ('is_protected', models.BooleanField(default=False)),
  39. ('category', models.ForeignKey(to='misago_categories.Category')),
  40. ('last_editor', models.ForeignKey(related_name='+', on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  41. ('mentions', models.ManyToManyField(related_name='mention_set', to=settings.AUTH_USER_MODEL)),
  42. ('poster', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  43. ],
  44. options={
  45. },
  46. bases=(models.Model,),
  47. ),
  48. CreatePartialIndex(
  49. field='Post.has_open_reports',
  50. index_name='misago_post_has_open_reports_partial',
  51. condition='has_open_reports = TRUE',
  52. ),
  53. CreatePartialIndex(
  54. field='Post.is_hidden',
  55. index_name='misago_post_is_hidden_partial',
  56. condition='is_hidden = FALSE',
  57. ),
  58. migrations.CreateModel(
  59. name='Thread',
  60. fields=[
  61. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  62. ('title', models.CharField(max_length=255)),
  63. ('slug', models.CharField(max_length=255)),
  64. ('replies', models.PositiveIntegerField(default=0, db_index=True)),
  65. ('has_reported_posts', models.BooleanField(default=False)),
  66. ('has_open_reports', models.BooleanField(default=False)),
  67. ('has_unapproved_posts', models.BooleanField(default=False)),
  68. ('has_hidden_posts', models.BooleanField(default=False)),
  69. ('has_events', models.BooleanField(default=False)),
  70. ('started_on', models.DateTimeField(db_index=True)),
  71. ('starter_name', models.CharField(max_length=255)),
  72. ('starter_slug', models.CharField(max_length=255)),
  73. ('last_post_on', models.DateTimeField(db_index=True)),
  74. ('last_poster_name', models.CharField(max_length=255, null=True, blank=True)),
  75. ('last_poster_slug', models.CharField(max_length=255, null=True, blank=True)),
  76. ('weight', models.PositiveIntegerField(default=0)),
  77. ('is_poll', models.BooleanField(default=False)),
  78. ('is_unapproved', models.BooleanField(default=False, db_index=True)),
  79. ('is_hidden', models.BooleanField(default=False)),
  80. ('is_closed', models.BooleanField(default=False)),
  81. ],
  82. options={
  83. },
  84. bases=(models.Model,),
  85. ),
  86. CreatePartialIndex(
  87. field='Thread.weight',
  88. index_name='misago_thread_is_global',
  89. condition='weight = 2',
  90. ),
  91. CreatePartialIndex(
  92. field='Thread.weight',
  93. index_name='misago_thread_is_local',
  94. condition='weight < 2',
  95. ),
  96. migrations.CreateModel(
  97. name='ThreadParticipant',
  98. fields=[
  99. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  100. ('thread', models.ForeignKey(to='misago_threads.Thread')),
  101. ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
  102. ('is_owner', models.BooleanField(default=False)),
  103. ],
  104. options={
  105. },
  106. bases=(models.Model,),
  107. ),
  108. migrations.AddField(
  109. model_name='thread',
  110. name='participants',
  111. field=models.ManyToManyField(related_name='private_thread_set', through='misago_threads.ThreadParticipant', through_fields=('thread', 'user'), to=settings.AUTH_USER_MODEL),
  112. preserve_default=True,
  113. ),
  114. migrations.CreateModel(
  115. name='Event',
  116. fields=[
  117. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  118. ('author_name', models.CharField(max_length=255)),
  119. ('author_slug', models.CharField(max_length=255)),
  120. ('icon', models.CharField(max_length=255)),
  121. ('occured_on', models.DateTimeField(default=django.utils.timezone.now, db_index=True)),
  122. ('message', models.CharField(max_length=255)),
  123. ('checksum', models.CharField(max_length=64, default='-')),
  124. ('is_hidden', models.BooleanField(default=False)),
  125. ('author', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  126. ('category', models.ForeignKey(to='misago_categories.Category')),
  127. ('thread', models.ForeignKey(to='misago_threads.Thread')),
  128. ],
  129. options={
  130. },
  131. bases=(models.Model,),
  132. ),
  133. CreatePartialIndex(
  134. field='Thread.has_reported_posts',
  135. index_name='misago_thread_has_reported_posts_partial',
  136. condition='has_reported_posts = TRUE',
  137. ),
  138. CreatePartialIndex(
  139. field='Thread.has_unapproved_posts',
  140. index_name='misago_thread_has_unapproved_posts_partial',
  141. condition='has_unapproved_posts = TRUE',
  142. ),
  143. CreatePartialIndex(
  144. field='Thread.is_hidden',
  145. index_name='misago_thread_is_hidden_partial',
  146. condition='is_hidden = FALSE',
  147. ),
  148. CreatePartialIndex(
  149. field='Thread.weight',
  150. index_name='misago_thread_is_pinned_globally_partial',
  151. condition='weight = 2',
  152. ),
  153. CreatePartialIndex(
  154. field='Thread.weight',
  155. index_name='misago_thread_is_pinned_locally_partial',
  156. condition='weight = 1',
  157. ),
  158. CreatePartialIndex(
  159. field='Thread.weight',
  160. index_name='misago_thread_is_unpinned_partial',
  161. condition='weight = 0',
  162. ),
  163. migrations.AddField(
  164. model_name='post',
  165. name='thread',
  166. field=models.ForeignKey(to='misago_threads.Thread'),
  167. preserve_default=True,
  168. ),
  169. migrations.AddField(
  170. model_name='thread',
  171. name='first_post',
  172. field=models.ForeignKey(related_name='+', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='misago_threads.Post', null=True),
  173. preserve_default=True,
  174. ),
  175. migrations.AddField(
  176. model_name='thread',
  177. name='category',
  178. field=models.ForeignKey(to='misago_categories.Category'),
  179. preserve_default=True,
  180. ),
  181. migrations.AddField(
  182. model_name='thread',
  183. name='last_post',
  184. field=models.ForeignKey(related_name='+', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='misago_threads.Post', null=True),
  185. preserve_default=True,
  186. ),
  187. migrations.AddField(
  188. model_name='thread',
  189. name='last_poster',
  190. field=models.ForeignKey(related_name='last_poster_set', on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True),
  191. preserve_default=True,
  192. ),
  193. migrations.AddField(
  194. model_name='thread',
  195. name='starter',
  196. field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True),
  197. preserve_default=True,
  198. ),
  199. migrations.AlterIndexTogether(
  200. name='thread',
  201. index_together=set([
  202. ('category', 'id'),
  203. ('category', 'last_post_on'),
  204. ('category', 'replies'),
  205. ]),
  206. ),
  207. migrations.CreateModel(
  208. name='Subscription',
  209. fields=[
  210. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  211. ('last_read_on', models.DateTimeField(default=django.utils.timezone.now)),
  212. ('send_email', models.BooleanField(default=False)),
  213. ('category', models.ForeignKey(to='misago_categories.Category')),
  214. ('thread', models.ForeignKey(to='misago_threads.Thread')),
  215. ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
  216. ],
  217. options={
  218. },
  219. bases=(models.Model,),
  220. ),
  221. ]