0003_categories_roles.py 4.6 KB

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