mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 10:12:51 +00:00
feat: enhance permission checks by incorporating role constants for workspace management
This commit is contained in:
parent
874dd34cba
commit
ba0dcf6b1b
|
|
@ -6,7 +6,7 @@ from rest_framework.views import APIView
|
|||
|
||||
from common.auth import TokenAuth
|
||||
from common.auth.authentication import has_permissions
|
||||
from common.constants.permission_constants import Permission, Group, Operate
|
||||
from common.constants.permission_constants import Permission, Group, Operate, RoleConstants
|
||||
from common.log.log import log
|
||||
from common.result import result
|
||||
from folders.api.folder import FolderCreateAPI, FolderEditAPI, FolderReadAPI, FolderTreeReadAPI, FolderDeleteAPI
|
||||
|
|
@ -36,12 +36,16 @@ class FolderView(APIView):
|
|||
responses=FolderCreateAPI.get_response(),
|
||||
tags=[_('Folder')] # type: ignore
|
||||
)
|
||||
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.CREATE,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
|
||||
@log(menu='folder', operate='Create folder',
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name')},
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.CREATE,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='folder', operate='Create folder',
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name')},
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, source: str):
|
||||
return result.success(FolderSerializer.Create(
|
||||
data={'user_id': request.user.id,
|
||||
|
|
@ -58,8 +62,11 @@ class FolderView(APIView):
|
|||
responses=FolderTreeReadAPI.get_response(),
|
||||
tags=[_('Folder')] # type: ignore
|
||||
)
|
||||
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.READ,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
|
||||
@has_permissions(
|
||||
lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.READ,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, source: str):
|
||||
return result.success(FolderTreeSerializer(
|
||||
data={'workspace_id': workspace_id, 'source': source}
|
||||
|
|
@ -78,12 +85,16 @@ class FolderView(APIView):
|
|||
responses=FolderEditAPI.get_response(),
|
||||
tags=[_('Folder')] # type: ignore
|
||||
)
|
||||
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
|
||||
@log(menu='folder', operate='Edit folder',
|
||||
get_operation_object=lambda r, k: get_folder_operation_object(k.get('folder_id'), k.get('source')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='folder', operate='Edit folder',
|
||||
get_operation_object=lambda r, k: get_folder_operation_object(k.get('folder_id'), k.get('source')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, source: str, folder_id: str):
|
||||
return result.success(FolderSerializer.Operate(
|
||||
data={'id': folder_id, 'workspace_id': workspace_id, 'source': source}
|
||||
|
|
@ -98,8 +109,11 @@ class FolderView(APIView):
|
|||
responses=FolderReadAPI.get_response(),
|
||||
tags=[_('Folder')] # type: ignore
|
||||
)
|
||||
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.READ,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
|
||||
@has_permissions(
|
||||
lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.READ,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, source: str, folder_id: str):
|
||||
return result.success(FolderSerializer.Operate(
|
||||
data={'id': folder_id, 'workspace_id': workspace_id, 'source': source}
|
||||
|
|
@ -114,12 +128,16 @@ class FolderView(APIView):
|
|||
responses=FolderDeleteAPI.get_response(),
|
||||
tags=[_('Folder')] # type: ignore
|
||||
)
|
||||
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.DELETE,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
|
||||
@log(menu='folder', operate='Delete folder',
|
||||
get_operation_object=lambda r, k: get_folder_operation_object(k.get('folder_id'), k.get('source')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.DELETE,
|
||||
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='folder', operate='Delete folder',
|
||||
get_operation_object=lambda r, k: get_folder_operation_object(k.get('folder_id'), k.get('source')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, source: str, folder_id: str):
|
||||
return result.success(FolderSerializer.Operate(
|
||||
data={'id': folder_id, 'workspace_id': workspace_id, 'source': source}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ from rest_framework.views import APIView
|
|||
|
||||
from common.auth import TokenAuth
|
||||
from common.auth.authentication import has_permissions
|
||||
from common.constants.permission_constants import PermissionConstants
|
||||
from common.constants.permission_constants import PermissionConstants, RoleConstants
|
||||
from common.log.log import log
|
||||
from common.result import result
|
||||
from knowledge.api.document import DocumentSplitAPI, DocumentBatchAPI, DocumentBatchCreateAPI, DocumentCreateAPI, \
|
||||
|
|
@ -33,7 +33,10 @@ class DocumentView(APIView):
|
|||
responses=DocumentCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(menu='document', operate="Create document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
|
|
@ -53,7 +56,10 @@ class DocumentView(APIView):
|
|||
responses=DocumentTreeReadAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Query(
|
||||
data={
|
||||
|
|
@ -77,7 +83,10 @@ class DocumentView(APIView):
|
|||
responses=DocumentReadAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
operate = DocumentSerializers.Operate(data={
|
||||
'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id
|
||||
|
|
@ -94,13 +103,17 @@ class DocumentView(APIView):
|
|||
responses=DocumentEditAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Modify document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Modify document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(DocumentSerializers.Operate(data={
|
||||
'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id
|
||||
|
|
@ -114,13 +127,17 @@ class DocumentView(APIView):
|
|||
responses=DocumentDeleteAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_DELETE.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Delete document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_DELETE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Delete document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
operate = DocumentSerializers.Operate(data={
|
||||
'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id
|
||||
|
|
@ -145,6 +162,7 @@ class DocumentView(APIView):
|
|||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
split_data = {'file': request.FILES.getlist('file')}
|
||||
|
|
@ -190,12 +208,17 @@ class DocumentView(APIView):
|
|||
responses=BatchEditHitHandlingAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Modify document hit processing methods in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Modify document hit processing methods in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(
|
||||
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -214,12 +237,17 @@ class DocumentView(APIView):
|
|||
responses=SyncWebAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_SYNC.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Synchronize web site types",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_SYNC.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Synchronize web site types",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(DocumentSerializers.Sync(
|
||||
data={'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -238,13 +266,17 @@ class DocumentView(APIView):
|
|||
responses=RefreshAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_VECTOR.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Refresh document vector library",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_VECTOR.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Refresh document vector library",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(DocumentSerializers.Operate(
|
||||
data={'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -262,12 +294,17 @@ class DocumentView(APIView):
|
|||
responses=CancelTaskAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Cancel task",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Cancel task",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(DocumentSerializers.Operate(
|
||||
data={'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -285,13 +322,17 @@ class DocumentView(APIView):
|
|||
responses=BatchCancelTaskAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Cancel tasks in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Cancel tasks in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(data={
|
||||
'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -313,13 +354,15 @@ class DocumentView(APIView):
|
|||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Create documents in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([document.get("name") for document in r.data])}]',
|
||||
'document_list': r.data}), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@log(menu='document', operate="Create documents in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([document.get("name") for document in r.data])}]',
|
||||
'document_list': r.data}), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(
|
||||
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -341,13 +384,15 @@ class DocumentView(APIView):
|
|||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_SYNC.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Batch sync documents",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@log(menu='document', operate="Batch sync documents",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(
|
||||
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -369,12 +414,15 @@ class DocumentView(APIView):
|
|||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_DELETE.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Delete documents in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@log(menu='document', operate="Delete documents in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(
|
||||
data={'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
|
||||
|
|
@ -395,13 +443,15 @@ class DocumentView(APIView):
|
|||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_VECTOR.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Batch refresh document vector library",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@log(menu='document', operate="Batch refresh document vector library",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(
|
||||
DocumentSerializers.Batch(
|
||||
|
|
@ -424,13 +474,15 @@ class DocumentView(APIView):
|
|||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_GENERATE.get_workspace_knowledge_permission(),
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Batch generate related documents",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('document_id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@log(menu='document', operate="Batch generate related documents",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('document_id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.BatchGenerateRelated(
|
||||
data={'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
|
||||
|
|
@ -448,7 +500,10 @@ class DocumentView(APIView):
|
|||
responses=DocumentTreeReadAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, current_page: int, page_size: int):
|
||||
return result.success(DocumentSerializers.Query(
|
||||
data={
|
||||
|
|
@ -471,13 +526,17 @@ class DocumentView(APIView):
|
|||
responses=DocumentExportAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EXPORT.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Export document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EXPORT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Export document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return DocumentSerializers.Operate(data={
|
||||
'workspace_id': workspace_id, 'document_id': document_id, 'knowledge_id': knowledge_id
|
||||
|
|
@ -493,13 +552,17 @@ class DocumentView(APIView):
|
|||
responses=DocumentExportAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EXPORT.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Export Zip document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EXPORT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Export Zip document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return DocumentSerializers.Operate(data={
|
||||
'workspace_id': workspace_id, 'document_id': document_id, 'knowledge_id': knowledge_id
|
||||
|
|
@ -516,7 +579,9 @@ class DocumentView(APIView):
|
|||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE.get_workspace_knowledge_permission())
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return DocumentSerializers.Operate(data={
|
||||
'workspace_id': workspace_id, 'document_id': document_id, 'knowledge_id': knowledge_id
|
||||
|
|
@ -533,13 +598,17 @@ class DocumentView(APIView):
|
|||
responses=DocumentMigrateAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_MIGRATE.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Migrate documents in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data)
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_MIGRATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Migrate documents in batches",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data)
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id, knowledge_id: str, target_knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Migrate(
|
||||
data={
|
||||
|
|
@ -563,13 +632,18 @@ class WebDocumentView(APIView):
|
|||
responses=WebDocumentCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Create Web site documents",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([url for url in r.data.get("source_url_list", [])])}]',
|
||||
'document_list': [{'name': url} for url in r.data.get("source_url_list", [])]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Create Web site documents",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([url for url in r.data.get("source_url_list", [])])}]',
|
||||
'document_list': [{'name': url} for url in r.data.get("source_url_list", [])]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Create(data={
|
||||
'knowledge_id': knowledge_id, 'workspace_id': workspace_id
|
||||
|
|
@ -589,13 +663,18 @@ class QaDocumentView(APIView):
|
|||
responses=QaDocumentCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Import QA and create documentation",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]',
|
||||
'document_list': [{'name': file.name} for file in r.FILES.getlist("file")]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Import QA and create documentation",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]',
|
||||
'document_list': [{'name': file.name} for file in r.FILES.getlist("file")]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Create(data={
|
||||
'knowledge_id': knowledge_id, 'workspace_id': workspace_id
|
||||
|
|
@ -615,13 +694,18 @@ class TableDocumentView(APIView):
|
|||
responses=TableDocumentCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate="Import tables and create documents",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]',
|
||||
'document_list': [{'name': file.name} for file in r.FILES.getlist("file")]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate="Import tables and create documents",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]',
|
||||
'document_list': [{'name': file.name} for file in r.FILES.getlist("file")]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Create(
|
||||
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from rest_framework.views import APIView
|
|||
|
||||
from common.auth import TokenAuth
|
||||
from common.auth.authentication import has_permissions
|
||||
from common.constants.permission_constants import PermissionConstants
|
||||
from common.constants.permission_constants import PermissionConstants, RoleConstants
|
||||
from common.log.log import log
|
||||
from common.result import result
|
||||
from knowledge.api.knowledge import KnowledgeBaseCreateAPI, KnowledgeWebCreateAPI, KnowledgeTreeReadAPI, \
|
||||
|
|
@ -28,7 +28,10 @@ class KnowledgeView(APIView):
|
|||
responses=KnowledgeTreeReadAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_READ.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_READ.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str):
|
||||
return result.success(KnowledgeSerializer.Query(
|
||||
data={
|
||||
|
|
@ -53,10 +56,15 @@ class KnowledgeView(APIView):
|
|||
responses=KnowledgeEditAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='Knowledge Base', operate="Modify knowledge base information",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Modify knowledge base information",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
data={'user_id': request.user.id, 'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
|
||||
|
|
@ -72,10 +80,15 @@ class KnowledgeView(APIView):
|
|||
responses=KnowledgeBaseCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DELETE.get_workspace_knowledge_permission())
|
||||
@log(menu='Knowledge Base', operate="Delete knowledge base",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DELETE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Delete knowledge base",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
data={'user_id': request.user.id, 'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
|
||||
|
|
@ -90,7 +103,10 @@ class KnowledgeView(APIView):
|
|||
responses=KnowledgeReadAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
data={'user_id': request.user.id, 'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
|
||||
|
|
@ -108,7 +124,10 @@ class KnowledgeView(APIView):
|
|||
responses=KnowledgePageAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_READ.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_READ.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, current_page: int, page_size: int):
|
||||
return result.success(KnowledgeSerializer.Query(
|
||||
data={
|
||||
|
|
@ -133,10 +152,15 @@ class KnowledgeView(APIView):
|
|||
responses=SyncWebAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_SYNC.get_workspace_knowledge_permission())
|
||||
@log(menu='Knowledge Base', operate="Synchronize the knowledge base of the website",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_SYNC.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Synchronize the knowledge base of the website",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.SyncWeb(
|
||||
data={
|
||||
|
|
@ -160,7 +184,10 @@ class KnowledgeView(APIView):
|
|||
responses=HitTestAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.HitTest(
|
||||
data={
|
||||
|
|
@ -187,10 +214,15 @@ class KnowledgeView(APIView):
|
|||
responses=EmbeddingAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_VECTOR.get_workspace_knowledge_permission())
|
||||
@log(menu='Knowledge Base', operate='Re-vectorize',
|
||||
get_operation_object=lambda r, k: get_knowledge_operation_object(k.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_VECTOR.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Knowledge Base', operate='Re-vectorize',
|
||||
get_operation_object=lambda r, k: get_knowledge_operation_object(k.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id, 'user_id': request.user.id}
|
||||
|
|
@ -206,10 +238,15 @@ class KnowledgeView(APIView):
|
|||
responses=KnowledgeExportAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_EXPORT.get_workspace_knowledge_permission())
|
||||
@log(menu='Knowledge Base', operate="Export knowledge base",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_EXPORT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Export knowledge base",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return KnowledgeSerializer.Operate(data={
|
||||
'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'user_id': request.user.id
|
||||
|
|
@ -225,10 +262,15 @@ class KnowledgeView(APIView):
|
|||
responses=KnowledgeExportAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_EXPORT.get_workspace_knowledge_permission())
|
||||
@log(menu='Knowledge Base', operate="Export knowledge base containing images",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_EXPORT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Export knowledge base containing images",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return KnowledgeSerializer.Operate(data={
|
||||
'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'user_id': request.user.id
|
||||
|
|
@ -247,11 +289,15 @@ class KnowledgeView(APIView):
|
|||
responses=GenerateRelatedAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_GENERATE.get_workspace_knowledge_permission())
|
||||
@log(menu='document', operate='Generate related documents',
|
||||
get_operation_object=lambda r, k: get_knowledge_operation_object(k.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_GENERATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='document', operate='Generate related documents',
|
||||
get_operation_object=lambda r, k: get_knowledge_operation_object(k.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id, 'user_id': request.user.id}
|
||||
|
|
@ -269,7 +315,10 @@ class KnowledgeView(APIView):
|
|||
responses=GetModelAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str):
|
||||
return result.success(ModelSerializer.Query(
|
||||
data={
|
||||
|
|
@ -290,7 +339,10 @@ class KnowledgeView(APIView):
|
|||
responses=GetModelAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str):
|
||||
return result.success(ModelSerializer.Query(
|
||||
data={
|
||||
|
|
@ -313,10 +365,15 @@ class KnowledgeBaseView(APIView):
|
|||
responses=KnowledgeBaseCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
|
||||
@log(menu='knowledge Base', operate='Create base knowledge',
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name'), 'desc': r.data.get('desc')},
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='knowledge Base', operate='Create base knowledge',
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name'), 'desc': r.data.get('desc')},
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(KnowledgeSerializer.Create(
|
||||
data={'user_id': request.user.id, 'workspace_id': workspace_id}
|
||||
|
|
@ -336,15 +393,19 @@ class KnowledgeWebView(APIView):
|
|||
responses=KnowledgeWebCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
|
||||
@log(menu='Knowledge Base', operate="Create a web site knowledge base",
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name'), 'desc': r.data.get('desc'),
|
||||
'first_list': r.FILES.getlist('file'),
|
||||
'meta': {'source_url': r.data.get('source_url'),
|
||||
'selector': r.data.get('selector'),
|
||||
'embedding_model_id': r.data.get('embedding_model_id')}}
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Create a web site knowledge base",
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name'), 'desc': r.data.get('desc'),
|
||||
'first_list': r.FILES.getlist('file'),
|
||||
'meta': {'source_url': r.data.get('source_url'),
|
||||
'selector': r.data.get('selector'),
|
||||
'embedding_model_id': r.data.get('embedding_model_id')}}
|
||||
, workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
)
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(KnowledgeSerializer.Create(
|
||||
data={'user_id': request.user.id, 'workspace_id': workspace_id}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from rest_framework.views import Request
|
|||
|
||||
from common.auth import TokenAuth
|
||||
from common.auth.authentication import has_permissions
|
||||
from common.constants.permission_constants import PermissionConstants
|
||||
from common.constants.permission_constants import PermissionConstants, RoleConstants
|
||||
from common.log.log import log
|
||||
from common.result import result
|
||||
from common.utils.common import query_params_to_single_dict
|
||||
|
|
@ -28,7 +28,10 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphReadAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_READ.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
q = ParagraphSerializers.Query(
|
||||
data={
|
||||
|
|
@ -49,13 +52,17 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission())
|
||||
@log(menu='Paragraph', operate='Create Paragraph',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_CREATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Paragraph', operate='Create Paragraph',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(ParagraphSerializers.Create(
|
||||
data={'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'document_id': document_id}
|
||||
|
|
@ -74,7 +81,10 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphBatchDeleteAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(ParagraphSerializers.Batch(
|
||||
data={'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'document_id': document_id}
|
||||
|
|
@ -91,13 +101,17 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphMigrateAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_MIGRATE.get_workspace_knowledge_permission())
|
||||
@log(menu='Paragraph', operate='Migrate paragraphs in batches',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_MIGRATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Paragraph', operate='Migrate paragraphs in batches',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str,
|
||||
target_knowledge_id: str, target_document_id):
|
||||
return result.success(
|
||||
|
|
@ -123,13 +137,17 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphBatchGenerateRelatedAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_GENERATE.get_workspace_knowledge_permission())
|
||||
@log(menu='Paragraph', operate='Batch generate related',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_GENERATE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Paragraph', operate='Batch generate related',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(ParagraphSerializers.Batch(
|
||||
data={'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'document_id': document_id}
|
||||
|
|
@ -148,13 +166,17 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphEditAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='Paragraph', operate='Modify paragraph data',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Paragraph', operate='Modify paragraph data',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
|
||||
o = ParagraphSerializers.Operate(
|
||||
data={
|
||||
|
|
@ -176,7 +198,10 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphGetAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
|
||||
o = ParagraphSerializers.Operate(
|
||||
data={
|
||||
|
|
@ -197,13 +222,17 @@ class ParagraphView(APIView):
|
|||
parameters=ParagraphGetAPI.get_parameters(),
|
||||
responses=ParagraphGetAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')]) # type: ignore
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='Paragraph', operate='Delete paragraph',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Paragraph', operate='Delete paragraph',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
|
||||
o = ParagraphSerializers.Operate(
|
||||
data={
|
||||
|
|
@ -229,13 +258,17 @@ class ParagraphView(APIView):
|
|||
responses=ProblemCreateAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='Paragraph', operate='Add associated questions',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Paragraph', operate='Add associated questions',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
|
||||
return result.success(ParagraphSerializers.Problem(
|
||||
data={
|
||||
|
|
@ -255,7 +288,10 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphGetAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
|
||||
return result.success(ParagraphSerializers.Problem(
|
||||
data={
|
||||
|
|
@ -279,13 +315,17 @@ class ParagraphView(APIView):
|
|||
responses=UnAssociationAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='Paragraph', operate='Disassociation issue',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
)
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Paragraph', operate='Disassociation issue',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
)
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(ParagraphSerializers.Association(
|
||||
data={
|
||||
|
|
@ -310,13 +350,17 @@ class ParagraphView(APIView):
|
|||
responses=AssociationAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='Paragraph', operate='Related questions',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Paragraph', operate='Related questions',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(ParagraphSerializers.Association(
|
||||
data={
|
||||
|
|
@ -340,7 +384,10 @@ class ParagraphView(APIView):
|
|||
responses=ParagraphPageAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request,
|
||||
workspace_id: str, knowledge_id: str, document_id: str, current_page: int, page_size: int):
|
||||
d = ParagraphSerializers.Query(
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from rest_framework.views import Request
|
|||
|
||||
from common.auth import TokenAuth
|
||||
from common.auth.authentication import has_permissions
|
||||
from common.constants.permission_constants import PermissionConstants
|
||||
from common.constants.permission_constants import PermissionConstants, RoleConstants
|
||||
from common.log.log import log
|
||||
from common.result import result
|
||||
from common.utils.common import query_params_to_single_dict
|
||||
|
|
@ -27,7 +27,10 @@ class ProblemView(APIView):
|
|||
responses=ProblemReadAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph/Question')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_READ.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_PROBLEM_READ.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
q = ProblemSerializers.Query(
|
||||
data={
|
||||
|
|
@ -49,11 +52,15 @@ class ProblemView(APIView):
|
|||
request=ProblemBatchCreateAPI.get_request(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph/Question')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='problem', operate='Create question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='problem', operate='Create question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))
|
||||
, workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(ProblemSerializers.Create(
|
||||
data={'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
|
||||
|
|
@ -70,7 +77,10 @@ class ProblemView(APIView):
|
|||
responses=ProblemParagraphAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph/Question')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
|
||||
return result.success(ProblemSerializers.Operate(
|
||||
data={
|
||||
|
|
@ -93,10 +103,15 @@ class ProblemView(APIView):
|
|||
responses=BatchAssociationAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph/Question')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='problem', operate='Batch associated paragraphs',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='problem', operate='Batch associated paragraphs',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(ProblemSerializers.BatchOperate(
|
||||
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -115,10 +130,15 @@ class ProblemView(APIView):
|
|||
responses=BatchDeleteAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph/Question')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='problem', operate='Batch deletion issues',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='problem', operate='Batch deletion issues',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(ProblemSerializers.BatchOperate(
|
||||
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -136,10 +156,15 @@ class ProblemView(APIView):
|
|||
responses=ProblemDeleteAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph/Question')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_DELETE.get_workspace_knowledge_permission())
|
||||
@log(menu='problem', operate='Delete question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_PROBLEM_DELETE.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='problem', operate='Delete question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
|
||||
return result.success(ProblemSerializers.Operate(
|
||||
data={
|
||||
|
|
@ -160,10 +185,15 @@ class ProblemView(APIView):
|
|||
responses=ProblemEditAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph/Question')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
|
||||
@log(menu='problem', operate='Modify question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='problem', operate='Modify question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
|
||||
return result.success(ProblemSerializers.Operate(
|
||||
data={
|
||||
|
|
@ -185,7 +215,10 @@ class ProblemView(APIView):
|
|||
responses=ProblemPageAPI.get_response(),
|
||||
tags=[_('Knowledge Base/Documentation/Paragraph/Question')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_READ.get_workspace_knowledge_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.KNOWLEDGE_PROBLEM_READ.get_workspace_knowledge_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, current_page, page_size):
|
||||
d = ProblemSerializers.Query(
|
||||
data={
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from rest_framework.views import APIView
|
|||
|
||||
from common.auth import TokenAuth
|
||||
from common.auth.authentication import has_permissions
|
||||
from common.constants.permission_constants import PermissionConstants
|
||||
from common.constants.permission_constants import PermissionConstants, RoleConstants
|
||||
from common.log.log import log
|
||||
from common.result import result
|
||||
from tools.api.tool import ToolCreateAPI, ToolEditAPI, ToolReadAPI, ToolDeleteAPI, ToolTreeReadAPI, ToolDebugApi, \
|
||||
|
|
@ -38,9 +38,14 @@ class ToolView(APIView):
|
|||
responses=ToolCreateAPI.get_response(),
|
||||
tags=[_('Tool')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_CREATE.get_workspace_permission())
|
||||
@log(menu="Tool", operate="Create tool",
|
||||
get_operation_object=lambda r, k: r.data.get('name'), workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_CREATE.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu="Tool", operate="Create tool",
|
||||
get_operation_object=lambda r, k: r.data.get('name'), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(ToolSerializer.Create(
|
||||
data={'user_id': request.user.id, 'workspace_id': workspace_id}
|
||||
|
|
@ -55,7 +60,10 @@ class ToolView(APIView):
|
|||
responses=ToolTreeReadAPI.get_response(),
|
||||
tags=[_('Tool')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_READ.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_READ.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str):
|
||||
return result.success(ToolTreeSerializer(
|
||||
data={'workspace_id': workspace_id}
|
||||
|
|
@ -73,7 +81,10 @@ class ToolView(APIView):
|
|||
responses=ToolDebugApi.get_response(),
|
||||
tags=[_('Tool')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_DEBUG.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_DEBUG.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(ToolSerializer.Debug(
|
||||
data={'workspace_id': workspace_id, 'user_id': request.user.id}
|
||||
|
|
@ -92,10 +103,15 @@ class ToolView(APIView):
|
|||
responses=ToolEditAPI.get_response(),
|
||||
tags=[_('Tool')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_EDIT.get_workspace_permission())
|
||||
@log(menu='Tool', operate='Update tool',
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('tool_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_EDIT.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Tool', operate='Update tool',
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('tool_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, tool_id: str):
|
||||
return result.success(ToolSerializer.Operate(
|
||||
data={'id': tool_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -110,7 +126,10 @@ class ToolView(APIView):
|
|||
responses=ToolReadAPI.get_response(),
|
||||
tags=[_('Tool')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_READ.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_READ.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(menu='Tool', operate='Get tool')
|
||||
def get(self, request: Request, workspace_id: str, tool_id: str):
|
||||
return result.success(ToolSerializer.Operate(
|
||||
|
|
@ -126,10 +145,15 @@ class ToolView(APIView):
|
|||
responses=ToolDeleteAPI.get_response(),
|
||||
tags=[_('Tool')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_DELETE.get_workspace_permission())
|
||||
@log(menu='Tool', operate="Delete tool",
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('tool_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_DELETE.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Tool', operate="Delete tool",
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('tool_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, tool_id: str):
|
||||
return result.success(ToolSerializer.Operate(
|
||||
data={'id': tool_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -147,7 +171,10 @@ class ToolView(APIView):
|
|||
responses=ToolPageAPI.get_response(),
|
||||
tags=[_('Tool')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_READ.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_READ.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(menu='Tool', operate='Get tool list')
|
||||
def get(self, request: Request, workspace_id: str, current_page: int, page_size: int):
|
||||
return result.success(ToolTreeSerializer.Query(
|
||||
|
|
@ -173,7 +200,10 @@ class ToolView(APIView):
|
|||
responses=ToolImportAPI.get_response(),
|
||||
tags=[_("Tool")] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_IMPORT.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_IMPORT.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(menu='Tool', operate='Import tool', workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(ToolSerializer.Import(
|
||||
|
|
@ -192,10 +222,15 @@ class ToolView(APIView):
|
|||
responses=ToolExportAPI.get_response(),
|
||||
tags=[_("Tool")] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_EXPORT.get_workspace_permission())
|
||||
@log(menu='Tool', operate="Export function",
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_EXPORT.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(
|
||||
menu='Tool', operate="Export function",
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
)
|
||||
def get(self, request: Request, tool_id: str, workspace_id: str):
|
||||
return ToolSerializer.Operate(
|
||||
data={'id': tool_id, 'workspace_id': workspace_id}
|
||||
|
|
@ -217,6 +252,7 @@ class ToolView(APIView):
|
|||
@has_permissions(
|
||||
PermissionConstants.TOOL_CREATE.get_workspace_permission(),
|
||||
PermissionConstants.TOOL_EDIT.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(ToolSerializer.Pylint(
|
||||
|
|
@ -237,7 +273,10 @@ class ToolView(APIView):
|
|||
parameters=EditIconAPI.get_parameters(),
|
||||
tags=[_('Tool')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.TOOL_EDIT.get_workspace_permission())
|
||||
@has_permissions(
|
||||
PermissionConstants.TOOL_EDIT.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
def put(self, request: Request, tool_id: str, workspace_id: str):
|
||||
return result.success(ToolSerializer.IconOperate(data={
|
||||
'id': tool_id,
|
||||
|
|
|
|||
Loading…
Reference in New Issue