0001_initial.py 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. from __future__ import unicode_literals
  2. import django.db.models.deletion
  3. import django.utils.timezone
  4. from django.conf import settings
  5. from django.contrib.postgres.fields import JSONField
  6. from django.db import migrations, models
  7. import misago.users.avatars.store
  8. class Migration(migrations.Migration):
  9. initial = True
  10. dependencies = [
  11. ('auth', '0001_initial'),
  12. ('misago_acl', '0001_initial'),
  13. ]
  14. operations = [
  15. migrations.CreateModel(
  16. name='User',
  17. fields=[
  18. (
  19. 'id', models.AutoField(
  20. verbose_name='ID', serialize=False, auto_created=True, primary_key=True
  21. )
  22. ),
  23. ('password', models.CharField(max_length=128, verbose_name='password')),
  24. (
  25. 'last_login',
  26. models.DateTimeField(null=True, blank=True, verbose_name='last login')
  27. ),
  28. ('username', models.CharField(max_length=30)),
  29. ('slug', models.CharField(unique=True, max_length=30)),
  30. ('email', models.EmailField(max_length=255, db_index=True)),
  31. ('email_hash', models.CharField(unique=True, max_length=32)),
  32. (
  33. 'joined_on', models.DateTimeField(
  34. default=django.utils.timezone.now, verbose_name='joined on'
  35. )
  36. ),
  37. ('joined_from_ip', models.GenericIPAddressField()),
  38. ('last_ip', models.GenericIPAddressField(null=True, blank=True)),
  39. ('is_hiding_presence', models.BooleanField(default=False)),
  40. ('title', models.CharField(max_length=255, null=True, blank=True)),
  41. ('requires_activation', models.PositiveIntegerField(default=0)),
  42. (
  43. 'is_staff', models.BooleanField(
  44. default=False,
  45. help_text='Designates whether the user can log into admin sites.',
  46. verbose_name='staff status'
  47. )
  48. ),
  49. (
  50. 'is_superuser', models.BooleanField(
  51. default=False,
  52. help_text='Designates that this user has all permissions without explicitly assigning them.',
  53. verbose_name='superuser status'
  54. )
  55. ),
  56. ('acl_key', models.CharField(max_length=12, null=True, blank=True)),
  57. (
  58. 'is_active', models.BooleanField(
  59. db_index=True,
  60. default=True,
  61. verbose_name='active',
  62. help_text=(
  63. 'Designates whether this user should be treated as active. Unselect this instead of deleting '
  64. 'accounts.'
  65. )
  66. )
  67. ),
  68. ('is_active_staff_message', models.TextField(null=True, blank=True)),
  69. (
  70. 'groups', models.ManyToManyField(
  71. related_query_name='user',
  72. related_name='user_set',
  73. to='auth.Group',
  74. blank=True,
  75. help_text='The groups this user belongs to. A user will get all permissions granted to each of his/her group.',
  76. verbose_name='groups'
  77. )
  78. ),
  79. ('roles', models.ManyToManyField(to='misago_acl.Role')),
  80. (
  81. 'user_permissions', models.ManyToManyField(
  82. related_query_name='user',
  83. related_name='user_set',
  84. to='auth.Permission',
  85. blank=True,
  86. help_text='Specific permissions for this user.',
  87. verbose_name='user permissions'
  88. )
  89. ),
  90. (
  91. 'avatar_tmp', models.ImageField(
  92. max_length=255,
  93. upload_to=misago.users.avatars.store.upload_to,
  94. null=True,
  95. blank=True
  96. )
  97. ),
  98. (
  99. 'avatar_src', models.ImageField(
  100. max_length=255,
  101. upload_to=misago.users.avatars.store.upload_to,
  102. null=True,
  103. blank=True
  104. )
  105. ),
  106. ('avatar_crop', models.CharField(max_length=255, null=True, blank=True)),
  107. ('avatars', JSONField(null=True, blank=True)),
  108. ('is_avatar_locked', models.BooleanField(default=False)),
  109. ('avatar_lock_user_message', models.TextField(null=True, blank=True)),
  110. ('avatar_lock_staff_message', models.TextField(null=True, blank=True)),
  111. ('signature', models.TextField(null=True, blank=True)),
  112. ('signature_parsed', models.TextField(null=True, blank=True)),
  113. ('signature_checksum', models.CharField(max_length=64, null=True, blank=True)),
  114. ('is_signature_locked', models.BooleanField(default=False)),
  115. ('signature_lock_user_message', models.TextField(null=True, blank=True)),
  116. ('signature_lock_staff_message', models.TextField(null=True, blank=True)),
  117. ('following', models.PositiveIntegerField(default=0)),
  118. ('followers', models.PositiveIntegerField(default=0)),
  119. ('limits_private_thread_invites_to', models.PositiveIntegerField(default=0)),
  120. ('unread_private_threads', models.PositiveIntegerField(default=0)),
  121. ('sync_unread_private_threads', models.BooleanField(default=False)),
  122. ('subscribe_to_started_threads', models.PositiveIntegerField(default=0)),
  123. ('subscribe_to_replied_threads', models.PositiveIntegerField(default=0)),
  124. ('threads', models.PositiveIntegerField(default=0)),
  125. ('posts', models.PositiveIntegerField(default=0, db_index=True)),
  126. ('last_posted_on', models.DateTimeField(null=True, blank=True)),
  127. ],
  128. options={
  129. 'abstract': False,
  130. },
  131. bases=(models.Model, ),
  132. ),
  133. migrations.CreateModel(
  134. name='Online',
  135. fields=[
  136. ('current_ip', models.GenericIPAddressField()),
  137. ('last_click', models.DateTimeField(default=django.utils.timezone.now)),
  138. (
  139. 'user', models.OneToOneField(
  140. related_name='online_tracker',
  141. on_delete=django.db.models.deletion.CASCADE,
  142. primary_key=True,
  143. serialize=False,
  144. to=settings.AUTH_USER_MODEL
  145. )
  146. ),
  147. ],
  148. options={},
  149. bases=(models.Model, ),
  150. ),
  151. migrations.CreateModel(
  152. name='UsernameChange',
  153. fields=[
  154. (
  155. 'id', models.AutoField(
  156. verbose_name='ID', serialize=False, auto_created=True, primary_key=True
  157. )
  158. ),
  159. ('changed_by_username', models.CharField(max_length=30)),
  160. ('changed_on', models.DateTimeField(default=django.utils.timezone.now)),
  161. ('new_username', models.CharField(max_length=255)),
  162. ('old_username', models.CharField(max_length=255)),
  163. (
  164. 'changed_by', models.ForeignKey(
  165. related_name='user_renames',
  166. on_delete=django.db.models.deletion.SET_NULL,
  167. blank=True,
  168. to=settings.AUTH_USER_MODEL,
  169. null=True
  170. )
  171. ),
  172. (
  173. 'user', models.ForeignKey(
  174. related_name='namechanges',
  175. on_delete=django.db.models.deletion.CASCADE,
  176. to=settings.AUTH_USER_MODEL,
  177. )
  178. ),
  179. ],
  180. options={
  181. 'get_latest_by': 'changed_on',
  182. },
  183. bases=(models.Model, ),
  184. ),
  185. migrations.CreateModel(
  186. name='Rank',
  187. fields=[
  188. (
  189. 'id', models.AutoField(
  190. verbose_name='ID', serialize=False, auto_created=True, primary_key=True
  191. )
  192. ),
  193. ('name', models.CharField(max_length=255)),
  194. ('slug', models.CharField(unique=True, max_length=255)),
  195. ('description', models.TextField(null=True, blank=True)),
  196. ('title', models.CharField(max_length=255, null=True, blank=True)),
  197. ('css_class', models.CharField(max_length=255, null=True, blank=True)),
  198. ('is_default', models.BooleanField(default=False)),
  199. ('is_tab', models.BooleanField(default=False)),
  200. ('order', models.IntegerField(default=0)),
  201. ('roles', models.ManyToManyField(to='misago_acl.Role', null=True, blank=True)),
  202. ],
  203. options={
  204. 'get_latest_by': 'order',
  205. },
  206. bases=(models.Model, ),
  207. ),
  208. migrations.AddField(
  209. model_name='user',
  210. name='rank',
  211. field=models.ForeignKey(
  212. on_delete=django.db.models.deletion.PROTECT,
  213. to_field='id',
  214. blank=True,
  215. to='misago_users.Rank',
  216. null=True
  217. ),
  218. preserve_default=True,
  219. ),
  220. migrations.AddField(
  221. model_name='user',
  222. name='follows',
  223. field=models.ManyToManyField(related_name='followed_by', to=settings.AUTH_USER_MODEL),
  224. preserve_default=True,
  225. ),
  226. migrations.AddField(
  227. model_name='user',
  228. name='blocks',
  229. field=models.ManyToManyField(related_name='blocked_by', to=settings.AUTH_USER_MODEL),
  230. preserve_default=True,
  231. ),
  232. migrations.CreateModel(
  233. name='ActivityRanking',
  234. fields=[
  235. (
  236. 'id', models.AutoField(
  237. verbose_name='ID', serialize=False, auto_created=True, primary_key=True
  238. )
  239. ),
  240. (
  241. 'user', models.ForeignKey(
  242. related_name='+',
  243. on_delete=django.db.models.deletion.CASCADE,
  244. to=settings.AUTH_USER_MODEL,
  245. )
  246. ),
  247. ('score', models.PositiveIntegerField(default=0, db_index=True)),
  248. ],
  249. options={},
  250. bases=(models.Model, ),
  251. ),
  252. migrations.CreateModel(
  253. name='Avatar',
  254. fields=[
  255. (
  256. 'id', models.AutoField(
  257. auto_created=True, primary_key=True, serialize=False, verbose_name='ID'
  258. )
  259. ),
  260. (
  261. 'user', models.ForeignKey(
  262. on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
  263. )
  264. ),
  265. ('size', models.PositiveIntegerField(default=0)),
  266. (
  267. 'image', models.ImageField(
  268. max_length=255, upload_to=misago.users.avatars.store.upload_to
  269. )
  270. ),
  271. ],
  272. ),
  273. migrations.CreateModel(
  274. name='AvatarGallery',
  275. fields=[
  276. (
  277. 'id', models.AutoField(
  278. auto_created=True, primary_key=True, serialize=False, verbose_name='ID'
  279. )
  280. ),
  281. ('gallery', models.CharField(max_length=255)),
  282. (
  283. 'image', models.ImageField(
  284. max_length=255, upload_to=misago.users.avatars.store.upload_to
  285. )
  286. ),
  287. ],
  288. options={
  289. 'ordering': ['gallery', 'pk'],
  290. },
  291. ),
  292. migrations.CreateModel(
  293. name='Ban',
  294. fields=[
  295. (
  296. 'id', models.AutoField(
  297. verbose_name='ID', serialize=False, auto_created=True, primary_key=True
  298. )
  299. ),
  300. ('check_type', models.PositiveIntegerField(default=0, db_index=True)),
  301. ('banned_value', models.CharField(max_length=255, db_index=True)),
  302. ('user_message', models.TextField(null=True, blank=True)),
  303. ('staff_message', models.TextField(null=True, blank=True)),
  304. ('expires_on', models.DateTimeField(null=True, blank=True, db_index=True)),
  305. ('is_checked', models.BooleanField(default=True, db_index=True)),
  306. ],
  307. bases=(models.Model, ),
  308. ),
  309. migrations.CreateModel(
  310. name='BanCache',
  311. fields=[
  312. ('user_message', models.TextField(null=True, blank=True)),
  313. ('staff_message', models.TextField(null=True, blank=True)),
  314. ('bans_version', models.PositiveIntegerField(default=0)),
  315. ('expires_on', models.DateTimeField(null=True, blank=True)),
  316. (
  317. 'ban', models.ForeignKey(
  318. on_delete=django.db.models.deletion.SET_NULL,
  319. blank=True,
  320. to='misago_users.Ban',
  321. null=True
  322. )
  323. ),
  324. (
  325. 'user', models.OneToOneField(
  326. related_name='ban_cache',
  327. on_delete=django.db.models.deletion.CASCADE,
  328. primary_key=True,
  329. serialize=False,
  330. to=settings.AUTH_USER_MODEL
  331. )
  332. ),
  333. ],
  334. options={},
  335. bases=(models.Model, ),
  336. ),
  337. ]