0003_categories_roles.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. from django.db import migrations
  4. _ = lambda s: s
  5. def create_default_categories_roles(apps, schema_editor):
  6. CategoryRole = apps.get_model('misago_categories', 'CategoryRole')
  7. CategoryRole.objects.create(
  8. name=_("See only"),
  9. permissions={
  10. # categories perms
  11. 'misago.categories.permissions': {
  12. 'can_see': 1,
  13. 'can_browse': 0
  14. },
  15. }
  16. )
  17. read_only = CategoryRole.objects.create(
  18. name=_("Read only"),
  19. permissions={
  20. # categories perms
  21. 'misago.categories.permissions': {
  22. 'can_see': 1,
  23. 'can_browse': 1
  24. },
  25. # threads perms
  26. 'misago.threads.permissions.threads': {
  27. 'can_see_all_threads': 1,
  28. 'can_see_posts_likes': 1,
  29. 'can_download_other_users_attachments': 1,
  30. 'can_like_posts': 1
  31. },
  32. }
  33. )
  34. CategoryRole.objects.create(
  35. name=_("Reply to threads"),
  36. permissions={
  37. # categories perms
  38. 'misago.categories.permissions': {
  39. 'can_see': 1,
  40. 'can_browse': 1
  41. },
  42. # threads perms
  43. 'misago.threads.permissions.threads': {
  44. 'can_see_all_threads': 1,
  45. 'can_reply_threads': 1,
  46. 'can_edit_posts': 1,
  47. 'can_download_other_users_attachments': 1,
  48. 'max_attachment_size': 500,
  49. 'can_see_posts_likes': 2,
  50. 'can_like_posts': 1
  51. },
  52. }
  53. )
  54. standard = CategoryRole.objects.create(
  55. name=_("Start and reply threads"),
  56. permissions={
  57. # categories perms
  58. 'misago.categories.permissions': {
  59. 'can_see': 1,
  60. 'can_browse': 1
  61. },
  62. # threads perms
  63. 'misago.threads.permissions.threads': {
  64. 'can_see_all_threads': 1,
  65. 'can_start_threads': 1,
  66. 'can_reply_threads': 1,
  67. 'can_edit_threads': 1,
  68. 'can_edit_posts': 1,
  69. 'can_download_other_users_attachments': 1,
  70. 'max_attachment_size': 500,
  71. 'can_see_posts_likes': 2,
  72. 'can_like_posts': 1
  73. },
  74. }
  75. )
  76. CategoryRole.objects.create(
  77. name=_("Start and reply threads, make polls"),
  78. permissions={
  79. # categories perms
  80. 'misago.categories.permissions': {
  81. 'can_see': 1,
  82. 'can_browse': 1,
  83. },
  84. # threads perms
  85. 'misago.threads.permissions.threads': {
  86. 'can_see_all_threads': 1,
  87. 'can_start_threads': 1,
  88. 'can_reply_threads': 1,
  89. 'can_edit_threads': 1,
  90. 'can_edit_posts': 1,
  91. 'can_download_other_users_attachments': 1,
  92. 'max_attachment_size': 500,
  93. 'can_see_posts_likes': 2,
  94. 'can_like_posts': 1
  95. },
  96. }
  97. )
  98. moderator = CategoryRole.objects.create(
  99. name=_("Moderator"),
  100. permissions={
  101. # categories perms
  102. 'misago.categories.permissions': {
  103. 'can_see': 1,
  104. 'can_browse': 1
  105. },
  106. # threads perms
  107. 'misago.threads.permissions.threads': {
  108. 'can_see_all_threads': 1,
  109. 'can_start_threads': 1,
  110. 'can_reply_threads': 1,
  111. 'can_edit_threads': 2,
  112. 'can_edit_posts': 2,
  113. 'can_hide_own_threads': 2,
  114. 'can_hide_own_posts': 2,
  115. 'thread_edit_time': 0,
  116. 'post_edit_time': 0,
  117. 'can_hide_threads': 2,
  118. 'can_hide_posts': 2,
  119. 'can_protect_posts': 1,
  120. 'can_move_posts': 1,
  121. 'can_merge_posts': 1,
  122. 'can_announce_threads': 1,
  123. 'can_pin_threads': 2,
  124. 'can_close_threads': 1,
  125. 'can_move_threads': 1,
  126. 'can_merge_threads': 1,
  127. 'can_approve_content': 1,
  128. 'can_download_other_users_attachments': 1,
  129. 'max_attachment_size': 2500,
  130. 'can_delete_other_users_attachments': 1,
  131. 'can_see_posts_likes': 2,
  132. 'can_like_posts': 1,
  133. 'can_report_content': 1,
  134. 'can_see_reports': 1,
  135. 'can_hide_events': 2
  136. },
  137. }
  138. )
  139. # assign category roles to roles
  140. Category = apps.get_model('misago_categories', 'Category')
  141. Role = apps.get_model('misago_acl', 'Role')
  142. RoleCategoryACL = apps.get_model('misago_categories', 'RoleCategoryACL')
  143. category = Category.objects.get(tree_id=1, level=1)
  144. RoleCategoryACL.objects.create(
  145. role=Role.objects.get(name=_("Moderator")), category=category, category_role=moderator
  146. )
  147. RoleCategoryACL.objects.create(
  148. role=Role.objects.get(special_role='authenticated'),
  149. category=category,
  150. category_role=standard
  151. )
  152. RoleCategoryACL.objects.create(
  153. role=Role.objects.get(special_role='anonymous'),
  154. category=category,
  155. category_role=read_only
  156. )
  157. class Migration(migrations.Migration):
  158. dependencies = [
  159. ('misago_categories', '0002_default_categories'),
  160. ('misago_acl', '0003_default_roles'),
  161. ]
  162. operations = [
  163. migrations.RunPython(create_default_categories_roles),
  164. ]