feat: add shared document and paragraph views with related permissions

This commit is contained in:
CaptainB 2025-06-06 17:39:07 +08:00
parent 66d4b6c81a
commit 2fccb9db67
3 changed files with 62 additions and 6 deletions

View File

@ -772,6 +772,62 @@ class PermissionConstants(Enum):
group=Group.KNOWLEDGE, operate=Operate.DELETE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_READ = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_CREATE = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.CREATE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_EDIT = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.EDIT, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_DELETE = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.DELETE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_SYNC = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.SYNC, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_VECTOR = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.VECTOR, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_GENERATE = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.GENERATE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_MIGRATE = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.MIGRATE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_EXPORT = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.EXPORT, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_PROBLEM_READ = Permission(
group=Group.KNOWLEDGE_PROBLEM, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_PROBLEM_CREATE = Permission(
group=Group.KNOWLEDGE_PROBLEM, operate=Operate.CREATE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_PROBLEM_EDIT = Permission(
group=Group.KNOWLEDGE_PROBLEM, operate=Operate.EDIT, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
SHARED_KNOWLEDGE_PROBLEM_DELETE = Permission(
group=Group.KNOWLEDGE_PROBLEM, operate=Operate.DELETE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
)
def get_workspace_application_permission(self):
return lambda r, kwargs: Permission(group=self.value.group, operate=self.value.operate,

View File

@ -30,7 +30,7 @@ urlpatterns = [
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/batch_hit_handling', views.DocumentView.BatchEditHitHandling.as_view()),
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/template/export', views.Template.as_view()),
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/table_template/export', views.TableTemplate.as_view()),
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/migrate/target_knowledge_id', views.DocumentView.Migrate.as_view()),
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/migrate/<str:target_knowledge_id>', views.DocumentView.Migrate.as_view()),
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/<str:document_id>', views.DocumentView.Operate.as_view()),
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/<str:document_id>/sync', views.DocumentView.SyncWeb.as_view()),
path('workspace/<str:workspace_id>/knowledge/<str:knowledge_id>/document/<str:document_id>/refresh', views.DocumentView.Refresh.as_view()),

View File

@ -51,7 +51,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('dataset_id'))
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))
)
def post(self, request: Request, workspace_id: str, knowledge_id: str):
return result.success(ProblemSerializers.Create(
@ -94,7 +94,7 @@ 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('dataset_id')))
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_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 +115,7 @@ 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('dataset_id')))
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_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 +135,7 @@ 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('dataset_id')))
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')))
def delete(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
return result.success(ProblemSerializers.Operate(
data={
@ -158,7 +158,7 @@ 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('dataset_id')))
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')))
def put(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
return result.success(ProblemSerializers.Operate(
data={