123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- from django.db import migrations
- _ = lambda s: s
- def create_default_categories_roles(apps, schema_editor):
- CategoryRole = apps.get_model("misago_categories", "CategoryRole")
- CategoryRole.objects.create(
- name=_("See only"),
- permissions={
- # categories perms
- "misago.categories.permissions": {"can_see": 1, "can_browse": 0}
- },
- )
- read_only = CategoryRole.objects.create(
- name=_("Read only"),
- permissions={
- # categories perms
- "misago.categories.permissions": {"can_see": 1, "can_browse": 1},
- # threads perms
- "misago.threads.permissions.threads": {
- "can_see_all_threads": 1,
- "can_see_posts_likes": 1,
- "can_download_other_users_attachments": 1,
- "can_like_posts": 1,
- },
- },
- )
- CategoryRole.objects.create(
- name=_("Reply to threads"),
- permissions={
- # categories perms
- "misago.categories.permissions": {"can_see": 1, "can_browse": 1},
- # threads perms
- "misago.threads.permissions.threads": {
- "can_see_all_threads": 1,
- "can_reply_threads": 1,
- "can_edit_posts": 1,
- "can_download_other_users_attachments": 1,
- "max_attachment_size": 500,
- "can_see_posts_likes": 2,
- "can_like_posts": 1,
- },
- },
- )
- standard = CategoryRole.objects.create(
- name=_("Start and reply threads"),
- permissions={
- # categories perms
- "misago.categories.permissions": {"can_see": 1, "can_browse": 1},
- # threads perms
- "misago.threads.permissions.threads": {
- "can_see_all_threads": 1,
- "can_start_threads": 1,
- "can_reply_threads": 1,
- "can_edit_threads": 1,
- "can_edit_posts": 1,
- "can_download_other_users_attachments": 1,
- "max_attachment_size": 500,
- "can_see_posts_likes": 2,
- "can_like_posts": 1,
- },
- },
- )
- moderator = CategoryRole.objects.create(
- name=_("Moderator"),
- permissions={
- # categories perms
- "misago.categories.permissions": {"can_see": 1, "can_browse": 1},
- # threads perms
- "misago.threads.permissions.threads": {
- "can_see_all_threads": 1,
- "can_start_threads": 1,
- "can_reply_threads": 1,
- "can_edit_threads": 2,
- "can_edit_posts": 2,
- "can_hide_own_threads": 2,
- "can_hide_own_posts": 2,
- "thread_edit_time": 0,
- "post_edit_time": 0,
- "can_hide_threads": 2,
- "can_hide_posts": 2,
- "can_protect_posts": 1,
- "can_move_posts": 1,
- "can_merge_posts": 1,
- "can_announce_threads": 1,
- "can_pin_threads": 2,
- "can_close_threads": 1,
- "can_move_threads": 1,
- "can_merge_threads": 1,
- "can_approve_content": 1,
- "can_download_other_users_attachments": 1,
- "max_attachment_size": 2500,
- "can_delete_other_users_attachments": 1,
- "can_see_posts_likes": 2,
- "can_like_posts": 1,
- "can_report_content": 1,
- "can_see_reports": 1,
- "can_hide_events": 2,
- },
- },
- )
- # assign category roles to roles
- Category = apps.get_model("misago_categories", "Category")
- Role = apps.get_model("misago_acl", "Role")
- RoleCategoryACL = apps.get_model("misago_categories", "RoleCategoryACL")
- category = Category.objects.get(tree_id=1, level=1)
- RoleCategoryACL.objects.create(
- role=Role.objects.get(name=_("Moderator")),
- category=category,
- category_role=moderator,
- )
- RoleCategoryACL.objects.create(
- role=Role.objects.get(special_role="authenticated"),
- category=category,
- category_role=standard,
- )
- RoleCategoryACL.objects.create(
- role=Role.objects.get(special_role="anonymous"),
- category=category,
- category_role=read_only,
- )
- class Migration(migrations.Migration):
- dependencies = [
- ("misago_categories", "0002_default_categories"),
- ("misago_acl", "0003_default_roles"),
- ]
- operations = [migrations.RunPython(create_default_categories_roles)]
|