# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import migrations, models from django.utils.translation import ugettext as _ def create_default_categories_roles(apps, schema_editor): """ Crete roles """ CategoryRole = apps.get_model('misago_categories', 'CategoryRole') see_only = 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 }, } ) reply_only = 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 }, } ) standard_with_polls = 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), ]