Skip to content

Commit f7a4aca

Browse files
committed
feat: implement knowledge creation APIs for base, web, lark, and yuque
1 parent 7246867 commit f7a4aca

File tree

3 files changed

+149
-17
lines changed

3 files changed

+149
-17
lines changed

apps/knowledge/api/knowledge.py

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,73 @@ def get_data(self):
1111
return KnowledgeModelSerializer()
1212

1313

14-
class KnowledgeCreateAPI(APIMixin):
14+
class KnowledgeBaseCreateAPI(APIMixin):
15+
@staticmethod
16+
def get_parameters():
17+
return [
18+
OpenApiParameter(
19+
name="workspace_id",
20+
description="工作空间id",
21+
type=OpenApiTypes.STR,
22+
location='path',
23+
required=True,
24+
)
25+
]
26+
27+
@staticmethod
28+
def get_request():
29+
return KnowledgeBaseCreateRequest
30+
31+
@staticmethod
32+
def get_response():
33+
return KnowledgeCreateResponse
34+
35+
36+
class KnowledgeWebCreateAPI(APIMixin):
37+
@staticmethod
38+
def get_parameters():
39+
return [
40+
OpenApiParameter(
41+
name="workspace_id",
42+
description="工作空间id",
43+
type=OpenApiTypes.STR,
44+
location='path',
45+
required=True,
46+
)
47+
]
48+
49+
@staticmethod
50+
def get_request():
51+
return KnowledgeBaseCreateRequest
52+
53+
@staticmethod
54+
def get_response():
55+
return KnowledgeCreateResponse
56+
57+
58+
class KnowledgeLarkCreateAPI(APIMixin):
59+
@staticmethod
60+
def get_parameters():
61+
return [
62+
OpenApiParameter(
63+
name="workspace_id",
64+
description="工作空间id",
65+
type=OpenApiTypes.STR,
66+
location='path',
67+
required=True,
68+
)
69+
]
70+
71+
@staticmethod
72+
def get_request():
73+
return KnowledgeBaseCreateRequest
74+
75+
@staticmethod
76+
def get_response():
77+
return KnowledgeCreateResponse
78+
79+
80+
class KnowledgeYuqueCreateAPI(APIMixin):
1581
@staticmethod
1682
def get_parameters():
1783
return [

apps/knowledge/urls.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@
55
app_name = "knowledge"
66
urlpatterns = [
77
path('workspace/<str:workspace_id>/knowledge', views.KnowledgeView.as_view()),
8+
path('workspace/<str:workspace_id>/knowledge/base', views.KnowledgeBaseView.as_view()),
9+
path('workspace/<str:workspace_id>/knowledge/web', views.KnowledgeWebView.as_view()),
10+
path('workspace/<str:workspace_id>/knowledge/lark', views.KnowledgeLarkView.as_view()),
11+
path('workspace/<str:workspace_id>/knowledge/yuque', views.KnowledgeYuqueView.as_view()),
812
]

apps/knowledge/views/knowledge.py

Lines changed: 78 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,14 @@
77
from common.auth.authentication import has_permissions
88
from common.constants.permission_constants import PermissionConstants
99
from common.result import result
10-
from knowledge.api.knowledge import KnowledgeCreateAPI, KnowledgeTreeReadAPI
10+
from knowledge.api.knowledge import KnowledgeBaseCreateAPI, KnowledgeLarkCreateAPI, \
11+
KnowledgeWebCreateAPI, KnowledgeYuqueCreateAPI, KnowledgeTreeReadAPI
1112
from knowledge.serializers.knowledge import KnowledgeSerializer, KnowledgeTreeSerializer
1213

1314

1415
class KnowledgeView(APIView):
1516
authentication_classes = [TokenAuth]
1617

17-
@extend_schema(
18-
methods=['POST'],
19-
description=_('Create knowledge'),
20-
operation_id=_('Create knowledge'),
21-
parameters=KnowledgeCreateAPI.get_parameters(),
22-
request=KnowledgeCreateAPI.get_request(),
23-
responses=KnowledgeCreateAPI.get_response(),
24-
tags=[_('Knowledge Base')]
25-
)
26-
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
27-
def post(self, request: Request, workspace_id: str):
28-
return result.success(KnowledgeSerializer.Create(
29-
data={'user_id': request.user.id, 'workspace_id': workspace_id}
30-
).insert(request.data))
31-
3218
@extend_schema(
3319
methods=['GET'],
3420
description=_('Get knowledge by module'),
@@ -42,3 +28,79 @@ def get(self, request: Request, workspace_id: str):
4228
return result.success(KnowledgeTreeSerializer(
4329
data={'workspace_id': workspace_id}
4430
).get_knowledge_list(request.query_params.get('module_id')))
31+
32+
33+
class KnowledgeBaseView(APIView):
34+
authentication_classes = [TokenAuth]
35+
36+
@extend_schema(
37+
methods=['POST'],
38+
description=_('Create base knowledge'),
39+
operation_id=_('Create base knowledge'),
40+
parameters=KnowledgeBaseCreateAPI.get_parameters(),
41+
request=KnowledgeBaseCreateAPI.get_request(),
42+
responses=KnowledgeBaseCreateAPI.get_response(),
43+
tags=[_('Knowledge Base')]
44+
)
45+
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
46+
def post(self, request: Request, workspace_id: str):
47+
return result.success(KnowledgeSerializer.Create(
48+
data={'user_id': request.user.id, 'workspace_id': workspace_id}
49+
).insert(request.data))
50+
51+
52+
class KnowledgeWebView(APIView):
53+
authentication_classes = [TokenAuth]
54+
55+
@extend_schema(
56+
methods=['POST'],
57+
description=_('Create web knowledge'),
58+
operation_id=_('Create web knowledge'),
59+
parameters=KnowledgeWebCreateAPI.get_parameters(),
60+
request=KnowledgeWebCreateAPI.get_request(),
61+
responses=KnowledgeWebCreateAPI.get_response(),
62+
tags=[_('Knowledge Base')]
63+
)
64+
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
65+
def post(self, request: Request, workspace_id: str):
66+
return result.success(KnowledgeSerializer.Create(
67+
data={'user_id': request.user.id, 'workspace_id': workspace_id}
68+
).insert(request.data))
69+
70+
71+
class KnowledgeLarkView(APIView):
72+
authentication_classes = [TokenAuth]
73+
74+
@extend_schema(
75+
methods=['POST'],
76+
description=_('Create lark knowledge'),
77+
operation_id=_('Create lark knowledge'),
78+
parameters=KnowledgeLarkCreateAPI.get_parameters(),
79+
request=KnowledgeLarkCreateAPI.get_request(),
80+
responses=KnowledgeLarkCreateAPI.get_response(),
81+
tags=[_('Knowledge Base')]
82+
)
83+
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
84+
def post(self, request: Request, workspace_id: str):
85+
return result.success(KnowledgeSerializer.Create(
86+
data={'user_id': request.user.id, 'workspace_id': workspace_id}
87+
).insert(request.data))
88+
89+
90+
class KnowledgeYuqueView(APIView):
91+
authentication_classes = [TokenAuth]
92+
93+
@extend_schema(
94+
methods=['POST'],
95+
description=_('Create yuque knowledge'),
96+
operation_id=_('Create yuque knowledge'),
97+
parameters=KnowledgeYuqueCreateAPI.get_parameters(),
98+
request=KnowledgeYuqueCreateAPI.get_request(),
99+
responses=KnowledgeYuqueCreateAPI.get_response(),
100+
tags=[_('Knowledge Base')]
101+
)
102+
@has_permissions(PermissionConstants.KNOWLEDGE_CREATE.get_workspace_permission())
103+
def post(self, request: Request, workspace_id: str):
104+
return result.success(KnowledgeSerializer.Create(
105+
data={'user_id': request.user.id, 'workspace_id': workspace_id}
106+
).insert(request.data))

0 commit comments

Comments
 (0)