refactor: log add workspace_id
Some checks are pending
sync2gitee / repo-sync (push) Waiting to run

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())
@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):
return result.success(
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
)
@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):
return result.success(ApplicationSerializer(
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())
@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):
return ApplicationOperateSerializer(
data={'application_id': application_id,
@ -140,7 +142,8 @@ class Application(APIView):
)
@has_permissions(PermissionConstants.APPLICATION_DELETE.get_workspace_application_permission())
@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):
return result.success(ApplicationOperateSerializer(
@ -159,7 +162,8 @@ class Application(APIView):
)
@has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission())
@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):
return result.success(
ApplicationOperateSerializer(
@ -195,7 +199,8 @@ class Application(APIView):
tags=[_('Application')] # type: ignore
)
@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):
return result.success(

View File

@ -5,7 +5,7 @@ from rest_framework.request import Request
from rest_framework.views import APIView
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 common.auth import TokenAuth
from common.auth.authentication import has_permissions
@ -14,11 +14,11 @@ from common.log.log import log
from common.result import result, success, DefaultResultSerializer
def get_application_operation_object(application_api_key_id):
application_api_key_model = QuerySet(model=ApplicationApiKey).filter(id=application_api_key_id).first()
if application_api_key_model is not None:
def get_application_operation_object(application_id):
application_model = QuerySet(model=Application).filter(id=application_id).first()
if application_model is not None:
return {
"name": application_api_key_model.name
"name": application_model.name
}
return {}
@ -37,7 +37,8 @@ class ApplicationKey(APIView):
tags=[_('Application Api Key')] # type: ignore
)
@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())
def post(self, request: Request, workspace_id: str, application_id: str):
return result.success(ApplicationKeySerializer(
@ -73,6 +74,9 @@ class ApplicationKey(APIView):
tags=[_('Application Api Key')] # type: ignore
)
@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):
return result.success(
ApplicationKeySerializer.Operate(
@ -91,6 +95,9 @@ class ApplicationKey(APIView):
tags=[_('Application Api Key')] # type: ignore
)
@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):
return result.success(
ApplicationKeySerializer.Operate(

View File

@ -92,7 +92,8 @@ class ApplicationVersionView(APIView):
)
@has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission())
@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):
return result.success(
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,
get_operation_object=None):
get_operation_object=None, workspace_id="None"):
"""
记录审计日志
@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)
# 插入审计日志
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

View File

@ -10,25 +10,18 @@ from common.constants.permission_constants import Permission, Group, Operate
from common.log.log import log
from common.result import result
from folders.api.folder import FolderCreateAPI, FolderEditAPI, FolderReadAPI, FolderTreeReadAPI, FolderDeleteAPI
from folders.models.folder import FolderCreateRequest, FolderEditRequest
from folders.serializers.folder import FolderSerializer, FolderTreeSerializer
from folders.serializers.folder import FolderSerializer, FolderTreeSerializer, get_folder_type
def get_folder_create_operation_object(folder_name):
folder_model = QuerySet(model=FolderCreateRequest).filter(name=folder_name).first()
def get_folder_operation_object(folder_id, source):
Folder = get_folder_type(source)
folder_model = QuerySet(model=Folder).filter(id=folder_id).first()
if folder_model is not None:
return {
'name': folder_model.name
}
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):
authentication_classes = [TokenAuth]
@ -46,7 +39,8 @@ class FolderView(APIView):
@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: 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):
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,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
@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):
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,
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):
return result.success(FolderSerializer.Operate(
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
def get_document_operation_object(document_id: str):
document_model = QuerySet(model=Document).filter(id=document_id).first()
if document_model is not None:
@ -13,6 +12,7 @@ def get_document_operation_object(document_id: str):
}
return {}
def get_document_operation_object_batch(document_id_list: str):
document_model_list = QuerySet(model=Document).filter(id__in=document_id_list)
if document_model_list is not None:
@ -32,4 +32,4 @@ def get_knowledge_document_operation_object(knowledge_dict: dict, document_dict:
'dataset_type': knowledge_dict.get("type", ""),
'document_name': document_dict.get("name", ""),
'document_type': document_dict.get("type", ""),
}
}

View File

@ -37,7 +37,7 @@ class DocumentView(APIView):
@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')),
{'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):
return result.success(
DocumentSerializers.Create(
@ -99,7 +99,7 @@ class DocumentView(APIView):
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={
@ -119,7 +119,7 @@ class DocumentView(APIView):
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={
@ -194,7 +194,8 @@ class DocumentView(APIView):
@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'))))
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}
@ -218,7 +219,7 @@ class DocumentView(APIView):
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}
@ -242,7 +243,7 @@ class DocumentView(APIView):
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(
@ -266,7 +267,7 @@ class DocumentView(APIView):
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}
@ -289,7 +290,7 @@ class DocumentView(APIView):
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={
@ -317,7 +318,7 @@ class DocumentView(APIView):
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})
'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(
@ -344,7 +345,8 @@ class DocumentView(APIView):
@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')))
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(
@ -371,7 +373,8 @@ class DocumentView(APIView):
@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'))))
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}
@ -397,7 +400,7 @@ class DocumentView(APIView):
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(
@ -426,7 +429,7 @@ class DocumentView(APIView):
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(
@ -473,7 +476,7 @@ class DocumentView(APIView):
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={
@ -495,7 +498,7 @@ class DocumentView(APIView):
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={
@ -512,7 +515,8 @@ class DocumentView(APIView):
responses=DocumentDownloadSourceAPI.get_response(),
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):
return DocumentSerializers.Operate(data={
'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_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(
@ -564,7 +568,8 @@ class WebDocumentView(APIView):
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", [])]}))
'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,7 +594,8 @@ class QaDocumentView(APIView):
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")]}))
'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
@ -614,7 +620,8 @@ class TableDocumentView(APIView):
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")]}))
'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}

View File

@ -55,7 +55,8 @@ class KnowledgeView(APIView):
)
@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')))
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}
@ -73,7 +74,8 @@ class KnowledgeView(APIView):
)
@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')))
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}
@ -133,7 +135,8 @@ class KnowledgeView(APIView):
)
@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')))
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={
@ -186,7 +189,8 @@ class KnowledgeView(APIView):
)
@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')))
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}
@ -204,7 +208,8 @@ class KnowledgeView(APIView):
)
@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')))
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
@ -222,7 +227,8 @@ class KnowledgeView(APIView):
)
@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')))
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
@ -243,7 +249,8 @@ class KnowledgeView(APIView):
)
@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'))
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(
@ -308,7 +315,8 @@ class KnowledgeBaseView(APIView):
)
@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')})
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}
@ -330,11 +338,12 @@ class KnowledgeWebView(APIView):
)
@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')}}
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(

View File

@ -51,11 +51,11 @@ class ParagraphView(APIView):
)
@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'))
)
)
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}
@ -96,7 +96,7 @@ class ParagraphView(APIView):
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):
@ -128,7 +128,7 @@ class ParagraphView(APIView):
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(
@ -153,7 +153,7 @@ class ParagraphView(APIView):
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(
@ -202,7 +202,7 @@ class ParagraphView(APIView):
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(
@ -234,7 +234,7 @@ class ParagraphView(APIView):
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(
@ -315,7 +315,7 @@ class ParagraphView(APIView):
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(

View File

@ -52,6 +52,7 @@ class ProblemView(APIView):
@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'))
, 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(
@ -94,7 +95,8 @@ class ProblemView(APIView):
)
@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')))
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,7 +117,8 @@ class ProblemView(APIView):
)
@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')))
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}
@ -135,7 +138,8 @@ class ProblemView(APIView):
)
@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')))
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={
@ -158,7 +162,8 @@ class ProblemView(APIView):
)
@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')))
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={

View File

@ -67,7 +67,7 @@ class ModelSetting(APIView):
@has_permissions(PermissionConstants.MODEL_CREATE.get_workspace_permission())
@log(menu='model', operate='Create model',
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):
return result.success(
@ -114,7 +114,7 @@ class ModelSetting(APIView):
@has_permissions(PermissionConstants.MODEL_EDIT.get_workspace_permission())
@log(menu='model', operate='Update model',
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):
return result.success(
@ -130,7 +130,8 @@ class ModelSetting(APIView):
tags=[_('Model')]) # type: ignore
@has_permissions(PermissionConstants.MODEL_DELETE.get_workspace_permission())
@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):
return result.success(
ModelSerializer.Operate(data={'id': model_id, 'user_id': request.user.id}).delete())
@ -172,7 +173,8 @@ class ModelSetting(APIView):
tags=[_('Model')]) # type: ignore
@has_permissions(PermissionConstants.MODEL_READ.get_workspace_permission())
@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):
return result.success(
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.authentication import has_permissions
from common.constants.permission_constants import PermissionConstants
from common.log.log import log
from models_provider.api.provide import ProvideApi
from models_provider.constants.model_provider_constants import ModelProvideConstants
from models_provider.serializers.model_serializer import get_default_model_params_setting
@ -25,7 +24,6 @@ class Provide(APIView):
responses=ProvideApi.get_response(),
tags=[_('Model')]) # type: ignore
@has_permissions(PermissionConstants.MODEL_READ)
@log(menu='model',operate='Get a list of model suppliers')
def get(self, request: Request):
model_type = request.query_params.get('model_type')
if model_type:

View File

@ -33,6 +33,7 @@ class Log(AppModelMixin):
ip_address = models.CharField(max_length=128, verbose_name="ip地址")
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:
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.serializers.email_setting import EmailSettingSerializer
def encryption_str(_value):
if isinstance(_value, str):
return encryption(_value)
return _value
def get_email_details(request):
path = request.path
body = request.data
@ -55,7 +55,7 @@ class SystemSetting(APIView):
responses=EmailSettingAPI.get_response(),
tags=[_('Email Settings')]) # type: ignore
@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)
def put(self, request: Request):
return result.success(
@ -71,8 +71,8 @@ class SystemSetting(APIView):
tags=[_('Email Settings')] # type: ignore
)
@has_permissions(PermissionConstants.EMAIL_SETTING_EDIT)
@log(menu='Email settings',operate='Test email settings',
get_details=get_email_details
@log(menu='Email settings', operate='Test email settings',
get_details=get_email_details, workspace_id='None'
)
def post(self, request: Request):
return result.success(

View File

@ -24,6 +24,7 @@ def get_tool_operation_object(tool_id):
}
return {}
class ToolView(APIView):
authentication_classes = [TokenAuth]
@ -39,7 +40,7 @@ class ToolView(APIView):
)
@has_permissions(PermissionConstants.TOOL_CREATE.get_workspace_permission())
@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):
return result.success(ToolSerializer.Create(
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())
@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):
return result.success(ToolSerializer.Operate(
data={'id': tool_id, 'workspace_id': workspace_id}
@ -126,7 +128,8 @@ class ToolView(APIView):
)
@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')))
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}
@ -171,7 +174,7 @@ class ToolView(APIView):
tags=[_("Tool")] # type: ignore
)
@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):
return result.success(ToolSerializer.Import(
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())
@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):
return ToolSerializer.Operate(
data={'id': tool_id, 'workspace_id': workspace_id}