0003_categories_roles.py 4.8 KB

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