refactor: log add workspace_id

This commit is contained in:
wxg0103 2025-06-10 14:50:25 +08:00
parent 982604d39a
commit e6e3acdfea
15 changed files with 131 additions and 94 deletions

View File

@ -48,7 +48,8 @@ class Application(APIView):
) )
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_permission()) @has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_permission())
@log(menu='Application', operate='Create an application', @log(menu='Application', operate='Create an application',
get_operation_object=lambda r, k: {'name': r.data.get('name')}) 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): def post(self, request: Request, workspace_id: str):
return result.success( return result.success(
ApplicationSerializer(data={'workspace_id': workspace_id, 'user_id': request.user.id}).insert(request.data)) ApplicationSerializer(data={'workspace_id': workspace_id, 'user_id': request.user.id}).insert(request.data))
@ -99,7 +100,7 @@ class Application(APIView):
tags=[_('Application')] # type: ignore tags=[_('Application')] # type: ignore
) )
@has_permissions(PermissionConstants.APPLICATION_READ) @has_permissions(PermissionConstants.APPLICATION_READ)
@log(menu='Application', operate="Import Application") @log(menu='Application', operate="Import Application", workspace_id=lambda r, k: k.get('workspace_id'))
def post(self, request: Request, workspace_id: str): def post(self, request: Request, workspace_id: str):
return result.success(ApplicationSerializer( return result.success(ApplicationSerializer(
data={'user_id': request.user.id, 'workspace_id': workspace_id, data={'user_id': request.user.id, 'workspace_id': workspace_id,
@ -120,7 +121,8 @@ class Application(APIView):
) )
@has_permissions(PermissionConstants.APPLICATION_EXPORT.get_workspace_application_permission()) @has_permissions(PermissionConstants.APPLICATION_EXPORT.get_workspace_application_permission())
@log(menu='Application', operate="Export Application", @log(menu='Application', operate="Export Application",
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id'))) get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
workspace_id=lambda r, k: k.get('workspace_id'))
def post(self, request: Request, workspace_id: str, application_id: str): def post(self, request: Request, workspace_id: str, application_id: str):
return ApplicationOperateSerializer( return ApplicationOperateSerializer(
data={'application_id': application_id, data={'application_id': application_id,
@ -140,7 +142,8 @@ class Application(APIView):
) )
@has_permissions(PermissionConstants.APPLICATION_DELETE.get_workspace_application_permission()) @has_permissions(PermissionConstants.APPLICATION_DELETE.get_workspace_application_permission())
@log(menu='Application', operate='Deleting application', @log(menu='Application', operate='Deleting application',
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')) get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
workspace_id=lambda r, k: k.get('workspace_id')
) )
def delete(self, request: Request, workspace_id: str, application_id: str): def delete(self, request: Request, workspace_id: str, application_id: str):
return result.success(ApplicationOperateSerializer( return result.success(ApplicationOperateSerializer(
@ -159,7 +162,8 @@ class Application(APIView):
) )
@has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission()) @has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission())
@log(menu='Application', operate="Modify the application", @log(menu='Application', operate="Modify the application",
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id'))) get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
workspace_id=lambda r, k: k.get('workspace_id'))
def put(self, request: Request, workspace_id: str, application_id: str): def put(self, request: Request, workspace_id: str, application_id: str):
return result.success( return result.success(
ApplicationOperateSerializer( ApplicationOperateSerializer(
@ -195,7 +199,8 @@ class Application(APIView):
tags=[_('Application')] # type: ignore tags=[_('Application')] # type: ignore
) )
@log(menu='Application', operate='Publishing an application', @log(menu='Application', operate='Publishing an application',
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')) get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
workspace_id=lambda r, k: k.get('workspace_id')
) )
def put(self, request: Request, application_id: str): def put(self, request: Request, application_id: str):
return result.success( return result.success(

View File

@ -5,7 +5,7 @@ from rest_framework.request import Request
from rest_framework.views import APIView from rest_framework.views import APIView
from application.api.application_api_key import ApplicationKeyAPI from application.api.application_api_key import ApplicationKeyAPI
from application.models import ApplicationApiKey from application.models import ApplicationApiKey, Application
from application.serializers.application_api_key import ApplicationKeySerializer from application.serializers.application_api_key import ApplicationKeySerializer
from common.auth import TokenAuth from common.auth import TokenAuth
from common.auth.authentication import has_permissions from common.auth.authentication import has_permissions
@ -14,11 +14,11 @@ from common.log.log import log
from common.result import result, success, DefaultResultSerializer from common.result import result, success, DefaultResultSerializer
def get_application_operation_object(application_api_key_id): def get_application_operation_object(application_id):
application_api_key_model = QuerySet(model=ApplicationApiKey).filter(id=application_api_key_id).first() application_model = QuerySet(model=Application).filter(id=application_id).first()
if application_api_key_model is not None: if application_model is not None:
return { return {
"name": application_api_key_model.name "name": application_model.name
} }
return {} return {}
@ -37,7 +37,8 @@ class ApplicationKey(APIView):
tags=[_('Application Api Key')] # type: ignore tags=[_('Application Api Key')] # type: ignore
) )
@log(menu='Application', operate="Add ApiKey", @log(menu='Application', operate="Add ApiKey",
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_api_key_id'))) get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
workspace_id=lambda r, k: k.get('workspace_id'))
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission()) @has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission())
def post(self, request: Request, workspace_id: str, application_id: str): def post(self, request: Request, workspace_id: str, application_id: str):
return result.success(ApplicationKeySerializer( return result.success(ApplicationKeySerializer(
@ -73,6 +74,9 @@ class ApplicationKey(APIView):
tags=[_('Application Api Key')] # type: ignore tags=[_('Application Api Key')] # type: ignore
) )
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission()) @has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission())
@log(menu='Application', operate="Modify application API_KEY",
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
workspace_id=lambda r, k: k.get('workspace_id'))
def put(self, request: Request, workspace_id: str, application_id: str, api_key_id: str): def put(self, request: Request, workspace_id: str, application_id: str, api_key_id: str):
return result.success( return result.success(
ApplicationKeySerializer.Operate( ApplicationKeySerializer.Operate(
@ -91,6 +95,9 @@ class ApplicationKey(APIView):
tags=[_('Application Api Key')] # type: ignore tags=[_('Application Api Key')] # type: ignore
) )
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission()) @has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission())
@log(menu='Application', operate="Delete application API_KEY",
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
workspace_id=lambda r, k: k.get('workspace_id'))
def delete(self, request: Request, workspace_id: str, application_id: str, api_key_id: str): def delete(self, request: Request, workspace_id: str, application_id: str, api_key_id: str):
return result.success( return result.success(
ApplicationKeySerializer.Operate( ApplicationKeySerializer.Operate(

View File

@ -92,7 +92,8 @@ class ApplicationVersionView(APIView):
) )
@has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission()) @has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission())
@log(menu='Application', operate="Modify application version information", @log(menu='Application', operate="Modify application version information",
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id'))) get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
workspace_id=lambda r, k: k.get('workspace_id'))
def put(self, request: Request, workspace_id: str, application_id: str, work_flow_version_id: str): def put(self, request: Request, workspace_id: str, application_id: str, work_flow_version_id: str):
return result.success( return result.success(
ApplicationVersionSerializer.Operate( ApplicationVersionSerializer.Operate(

View File

@ -57,7 +57,7 @@ def _get_details(request):
def log(menu: str, operate, get_user=_get_user, get_ip_address=_get_ip_address, get_details=_get_details, def log(menu: str, operate, get_user=_get_user, get_ip_address=_get_ip_address, get_details=_get_details,
get_operation_object=None): get_operation_object=None, workspace_id="None"):
""" """
记录审计日志 记录审计日志
@param menu: 操作菜单 str @param menu: 操作菜单 str
@ -92,7 +92,7 @@ def log(menu: str, operate, get_user=_get_user, get_ip_address=_get_ip_address,
_operate = operate(request) _operate = operate(request)
# 插入审计日志 # 插入审计日志
Log(menu=menu, operate=_operate, user=user, status=status, ip_address=ip, details=details, Log(menu=menu, operate=_operate, user=user, status=status, ip_address=ip, details=details,
operation_object=operation_object).save() operation_object=operation_object, workspace_id=workspace_id).save()
return run return run

View File

@ -10,25 +10,18 @@ from common.constants.permission_constants import Permission, Group, Operate
from common.log.log import log from common.log.log import log
from common.result import result from common.result import result
from folders.api.folder import FolderCreateAPI, FolderEditAPI, FolderReadAPI, FolderTreeReadAPI, FolderDeleteAPI from folders.api.folder import FolderCreateAPI, FolderEditAPI, FolderReadAPI, FolderTreeReadAPI, FolderDeleteAPI
from folders.models.folder import FolderCreateRequest, FolderEditRequest from folders.serializers.folder import FolderSerializer, FolderTreeSerializer, get_folder_type
from folders.serializers.folder import FolderSerializer, FolderTreeSerializer
def get_folder_create_operation_object(folder_name): def get_folder_operation_object(folder_id, source):
folder_model = QuerySet(model=FolderCreateRequest).filter(name=folder_name).first() Folder = get_folder_type(source)
folder_model = QuerySet(model=Folder).filter(id=folder_id).first()
if folder_model is not None: if folder_model is not None:
return { return {
'name': folder_model.name 'name': folder_model.name
} }
return {} return {}
def get_folder_edit_operation_object(folder_name):
folder_model = QuerySet(model=FolderEditRequest).filter(name=folder_name).first()
if folder_model is not None:
return {
'name': folder_model.name
}
return {}
class FolderView(APIView): class FolderView(APIView):
authentication_classes = [TokenAuth] authentication_classes = [TokenAuth]
@ -46,7 +39,8 @@ class FolderView(APIView):
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.CREATE, @has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.CREATE,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}")) resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
@log(menu='folder', operate='Create folder', @log(menu='folder', operate='Create folder',
get_operation_object=lambda r,k: get_folder_create_operation_object(k.get('folder_name')) 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): def post(self, request: Request, workspace_id: str, source: str):
return result.success(FolderSerializer.Create( return result.success(FolderSerializer.Create(
@ -87,7 +81,8 @@ class FolderView(APIView):
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT, @has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}")) resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
@log(menu='folder', operate='Edit folder', @log(menu='folder', operate='Edit folder',
get_operation_object=lambda r, k: get_folder_edit_operation_object(k.get('folder_name')) 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): def put(self, request: Request, workspace_id: str, source: str, folder_id: str):
return result.success(FolderSerializer.Operate( return result.success(FolderSerializer.Operate(
@ -121,7 +116,10 @@ class FolderView(APIView):
) )
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.DELETE, @has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.DELETE,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}")) resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
@log(menu='folder', operate='Delete folder') @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): def delete(self, request: Request, workspace_id: str, source: str, folder_id: str):
return result.success(FolderSerializer.Operate( return result.success(FolderSerializer.Operate(
data={'id': folder_id, 'workspace_id': workspace_id, 'source': source} data={'id': folder_id, 'workspace_id': workspace_id, 'source': source}

View File

@ -3,7 +3,6 @@ from django.db.models import QuerySet
from knowledge.models import Document from knowledge.models import Document
def get_document_operation_object(document_id: str): def get_document_operation_object(document_id: str):
document_model = QuerySet(model=Document).filter(id=document_id).first() document_model = QuerySet(model=Document).filter(id=document_id).first()
if document_model is not None: if document_model is not None:
@ -13,6 +12,7 @@ def get_document_operation_object(document_id: str):
} }
return {} return {}
def get_document_operation_object_batch(document_id_list: str): def get_document_operation_object_batch(document_id_list: str):
document_model_list = QuerySet(model=Document).filter(id__in=document_id_list) document_model_list = QuerySet(model=Document).filter(id__in=document_id_list)
if document_model_list is not None: if document_model_list is not None:

View File

@ -37,7 +37,7 @@ class DocumentView(APIView):
@log(menu='document', operate="Create document", @log(menu='document', operate="Create document",
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
{'name': r.data.get('name')})) {'name': r.data.get('name')}), workspace_id=lambda r, keywords: keywords.get('workspace_id'))
def post(self, request: Request, workspace_id: str, knowledge_id: str): def post(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success( return result.success(
DocumentSerializers.Create( DocumentSerializers.Create(
@ -99,7 +99,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return result.success(DocumentSerializers.Operate(data={ return result.success(DocumentSerializers.Operate(data={
@ -119,7 +119,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def delete(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
operate = DocumentSerializers.Operate(data={ operate = DocumentSerializers.Operate(data={
@ -194,7 +194,8 @@ class DocumentView(APIView):
@log(menu='document', operate="Modify document hit processing methods in batches", @log(menu='document', operate="Modify document hit processing methods in batches",
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object_batch(r.data.get('id_list')))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.Batch( return result.success(DocumentSerializers.Batch(
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id} data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
@ -218,7 +219,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return result.success(DocumentSerializers.Sync( return result.success(DocumentSerializers.Sync(
data={'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id} data={'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
@ -242,7 +243,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return result.success(DocumentSerializers.Operate( return result.success(DocumentSerializers.Operate(
@ -266,7 +267,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return result.success(DocumentSerializers.Operate( return result.success(DocumentSerializers.Operate(
data={'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id} data={'document_id': document_id, 'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
@ -289,7 +290,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object_batch(r.data.get('id_list')) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.Batch(data={ return result.success(DocumentSerializers.Batch(data={
@ -317,7 +318,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
{'name': f'[{",".join([document.get("name") for document in r.data])}]', {'name': f'[{",".join([document.get("name") for document in r.data])}]',
'document_list': 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.Batch( return result.success(DocumentSerializers.Batch(
@ -344,7 +345,8 @@ class DocumentView(APIView):
@log(menu='document', operate="Batch sync documents", @log(menu='document', operate="Batch sync documents",
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object_batch(r.data.get('id_list'))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.Batch( return result.success(DocumentSerializers.Batch(
@ -371,7 +373,8 @@ class DocumentView(APIView):
@log(menu='document', operate="Delete documents in batches", @log(menu='document', operate="Delete documents in batches",
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object_batch(r.data.get('id_list')))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.Batch( return result.success(DocumentSerializers.Batch(
data={'workspace_id': workspace_id, 'knowledge_id': knowledge_id} data={'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
@ -397,7 +400,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object_batch(r.data.get('id_list')) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success( return result.success(
@ -426,7 +429,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object_batch(r.data.get('document_id_list')) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.BatchGenerateRelated( return result.success(DocumentSerializers.BatchGenerateRelated(
@ -473,7 +476,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return DocumentSerializers.Operate(data={ return DocumentSerializers.Operate(data={
@ -495,7 +498,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return DocumentSerializers.Operate(data={ return DocumentSerializers.Operate(data={
@ -512,7 +515,8 @@ class DocumentView(APIView):
responses=DocumentDownloadSourceAPI.get_response(), responses=DocumentDownloadSourceAPI.get_response(),
tags=[_('Knowledge Base/Documentation')] # type: ignore tags=[_('Knowledge Base/Documentation')] # type: ignore
) )
@has_permissions(PermissionConstants.KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE.get_workspace_knowledge_permission()) @has_permissions(
PermissionConstants.KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE.get_workspace_knowledge_permission())
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str): def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return DocumentSerializers.Operate(data={ return DocumentSerializers.Operate(data={
'workspace_id': workspace_id, 'document_id': document_id, 'knowledge_id': knowledge_id 'workspace_id': workspace_id, 'document_id': document_id, 'knowledge_id': knowledge_id
@ -534,7 +538,7 @@ class DocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object_batch(r.data) 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): def put(self, request: Request, workspace_id, knowledge_id: str, target_knowledge_id: str):
return result.success(DocumentSerializers.Migrate( return result.success(DocumentSerializers.Migrate(
@ -564,7 +568,8 @@ class WebDocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
{'name': f'[{",".join([url for url in r.data.get("source_url_list", [])])}]', {'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", [])]})) '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): def post(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.Create(data={ return result.success(DocumentSerializers.Create(data={
'knowledge_id': knowledge_id, 'workspace_id': workspace_id 'knowledge_id': knowledge_id, 'workspace_id': workspace_id
@ -589,7 +594,8 @@ class QaDocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
{'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]', {'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]',
'document_list': [{'name': 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): def post(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.Create(data={ return result.success(DocumentSerializers.Create(data={
'knowledge_id': knowledge_id, 'workspace_id': workspace_id 'knowledge_id': knowledge_id, 'workspace_id': workspace_id
@ -614,7 +620,8 @@ class TableDocumentView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
{'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]', {'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]',
'document_list': [{'name': 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): def post(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(DocumentSerializers.Create( return result.success(DocumentSerializers.Create(
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id} data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}

View File

@ -55,7 +55,8 @@ class KnowledgeView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission())
@log(menu='Knowledge Base', operate="Modify knowledge base information", @log(menu='Knowledge Base', operate="Modify knowledge base information",
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(KnowledgeSerializer.Operate( return result.success(KnowledgeSerializer.Operate(
data={'user_id': request.user.id, 'workspace_id': workspace_id, 'knowledge_id': knowledge_id} data={'user_id': request.user.id, 'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
@ -73,7 +74,8 @@ class KnowledgeView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_DELETE.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_DELETE.get_workspace_knowledge_permission())
@log(menu='Knowledge Base', operate="Delete knowledge base", @log(menu='Knowledge Base', operate="Delete knowledge base",
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))) 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): def delete(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(KnowledgeSerializer.Operate( return result.success(KnowledgeSerializer.Operate(
data={'user_id': request.user.id, 'workspace_id': workspace_id, 'knowledge_id': knowledge_id} data={'user_id': request.user.id, 'workspace_id': workspace_id, 'knowledge_id': knowledge_id}
@ -133,7 +135,8 @@ class KnowledgeView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_SYNC.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_SYNC.get_workspace_knowledge_permission())
@log(menu='Knowledge Base', operate="Synchronize the knowledge base of the website", @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'))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(KnowledgeSerializer.SyncWeb( return result.success(KnowledgeSerializer.SyncWeb(
data={ data={
@ -186,7 +189,8 @@ class KnowledgeView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_VECTOR.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_VECTOR.get_workspace_knowledge_permission())
@log(menu='Knowledge Base', operate='Re-vectorize', @log(menu='Knowledge Base', operate='Re-vectorize',
get_operation_object=lambda r,k: get_knowledge_operation_object(k.get('knowledge_id'))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(KnowledgeSerializer.Operate( return result.success(KnowledgeSerializer.Operate(
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id, 'user_id': request.user.id} data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id, 'user_id': request.user.id}
@ -204,7 +208,8 @@ class KnowledgeView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_EXPORT.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_EXPORT.get_workspace_knowledge_permission())
@log(menu='Knowledge Base', operate="Export knowledge base", @log(menu='Knowledge Base', operate="Export knowledge base",
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))) 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): def get(self, request: Request, workspace_id: str, knowledge_id: str):
return KnowledgeSerializer.Operate(data={ return KnowledgeSerializer.Operate(data={
'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'user_id': request.user.id 'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'user_id': request.user.id
@ -222,7 +227,8 @@ class KnowledgeView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_EXPORT.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_EXPORT.get_workspace_knowledge_permission())
@log(menu='Knowledge Base', operate="Export knowledge base containing images", @log(menu='Knowledge Base', operate="Export knowledge base containing images",
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))) 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): def get(self, request: Request, workspace_id: str, knowledge_id: str):
return KnowledgeSerializer.Operate(data={ return KnowledgeSerializer.Operate(data={
'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'user_id': request.user.id 'workspace_id': workspace_id, 'knowledge_id': knowledge_id, 'user_id': request.user.id
@ -243,7 +249,8 @@ class KnowledgeView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_GENERATE.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_GENERATE.get_workspace_knowledge_permission())
@log(menu='document', operate='Generate related documents', @log(menu='document', operate='Generate related documents',
get_operation_object=lambda r,k: get_knowledge_operation_object(k.get('knowledge_id')) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(KnowledgeSerializer.Operate( return result.success(KnowledgeSerializer.Operate(
@ -308,7 +315,8 @@ class KnowledgeBaseView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
@log(menu='knowledge Base', operate='Create base knowledge', @log(menu='knowledge Base', operate='Create base knowledge',
get_operation_object=lambda r,k: {'name': r.data.get('name'), 'desc': r.data.get('desc')}) 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): def post(self, request: Request, workspace_id: str):
return result.success(KnowledgeSerializer.Create( return result.success(KnowledgeSerializer.Create(
data={'user_id': request.user.id, 'workspace_id': workspace_id} data={'user_id': request.user.id, 'workspace_id': workspace_id}
@ -330,11 +338,12 @@ class KnowledgeWebView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
@log(menu='Knowledge Base', operate="Create a web site knowledge base", @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'), get_operation_object=lambda r, k: {'name': r.data.get('name'), 'desc': r.data.get('desc'),
'first_list': r.FILES.getlist('file'), 'first_list': r.FILES.getlist('file'),
'meta': {'source_url': r.data.get('source_url'), 'meta': {'source_url': r.data.get('source_url'),
'selector': r.data.get('selector'), 'selector': r.data.get('selector'),
'embedding_model_id': r.data.get('embedding_model_id')}} '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): def post(self, request: Request, workspace_id: str):
return result.success(KnowledgeSerializer.Create( return result.success(KnowledgeSerializer.Create(

View File

@ -54,7 +54,7 @@ class ParagraphView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def post(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return result.success(ParagraphSerializers.Create( return result.success(ParagraphSerializers.Create(
@ -96,7 +96,7 @@ class ParagraphView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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, def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str,
target_knowledge_id: str, target_document_id): target_knowledge_id: str, target_document_id):
@ -128,7 +128,7 @@ class ParagraphView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return result.success(ParagraphSerializers.Batch( return result.success(ParagraphSerializers.Batch(
@ -153,7 +153,7 @@ class ParagraphView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
o = ParagraphSerializers.Operate( o = ParagraphSerializers.Operate(
@ -202,7 +202,7 @@ class ParagraphView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def delete(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
o = ParagraphSerializers.Operate( o = ParagraphSerializers.Operate(
@ -234,7 +234,7 @@ class ParagraphView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def post(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
return result.success(ParagraphSerializers.Problem( return result.success(ParagraphSerializers.Problem(
@ -315,7 +315,7 @@ class ParagraphView(APIView):
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object( get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
get_knowledge_operation_object(keywords.get('knowledge_id')), get_knowledge_operation_object(keywords.get('knowledge_id')),
get_document_operation_object(keywords.get('document_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): def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
return result.success(ParagraphSerializers.Association( return result.success(ParagraphSerializers.Association(

View File

@ -52,6 +52,7 @@ class ProblemView(APIView):
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
@log(menu='problem', operate='Create question', @log(menu='problem', operate='Create question',
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')) 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): def post(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(ProblemSerializers.Create( return result.success(ProblemSerializers.Create(
@ -94,7 +95,8 @@ class ProblemView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
@log(menu='problem', operate='Batch associated paragraphs', @log(menu='problem', operate='Batch associated paragraphs',
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(ProblemSerializers.BatchOperate( return result.success(ProblemSerializers.BatchOperate(
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id} data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
@ -115,7 +117,8 @@ class ProblemView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
@log(menu='problem', operate='Batch deletion issues', @log(menu='problem', operate='Batch deletion issues',
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(ProblemSerializers.BatchOperate( return result.success(ProblemSerializers.BatchOperate(
data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id} data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id}
@ -135,7 +138,8 @@ class ProblemView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_DELETE.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_DELETE.get_workspace_knowledge_permission())
@log(menu='problem', operate='Delete question', @log(menu='problem', operate='Delete question',
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))) 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): def delete(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
return result.success(ProblemSerializers.Operate( return result.success(ProblemSerializers.Operate(
data={ data={
@ -158,7 +162,8 @@ class ProblemView(APIView):
) )
@has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission()) @has_permissions(PermissionConstants.KNOWLEDGE_PROBLEM_EDIT.get_workspace_knowledge_permission())
@log(menu='problem', operate='Modify question', @log(menu='problem', operate='Modify question',
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))) 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): def put(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
return result.success(ProblemSerializers.Operate( return result.success(ProblemSerializers.Operate(
data={ data={

View File

@ -67,7 +67,7 @@ class ModelSetting(APIView):
@has_permissions(PermissionConstants.MODEL_CREATE.get_workspace_permission()) @has_permissions(PermissionConstants.MODEL_CREATE.get_workspace_permission())
@log(menu='model', operate='Create model', @log(menu='model', operate='Create model',
get_operation_object=lambda r, k: {'name': r.date.get('name')}, get_operation_object=lambda r, k: {'name': r.date.get('name')},
get_details=get_edit_model_details get_details=get_edit_model_details, workspace_id=lambda r, k: k.get('workspace_id')
) )
def post(self, request: Request, workspace_id: str): def post(self, request: Request, workspace_id: str):
return result.success( return result.success(
@ -114,7 +114,7 @@ class ModelSetting(APIView):
@has_permissions(PermissionConstants.MODEL_EDIT.get_workspace_permission()) @has_permissions(PermissionConstants.MODEL_EDIT.get_workspace_permission())
@log(menu='model', operate='Update model', @log(menu='model', operate='Update model',
get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id')), get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id')),
get_details=get_edit_model_details get_details=get_edit_model_details, workspace_id=lambda r, k: k.get('workspace_id')
) )
def put(self, request: Request, workspace_id, model_id: str): def put(self, request: Request, workspace_id, model_id: str):
return result.success( return result.success(
@ -130,7 +130,8 @@ class ModelSetting(APIView):
tags=[_('Model')]) # type: ignore tags=[_('Model')]) # type: ignore
@has_permissions(PermissionConstants.MODEL_DELETE.get_workspace_permission()) @has_permissions(PermissionConstants.MODEL_DELETE.get_workspace_permission())
@log(menu='model', operate='Delete model', @log(menu='model', operate='Delete model',
get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id'))) get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id')),
workspace_id=lambda r, k: k.get('workspace_id'))
def delete(self, request: Request, workspace_id: str, model_id: str): def delete(self, request: Request, workspace_id: str, model_id: str):
return result.success( return result.success(
ModelSerializer.Operate(data={'id': model_id, 'user_id': request.user.id}).delete()) ModelSerializer.Operate(data={'id': model_id, 'user_id': request.user.id}).delete())
@ -172,7 +173,8 @@ class ModelSetting(APIView):
tags=[_('Model')]) # type: ignore tags=[_('Model')]) # type: ignore
@has_permissions(PermissionConstants.MODEL_READ.get_workspace_permission()) @has_permissions(PermissionConstants.MODEL_READ.get_workspace_permission())
@log(menu='model', operate='Save model parameter form', @log(menu='model', operate='Save model parameter form',
get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id'))) get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id')),
workspace_id=lambda r, k: k.get('workspace_id'))
def put(self, request: Request, workspace_id: str, model_id: str): def put(self, request: Request, workspace_id: str, model_id: str):
return result.success( return result.success(
ModelSerializer.ModelParams(data={'id': model_id}).save_model_params_form(request.data)) ModelSerializer.ModelParams(data={'id': model_id}).save_model_params_form(request.data))

View File

@ -9,7 +9,6 @@ from common import result
from common.auth import TokenAuth from common.auth import TokenAuth
from common.auth.authentication import has_permissions from common.auth.authentication import has_permissions
from common.constants.permission_constants import PermissionConstants from common.constants.permission_constants import PermissionConstants
from common.log.log import log
from models_provider.api.provide import ProvideApi from models_provider.api.provide import ProvideApi
from models_provider.constants.model_provider_constants import ModelProvideConstants from models_provider.constants.model_provider_constants import ModelProvideConstants
from models_provider.serializers.model_serializer import get_default_model_params_setting from models_provider.serializers.model_serializer import get_default_model_params_setting
@ -25,7 +24,6 @@ class Provide(APIView):
responses=ProvideApi.get_response(), responses=ProvideApi.get_response(),
tags=[_('Model')]) # type: ignore tags=[_('Model')]) # type: ignore
@has_permissions(PermissionConstants.MODEL_READ) @has_permissions(PermissionConstants.MODEL_READ)
@log(menu='model',operate='Get a list of model suppliers')
def get(self, request: Request): def get(self, request: Request):
model_type = request.query_params.get('model_type') model_type = request.query_params.get('model_type')
if model_type: if model_type:

View File

@ -33,6 +33,7 @@ class Log(AppModelMixin):
ip_address = models.CharField(max_length=128, verbose_name="ip地址") ip_address = models.CharField(max_length=128, verbose_name="ip地址")
details = models.JSONField(verbose_name="详情", default=dict, encoder=SystemEncoder) details = models.JSONField(verbose_name="详情", default=dict, encoder=SystemEncoder)
workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True)
class Meta: class Meta:
db_table = "log" db_table = "log"

View File

@ -24,13 +24,13 @@ from models_provider.api.model import DefaultModelResponse
from system_manage.api.email_setting import EmailSettingAPI from system_manage.api.email_setting import EmailSettingAPI
from system_manage.serializers.email_setting import EmailSettingSerializer from system_manage.serializers.email_setting import EmailSettingSerializer
def encryption_str(_value): def encryption_str(_value):
if isinstance(_value, str): if isinstance(_value, str):
return encryption(_value) return encryption(_value)
return _value return _value
def get_email_details(request): def get_email_details(request):
path = request.path path = request.path
body = request.data body = request.data
@ -55,7 +55,7 @@ class SystemSetting(APIView):
responses=EmailSettingAPI.get_response(), responses=EmailSettingAPI.get_response(),
tags=[_('Email Settings')]) # type: ignore tags=[_('Email Settings')]) # type: ignore
@log(menu='Email settings', operate='Create or update email settings', @log(menu='Email settings', operate='Create or update email settings',
get_details=get_email_details) get_details=get_email_details, workspace_id='None')
@has_permissions(PermissionConstants.EMAIL_SETTING_EDIT) @has_permissions(PermissionConstants.EMAIL_SETTING_EDIT)
def put(self, request: Request): def put(self, request: Request):
return result.success( return result.success(
@ -71,8 +71,8 @@ class SystemSetting(APIView):
tags=[_('Email Settings')] # type: ignore tags=[_('Email Settings')] # type: ignore
) )
@has_permissions(PermissionConstants.EMAIL_SETTING_EDIT) @has_permissions(PermissionConstants.EMAIL_SETTING_EDIT)
@log(menu='Email settings',operate='Test email settings', @log(menu='Email settings', operate='Test email settings',
get_details=get_email_details get_details=get_email_details, workspace_id='None'
) )
def post(self, request: Request): def post(self, request: Request):
return result.success( return result.success(

View File

@ -24,6 +24,7 @@ def get_tool_operation_object(tool_id):
} }
return {} return {}
class ToolView(APIView): class ToolView(APIView):
authentication_classes = [TokenAuth] authentication_classes = [TokenAuth]
@ -39,7 +40,7 @@ class ToolView(APIView):
) )
@has_permissions(PermissionConstants.TOOL_CREATE.get_workspace_permission()) @has_permissions(PermissionConstants.TOOL_CREATE.get_workspace_permission())
@log(menu="Tool", operate="Create tool", @log(menu="Tool", operate="Create tool",
get_operation_object=lambda r,k: r.data.get('name')) 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): def post(self, request: Request, workspace_id: str):
return result.success(ToolSerializer.Create( return result.success(ToolSerializer.Create(
data={'user_id': request.user.id, 'workspace_id': workspace_id} data={'user_id': request.user.id, 'workspace_id': workspace_id}
@ -93,7 +94,8 @@ class ToolView(APIView):
) )
@has_permissions(PermissionConstants.TOOL_EDIT.get_workspace_permission()) @has_permissions(PermissionConstants.TOOL_EDIT.get_workspace_permission())
@log(menu='Tool', operate='Update tool', @log(menu='Tool', operate='Update tool',
get_operation_object=lambda r, k: get_tool_operation_object(k.get('tool_id'))) 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): def put(self, request: Request, workspace_id: str, tool_id: str):
return result.success(ToolSerializer.Operate( return result.success(ToolSerializer.Operate(
data={'id': tool_id, 'workspace_id': workspace_id} data={'id': tool_id, 'workspace_id': workspace_id}
@ -126,7 +128,8 @@ class ToolView(APIView):
) )
@has_permissions(PermissionConstants.TOOL_DELETE.get_workspace_permission()) @has_permissions(PermissionConstants.TOOL_DELETE.get_workspace_permission())
@log(menu='Tool', operate="Delete tool", @log(menu='Tool', operate="Delete tool",
get_operation_object=lambda r,k: get_tool_operation_object(k.get('tool_id'))) 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): def delete(self, request: Request, workspace_id: str, tool_id: str):
return result.success(ToolSerializer.Operate( return result.success(ToolSerializer.Operate(
data={'id': tool_id, 'workspace_id': workspace_id} data={'id': tool_id, 'workspace_id': workspace_id}
@ -171,7 +174,7 @@ class ToolView(APIView):
tags=[_("Tool")] # type: ignore tags=[_("Tool")] # type: ignore
) )
@has_permissions(PermissionConstants.TOOL_IMPORT.get_workspace_permission()) @has_permissions(PermissionConstants.TOOL_IMPORT.get_workspace_permission())
@log(menu='Tool', operate='Import tool') @log(menu='Tool', operate='Import tool', workspace_id=lambda r, k: k.get('workspace_id'))
def post(self, request: Request, workspace_id: str): def post(self, request: Request, workspace_id: str):
return result.success(ToolSerializer.Import( return result.success(ToolSerializer.Import(
data={'workspace_id': workspace_id, 'file': request.FILES.get('file'), 'user_id': request.user.id} data={'workspace_id': workspace_id, 'file': request.FILES.get('file'), 'user_id': request.user.id}
@ -191,7 +194,8 @@ class ToolView(APIView):
) )
@has_permissions(PermissionConstants.TOOL_EXPORT.get_workspace_permission()) @has_permissions(PermissionConstants.TOOL_EXPORT.get_workspace_permission())
@log(menu='Tool', operate="Export function", @log(menu='Tool', operate="Export function",
get_operation_object=lambda r,k: get_tool_operation_object(k.get('id'))) 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): def get(self, request: Request, tool_id: str, workspace_id: str):
return ToolSerializer.Operate( return ToolSerializer.Operate(
data={'id': tool_id, 'workspace_id': workspace_id} data={'id': tool_id, 'workspace_id': workspace_id}