| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # coding=utf-8
- """
- @project: MaxKB
- @Author:虎虎
- @file: resource_mapping.py
- @date:2025/12/25 15:28
- @desc:
- """
- from django.utils.translation import gettext_lazy as _
- from drf_spectacular.utils import extend_schema
- from rest_framework.request import Request
- from rest_framework.views import APIView
- from common import result
- from common.auth import TokenAuth
- from common.auth.authentication import has_permissions
- from common.constants.permission_constants import Permission, Group, Operate, RoleConstants, ViewPermission, \
- CompareConstants
- from system_manage.api.resource_mapping import ResourceMappingAPI
- from system_manage.serializers.resource_mapping_serializers import ResourceMappingSerializer
- class ResourceMappingView(APIView):
- authentication_classes = [TokenAuth]
- @extend_schema(
- methods=['GET'],
- description=_('Retrieve the pagination list of resource relationships'),
- operation_id=_('Retrieve the pagination list of resource relationships'), # type: ignore
- responses=ResourceMappingAPI.get_response(),
- parameters=ResourceMappingAPI.get_parameters(),
- tags=[_('Resources mapping')] # type: ignore
- )
- @has_permissions(
- lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
- operate=Operate.RELATE_VIEW,
- resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"),
- lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
- operate=Operate.RELATE_VIEW,
- resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource')}/{kwargs.get('resource_id')}"),
- ViewPermission([RoleConstants.USER.get_workspace_role()],
- [lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
- operate=Operate.SELF,
- resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource')}/{kwargs.get('resource_id')}")],
- CompareConstants.AND),
- RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
- def get(self, request: Request, workspace_id: str, resource: str, resource_id: str, current_page, page_size):
- return result.success(ResourceMappingSerializer({
- 'resource': resource,
- 'resource_id': resource_id,
- 'resource_name': request.query_params.get('resource_name'),
- 'user_name': request.query_params.get('user_name'),
- 'source_type': request.query_params.getlist('source_type[]'),
- }).page(current_page, page_size))
|