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)]