# -*- coding: utf-8 -*- from __future__ import unicode_literals 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 }, } ) CategoryRole.objects.create( name=_("Start and reply threads, make polls"), 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), ]