0003_default_roles.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. from django.db import migrations
  2. _ = lambda s: s
  3. def create_default_roles(apps, schema_editor):
  4. Role = apps.get_model("misago_acl", "Role")
  5. Role.objects.create(
  6. name=_("Member"),
  7. special_role="authenticated",
  8. permissions={
  9. # account
  10. "misago.users.permissions.account": {
  11. "name_changes_allowed": 2,
  12. "name_changes_expire": 180,
  13. "can_have_signature": 0,
  14. "allow_signature_links": 0,
  15. "allow_signature_images": 0,
  16. },
  17. # profiles
  18. "misago.users.permissions.profiles": {
  19. "can_browse_users_list": 1,
  20. "can_search_users": 1,
  21. "can_follow_users": 1,
  22. "can_be_blocked": 1,
  23. "can_see_users_name_history": 0,
  24. "can_see_users_emails": 0,
  25. "can_see_users_ips": 0,
  26. "can_see_hidden_users": 0,
  27. },
  28. # attachments
  29. "misago.threads.permissions.attachments": {
  30. "max_attachment_size": 4 * 1024,
  31. "can_download_other_users_attachments": True,
  32. },
  33. # polls
  34. "misago.threads.permissions.polls": {
  35. "can_start_polls": 1,
  36. "can_edit_polls": 1,
  37. },
  38. # search
  39. "misago.search.permissions": {"can_search": 1},
  40. },
  41. )
  42. Role.objects.create(
  43. name=_("Guest"),
  44. special_role="anonymous",
  45. permissions={
  46. # account
  47. "misago.users.permissions.account": {
  48. "name_changes_allowed": 0,
  49. "name_changes_expire": 0,
  50. "can_have_signature": 0,
  51. "allow_signature_links": 0,
  52. "allow_signature_images": 0,
  53. },
  54. # profiles
  55. "misago.users.permissions.profiles": {
  56. "can_browse_users_list": 1,
  57. "can_search_users": 1,
  58. "can_see_users_name_history": 0,
  59. "can_see_users_emails": 0,
  60. "can_see_users_ips": 0,
  61. "can_see_hidden_users": 0,
  62. },
  63. # attachments
  64. "misago.threads.permissions.attachments": {
  65. "can_download_other_users_attachments": True
  66. },
  67. # search
  68. "misago.search.permissions": {"can_search": 1},
  69. },
  70. )
  71. Role.objects.create(
  72. name=_("Moderator"),
  73. permissions={
  74. # account
  75. "misago.users.permissions.account": {
  76. "name_changes_allowed": 5,
  77. "name_changes_expire": 14,
  78. "can_have_signature": 1,
  79. "allow_signature_links": 1,
  80. "allow_signature_images": 0,
  81. },
  82. # profiles
  83. "misago.users.permissions.profiles": {
  84. "can_browse_users_list": 1,
  85. "can_search_users": 1,
  86. "can_be_blocked": 0,
  87. "can_see_users_name_history": 1,
  88. "can_see_ban_details": 1,
  89. "can_see_users_emails": 1,
  90. "can_see_users_ips": 1,
  91. "can_see_hidden_users": 1,
  92. },
  93. # attachments
  94. "misago.threads.permissions.attachments": {
  95. "max_attachment_size": 8 * 1024,
  96. "can_download_other_users_attachments": True,
  97. "can_delete_other_users_attachments": True,
  98. },
  99. # polls
  100. "misago.threads.permissions.polls": {
  101. "can_start_polls": 2,
  102. "can_edit_polls": 2,
  103. "can_delete_polls": 2,
  104. "can_always_see_poll_voters": 1,
  105. },
  106. # moderation
  107. "misago.threads.permissions.threads": {
  108. "can_see_unapproved_content_lists": True,
  109. "can_see_reported_content_lists": True,
  110. "can_omit_flood_protection": True,
  111. },
  112. "misago.users.permissions.moderation": {
  113. "can_warn_users": 1,
  114. "can_moderate_avatars": 1,
  115. "can_moderate_signatures": 1,
  116. "can_moderate_profile_details": 1,
  117. },
  118. # delete users
  119. "misago.users.permissions.delete": {
  120. "can_delete_users_newer_than": 0,
  121. "can_delete_users_with_less_posts_than": 0,
  122. },
  123. },
  124. )
  125. Role.objects.create(
  126. name=_("Renaming users"),
  127. permissions={
  128. # rename users
  129. "misago.users.permissions.moderation": {"can_rename_users": 1}
  130. },
  131. )
  132. Role.objects.create(
  133. name=_("Banning users"),
  134. permissions={
  135. # ban users
  136. "misago.users.permissions.profiles": {"can_see_ban_details": 1},
  137. "misago.users.permissions.moderation": {
  138. "can_ban_users": 1,
  139. "max_ban_length": 14,
  140. "can_lift_bans": 1,
  141. "max_lifted_ban_length": 14,
  142. },
  143. },
  144. )
  145. Role.objects.create(
  146. name=_("Deleting users"),
  147. permissions={
  148. # delete users
  149. "misago.users.permissions.delete": {
  150. "can_delete_users_newer_than": 3,
  151. "can_delete_users_with_less_posts_than": 7,
  152. }
  153. },
  154. )
  155. Role.objects.create(
  156. name=_("Can't be blocked"),
  157. permissions={
  158. # profiles
  159. "misago.users.permissions.profiles": {"can_be_blocked": 0}
  160. },
  161. )
  162. Role.objects.create(
  163. name=_("Private threads"),
  164. permissions={
  165. # private threads
  166. "misago.threads.permissions.privatethreads": {
  167. "can_use_private_threads": 1,
  168. "can_start_private_threads": 1,
  169. "max_private_thread_participants": 3,
  170. "can_add_everyone_to_private_threads": 0,
  171. "can_report_private_threads": 1,
  172. "can_moderate_private_threads": 0,
  173. }
  174. },
  175. )
  176. Role.objects.create(
  177. name=_("Private threads moderator"),
  178. permissions={
  179. # private threads
  180. "misago.threads.permissions.privatethreads": {
  181. "can_use_private_threads": 1,
  182. "can_start_private_threads": 1,
  183. "max_private_thread_participants": 15,
  184. "can_add_everyone_to_private_threads": 1,
  185. "can_report_private_threads": 1,
  186. "can_moderate_private_threads": 1,
  187. }
  188. },
  189. )
  190. class Migration(migrations.Migration):
  191. dependencies = [("misago_acl", "0002_acl_version_tracker")]
  192. operations = [migrations.RunPython(create_default_roles)]