mirror of
				https://github.com/veops/cmdb.git
				synced 2025-10-31 19:39:24 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding:utf-8 -*-
 | |
| 
 | |
| from flask import current_app
 | |
| from flask import request
 | |
| 
 | |
| from api.lib.decorator import args_required
 | |
| from api.lib.perm.acl import validate_app
 | |
| from api.lib.perm.acl.role import RoleCRUD
 | |
| from api.lib.perm.acl.role import RoleRelationCRUD
 | |
| from api.lib.utils import get_page
 | |
| from api.lib.utils import get_page_size
 | |
| from api.resource import APIView
 | |
| 
 | |
| 
 | |
| class RoleView(APIView):
 | |
|     url_prefix = ("/roles", "/roles/<int:rid>")
 | |
| 
 | |
|     @args_required('app_id')
 | |
|     @validate_app
 | |
|     def get(self):
 | |
|         page = get_page(request.values.get("page", 1))
 | |
|         page_size = get_page_size(request.values.get("page_size"))
 | |
|         q = request.values.get('q')
 | |
|         app_id = request.values.get('app_id')
 | |
|         user_role = request.values.get('user_role', True)
 | |
|         user_role = True if user_role in current_app.config.get("BOOL_TRUE") else False
 | |
| 
 | |
|         numfound, roles = RoleCRUD.search(q, app_id, page, page_size, user_role)
 | |
| 
 | |
|         id2parents = RoleRelationCRUD.get_parents([i.id for i in roles])
 | |
| 
 | |
|         return self.jsonify(numfound=numfound,
 | |
|                             page=page,
 | |
|                             page_size=page_size,
 | |
|                             id2parents=id2parents,
 | |
|                             roles=[i.to_dict() for i in roles])
 | |
| 
 | |
|     @args_required('name')
 | |
|     @args_required('app_id')
 | |
|     @validate_app
 | |
|     def post(self):
 | |
|         name = request.values.get('name')
 | |
|         app_id = request.values.get('app_id')
 | |
|         is_app_admin = request.values.get('is_app_admin', False)
 | |
| 
 | |
|         role = RoleCRUD.add_role(name, app_id, is_app_admin=is_app_admin)
 | |
| 
 | |
|         return self.jsonify(role.to_dict())
 | |
| 
 | |
|     def put(self, rid):
 | |
|         role = RoleCRUD.update_role(rid, **request.values)
 | |
| 
 | |
|         return self.jsonify(role.to_dict())
 | |
| 
 | |
|     def delete(self, rid):
 | |
|         RoleCRUD.delete_role(rid)
 | |
| 
 | |
|         return self.jsonify(rid=rid)
 | |
| 
 | |
| 
 | |
| class RoleRelationView(APIView):
 | |
|     url_prefix = "/roles/<int:child_id>/parents"
 | |
| 
 | |
|     @args_required('parent_id')
 | |
|     def post(self, child_id):
 | |
|         parent_id = request.values.get('parent_id')
 | |
|         res = RoleRelationCRUD.add(parent_id, child_id)
 | |
| 
 | |
|         return self.jsonify(res.to_dict())
 | |
| 
 | |
|     @args_required('parent_id')
 | |
|     def delete(self, child_id):
 | |
|         parent_id = request.values.get('parent_id')
 | |
| 
 | |
|         RoleRelationCRUD.delete2(parent_id, child_id)
 | |
| 
 | |
|         return self.jsonify(parent_id=parent_id, child_id=child_id)
 |