# -*- coding:utf-8 -*- from flask import request from api.lib.decorator import args_required from api.lib.perm.acl.permission import PermissionCRUD from api.lib.utils import handle_arg_list from api.resource import APIView class ResourcePermissionView(APIView): url_prefix = ("/resources//permissions", "/resource_groups//permissions") def get(self, resource_id=None, group_id=None): return self.jsonify(PermissionCRUD.get_all(resource_id, group_id)) class RolePermissionGrantView(APIView): url_prefix = ('/roles//resources//grant', '/roles//resource_groups//grant') @args_required('perms') def post(self, rid, resource_id=None, group_id=None): perms = handle_arg_list(request.values.get("perms")) PermissionCRUD.grant(rid, perms, resource_id=resource_id, group_id=group_id) return self.jsonify(rid=rid, resource_id=resource_id, group_id=group_id, perms=perms) class RolePermissionRevokeView(APIView): url_prefix = ('/roles//resources//revoke', '/roles//resource_groups//revoke') @args_required('perms') def post(self, rid, resource_id=None, group_id=None): perms = handle_arg_list(request.values.get("perms")) PermissionCRUD.revoke(rid, perms, resource_id=resource_id, group_id=group_id) return self.jsonify(rid=rid, resource_id=resource_id, group_id=group_id, perms=perms)