• BaiJiangJie's avatar
    [Feature] 授权规则添加 actions 选项,控制用户对资产的操作行为 (#2610) · f235e201
    BaiJiangJie authored
    * [Feature] 1. perms actions - 添加 Action Model
    
    * [Feature] 2. perms actions - 添加 Action API
    
    * [Feature] 3. perms actions - 授权规则: 添加actions字段
    
    * [Feature] 4. perms actions - 授权规则创建页面: 设置 actions 默认 all
    
    * [Feature] 5. perms actions - 资产授权工具: 动态给system_user设置actions属性; 修改授权相关的API-serializer类: 添加actions字段值
    
    * [Feature] 6. perms actions - 更新API(用户使用系统用户连接资产时权限校验): 添加actions校验
    
    * [Feature] 7. perms actions - 迁移文件中为已经存在的perms添加默认的action
    
    * [Feature] 8. perms actions - 创建授权规则时设置默认action(如果actions字段值为空)
    
    * [Feature] 9. check actions - 修改校验用户资产权限API逻辑(添加actions校验)
    
    * [Feature] 10. check actions - 修改注释
    
    * [Feature] 11. check actions - 添加API: 获取用户指定资产和系统用户被授权的actions
    
    * [Feature] 12. check actions - 添加翻译信息
    f235e201
0004_assetpermission_actions.py 953 Bytes
# Generated by Django 2.1.7 on 2019-04-12 09:17

from django.db import migrations, models


def set_default_action_to_existing_perms(apps, schema_editor):
    from orgs.utils import set_to_root_org
    from ..models import Action
    set_to_root_org()
    perm_model = apps.get_model('perms', 'AssetPermission')
    db_alias = schema_editor.connection.alias
    perms = perm_model.objects.using(db_alias).all()
    default_action = Action.get_action_all()
    for perm in perms:
        perm.actions.add(default_action.id)


class Migration(migrations.Migration):

    dependencies = [
        ('perms', '0003_action'),
    ]

    operations = [
        migrations.AddField(
            model_name='assetpermission',
            name='actions',
            field=models.ManyToManyField(blank=True, related_name='permissions', to='perms.Action', verbose_name='Action'),
        ),
        migrations.RunPython(set_default_action_to_existing_perms)
    ]