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. migrations.CreateModel(
  137. name='Report',
  138. fields=[
  139. ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
  140. ('reported_by_name', models.CharField(max_length=255)),
  141. ('reported_by_slug', models.CharField(max_length=255)),
  142. ('reported_by_ip', models.GenericIPAddressField()),
  143. ('reported_on', models.DateTimeField(default=django.utils.timezone.now)),
  144. ('message', models.TextField()),
  145. ('checksum', models.CharField(default=b'-', max_length=64)),
  146. ('is_closed', models.BooleanField(default=False)),
  147. ('closed_by_name', models.CharField(max_length=255)),
  148. ('closed_by_slug', models.CharField(max_length=255)),
  149. ('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)),
  150. ('closed_on', models.DateTimeField(default=django.utils.timezone.now)),
  151. ('forum', models.ForeignKey(to='misago_forums.Forum')),
  152. ('post', models.ForeignKey(to='misago_threads.Post')),
  153. ('reported_by', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True)),
  154. ('thread', models.ForeignKey(to='misago_threads.Thread')),
  155. ],
  156. options={
  157. },
  158. bases=(models.Model,),
  159. ),
  160. CreatePartialIndex(
  161. field='Thread.has_reported_posts',
  162. index_name='misago_thread_has_reported_posts_partial',
  163. condition='has_reported_posts = TRUE',
  164. ),
  165. CreatePartialIndex(
  166. field='Thread.has_moderated_posts',
  167. index_name='misago_thread_has_moderated_posts_partial',
  168. condition='has_moderated_posts = TRUE',
  169. ),
  170. CreatePartialIndex(
  171. field='Thread.is_hidden',
  172. index_name='misago_thread_is_hidden_partial',
  173. condition='is_hidden = FALSE',
  174. ),
  175. migrations.AddField(
  176. model_name='post',
  177. name='thread',
  178. field=models.ForeignKey(to='misago_threads.Thread'),
  179. preserve_default=True,
  180. ),
  181. migrations.AddField(
  182. model_name='thread',
  183. name='first_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='forum',
  190. field=models.ForeignKey(to='misago_forums.Forum'),
  191. preserve_default=True,
  192. ),
  193. migrations.AddField(
  194. model_name='thread',
  195. name='last_post',
  196. field=models.ForeignKey(related_name='+', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='misago_threads.Post', null=True),
  197. preserve_default=True,
  198. ),
  199. migrations.AddField(
  200. model_name='thread',
  201. name='last_poster',
  202. 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),
  203. preserve_default=True,
  204. ),
  205. migrations.AddField(
  206. model_name='thread',
  207. name='label',
  208. field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='misago_threads.Label', null=True),
  209. preserve_default=True,
  210. ),
  211. migrations.AddField(
  212. model_name='thread',
  213. name='starter',
  214. field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL, null=True),
  215. preserve_default=True,
  216. ),
  217. migrations.AlterIndexTogether(
  218. name='thread',
  219. index_together=set([
  220. ('forum', 'id'),
  221. ('forum', 'last_post_on'),
  222. ('forum', 'replies'),
  223. ]),
  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. ]