• 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
0003_action.py 1.11 KB
# Generated by Django 2.1.7 on 2019-04-12 07:00

from django.db import migrations, models
import uuid


def add_default_actions(apps, schema_editor):
    from ..const import PERMS_ACTION_NAME_CHOICES
    action_model = apps.get_model('perms', 'Action')
    db_alias = schema_editor.connection.alias
    for action, _ in PERMS_ACTION_NAME_CHOICES:
        action_model.objects.using(db_alias).update_or_create(name=action)


class Migration(migrations.Migration):

    dependencies = [
        ('perms', '0002_auto_20171228_0025_squashed_0009_auto_20180903_1132'),
    ]

    operations = [
        migrations.CreateModel(
            name='Action',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
                ('name', models.CharField(choices=[('all', 'All'), ('connect', 'Connect'), ('upload_file', 'Upload file'), ('download_file', 'Download file')], max_length=128, unique=True, verbose_name='Name')),
            ],
            options={
                'verbose_name': 'Action',
            },
        ),
        migrations.RunPython(add_default_actions)
    ]