0001_initial.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  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_forums', '0001_initial'),
  11. migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  12. ]
  13. operations = [
  14. migrations.CreateModel(
  15. name='Label',
  16. fields=[
  17. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  18. ('name', models.CharField(max_length=255)),
  19. ('slug', models.SlugField(max_length=255)),
  20. ('css_class', models.CharField(max_length=255, null=True, blank=True)),
  21. ('forums', models.ManyToManyField(to='misago_forums.Forum')),
  22. ],
  23. options={
  24. },
  25. bases=(models.Model,),
  26. ),
  27. migrations.CreateModel(
  28. name='Post',
  29. fields=[
  30. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  31. ('poster_name', models.CharField(max_length=255)),
  32. ('poster_ip', models.GenericIPAddressField()),
  33. ('original', models.TextField()),
  34. ('parsed', models.TextField()),
  35. ('checksum', models.CharField(max_length=64, default='-')),
  36. ('has_attachments', models.BooleanField(default=False)),
  37. ('pickled_attachments', models.TextField(null=True, blank=True)),
  38. ('posted_on', models.DateTimeField()),
  39. ('updated_on', models.DateTimeField()),
  40. ('edits', models.PositiveIntegerField(default=0)),
  41. ('last_editor_name', models.CharField(max_length=255, null=True, blank=True)),
  42. ('last_editor_slug', models.SlugField(max_length=255, null=True, blank=True)),
  43. ('hidden_by', models.ForeignKey(related_name='+', on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  44. ('hidden_by_name', models.CharField(max_length=255, null=True, blank=True)),
  45. ('hidden_by_slug', models.SlugField(max_length=255, null=True, blank=True)),
  46. ('hidden_on', models.DateTimeField(default=django.utils.timezone.now)),
  47. ('has_reports', models.BooleanField(default=False)),
  48. ('has_open_reports', models.BooleanField(default=False)),
  49. ('is_moderated', models.BooleanField(default=False, db_index=True)),
  50. ('is_hidden', models.BooleanField(default=False)),
  51. ('is_protected', models.BooleanField(default=False)),
  52. ('forum', models.ForeignKey(to='misago_forums.Forum')),
  53. ('last_editor', models.ForeignKey(related_name='+', on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  54. ('mentions', models.ManyToManyField(related_name='mention_set', to=settings.AUTH_USER_MODEL)),
  55. ('poster', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  56. ],
  57. options={
  58. },
  59. bases=(models.Model,),
  60. ),
  61. CreatePartialIndex(
  62. field='Post.has_open_reports',
  63. index_name='misago_post_has_open_reports_partial',
  64. condition='has_open_reports = TRUE',
  65. ),
  66. CreatePartialIndex(
  67. field='Post.is_hidden',
  68. index_name='misago_post_is_hidden_partial',
  69. condition='is_hidden = FALSE',
  70. ),
  71. migrations.CreateModel(
  72. name='Thread',
  73. fields=[
  74. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  75. ('title', models.CharField(max_length=255)),
  76. ('slug', models.CharField(max_length=255)),
  77. ('replies', models.PositiveIntegerField(default=0, db_index=True)),
  78. ('has_reported_posts', models.BooleanField(default=False)),
  79. ('has_open_reports', models.BooleanField(default=False)),
  80. ('has_moderated_posts', models.BooleanField(default=False)),
  81. ('has_hidden_posts', models.BooleanField(default=False)),
  82. ('has_events', models.BooleanField(default=False)),
  83. ('started_on', models.DateTimeField(db_index=True)),
  84. ('starter_name', models.CharField(max_length=255)),
  85. ('starter_slug', models.CharField(max_length=255)),
  86. ('last_post_on', models.DateTimeField(db_index=True)),
  87. ('last_poster_name', models.CharField(max_length=255, null=True, blank=True)),
  88. ('last_poster_slug', models.CharField(max_length=255, null=True, blank=True)),
  89. ('is_pinned', models.BooleanField(default=False, db_index=True)),
  90. ('is_poll', models.BooleanField(default=False)),
  91. ('is_moderated', models.BooleanField(default=False, db_index=True)),
  92. ('is_hidden', models.BooleanField(default=False)),
  93. ('is_closed', models.BooleanField(default=False)),
  94. ],
  95. options={
  96. },
  97. bases=(models.Model,),
  98. ),
  99. migrations.CreateModel(
  100. name='ThreadParticipant',
  101. fields=[
  102. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  103. ('thread', models.ForeignKey(to='misago_threads.Thread')),
  104. ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
  105. ('is_owner', models.BooleanField(default=False)),
  106. ],
  107. options={
  108. },
  109. bases=(models.Model,),
  110. ),
  111. migrations.AddField(
  112. model_name='thread',
  113. name='participants',
  114. field=models.ManyToManyField(related_name='private_thread_set', through='misago_threads.ThreadParticipant', through_fields=('thread', 'user'), to=settings.AUTH_USER_MODEL),
  115. preserve_default=True,
  116. ),
  117. migrations.CreateModel(
  118. name='Event',
  119. fields=[
  120. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  121. ('author_name', models.CharField(max_length=255)),
  122. ('author_slug', models.CharField(max_length=255)),
  123. ('icon', models.CharField(max_length=255)),
  124. ('occured_on', models.DateTimeField(default=django.utils.timezone.now, db_index=True)),
  125. ('message', models.CharField(max_length=255)),
  126. ('checksum', models.CharField(max_length=64, default='-')),
  127. ('is_hidden', models.BooleanField(default=False)),
  128. ('author', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  129. ('forum', models.ForeignKey(to='misago_forums.Forum')),
  130. ('thread', models.ForeignKey(to='misago_threads.Thread')),
  131. ],
  132. options={
  133. },
  134. bases=(models.Model,),
  135. ),
  136. CreatePartialIndex(
  137. field='Thread.has_reported_posts',
  138. index_name='misago_thread_has_reported_posts_partial',
  139. condition='has_reported_posts = TRUE',
  140. ),
  141. CreatePartialIndex(
  142. field='Thread.has_moderated_posts',
  143. index_name='misago_thread_has_moderated_posts_partial',
  144. condition='has_moderated_posts = TRUE',
  145. ),
  146. CreatePartialIndex(
  147. field='Thread.is_hidden',
  148. index_name='misago_thread_is_hidden_partial',
  149. condition='is_hidden = FALSE',
  150. ),
  151. migrations.AddField(
  152. model_name='post',
  153. name='thread',
  154. field=models.ForeignKey(to='misago_threads.Thread'),
  155. preserve_default=True,
  156. ),
  157. migrations.AddField(
  158. model_name='thread',
  159. name='first_post',
  160. field=models.ForeignKey(related_name='+', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='misago_threads.Post', null=True),
  161. preserve_default=True,
  162. ),
  163. migrations.AddField(
  164. model_name='thread',
  165. name='forum',
  166. field=models.ForeignKey(to='misago_forums.Forum'),
  167. preserve_default=True,
  168. ),
  169. migrations.AddField(
  170. model_name='thread',
  171. name='last_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='last_poster',
  178. 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),
  179. preserve_default=True,
  180. ),
  181. migrations.AddField(
  182. model_name='thread',
  183. name='label',
  184. field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='misago_threads.Label', null=True),
  185. preserve_default=True,
  186. ),
  187. migrations.AddField(
  188. model_name='thread',
  189. name='starter',
  190. field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True),
  191. preserve_default=True,
  192. ),
  193. migrations.AlterIndexTogether(
  194. name='thread',
  195. index_together=set([
  196. ('forum', 'id'),
  197. ('forum', 'last_post_on'),
  198. ('forum', 'replies'),
  199. ]),
  200. ),
  201. migrations.CreateModel(
  202. name='Report',
  203. fields=[
  204. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  205. ('reported_by_name', models.CharField(max_length=255)),
  206. ('reported_by_slug', models.CharField(max_length=255)),
  207. ('reported_by_ip', models.GenericIPAddressField()),
  208. ('reported_on', models.DateTimeField(default=django.utils.timezone.now)),
  209. ('parsed', models.TextField()),
  210. ('checksum', models.CharField(default=b'-', max_length=64)),
  211. ('is_closed', models.BooleanField(default=False)),
  212. ('closed_by_name', models.CharField(max_length=255)),
  213. ('closed_by_slug', models.CharField(max_length=255)),
  214. ('closed_by', models.ForeignKey(related_name='closedreport_set', on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  215. ('closed_on', models.DateTimeField(default=django.utils.timezone.now)),
  216. ('forum', models.ForeignKey(to='misago_forums.Forum')),
  217. ('post', models.ForeignKey(to='misago_threads.Post')),
  218. ('reported_by', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  219. ('thread', models.ForeignKey(to='misago_threads.Thread')),
  220. ],
  221. options={
  222. },
  223. bases=(models.Model,),
  224. ),
  225. CreatePartialCompositeIndex(
  226. model='Report',
  227. fields=('post_id', 'is_closed'),
  228. index_name='misago_report_active_reports',
  229. condition='is_closed = FALSE',
  230. ),
  231. ]