Skip to content

Commit 59d7867

Browse files
authored
feat: application add workspace manage role (#3235)
1 parent c758059 commit 59d7867

File tree

12 files changed

+81
-43
lines changed

12 files changed

+81
-43
lines changed

apps/application/urls.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66

77
urlpatterns = [
88

9-
path('workspace/<str:workspace_id>/application', views.Application.as_view(), name='application'),
10-
path('workspace/<str:workspace_id>/application/import', views.Application.Import.as_view()),
9+
path('workspace/<str:workspace_id>/application', views.ApplicationAPI.as_view(), name='application'),
10+
path('workspace/<str:workspace_id>/application/import', views.ApplicationAPI.Import.as_view()),
1111
path('workspace/<str:workspace_id>/application/<int:current_page>/<int:page_size>',
12-
views.Application.Page.as_view(), name='application_page'),
13-
path('workspace/<str:workspace_id>/application/<str:application_id>', views.Application.Operate.as_view()),
12+
views.ApplicationAPI.Page.as_view(), name='application_page'),
13+
path('workspace/<str:workspace_id>/application/<str:application_id>', views.ApplicationAPI.Operate.as_view()),
1414
path('workspace/<str:workspace_id>/application/<str:application_id>/application_key',
1515
views.ApplicationKey.as_view()),
1616
path('workspace/<str:workspace_id>/application/<str:application_id>/application_stats',
1717
views.ApplicationStats.as_view()),
1818
path('workspace/<str:workspace_id>/application/<str:application_id>/application_key/<str:api_key_id>',
1919
views.ApplicationKey.Operate.as_view()),
20-
path('workspace/<str:workspace_id>/application/<str:application_id>/export', views.Application.Export.as_view()),
20+
path('workspace/<str:workspace_id>/application/<str:application_id>/export', views.ApplicationAPI.Export.as_view()),
2121

2222
path('workspace/<str:workspace_id>/application/<str:application_id>/work_flow_version',
2323
views.ApplicationVersionView.as_view()),

apps/application/views/application.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from common import result
2121
from common.auth import TokenAuth
2222
from common.auth.authentication import has_permissions
23-
from common.constants.permission_constants import PermissionConstants
23+
from common.constants.permission_constants import PermissionConstants, RoleConstants
2424
from common.log.log import log
2525

2626

@@ -33,7 +33,7 @@ def get_application_operation_object(application_id):
3333
return {}
3434

3535

36-
class Application(APIView):
36+
class ApplicationAPI(APIView):
3737
authentication_classes = [TokenAuth]
3838

3939
@extend_schema(
@@ -46,7 +46,8 @@ class Application(APIView):
4646
responses=ApplicationCreateAPI.get_response(),
4747
tags=[_('Application')] # type: ignore
4848
)
49-
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_permission())
49+
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_permission(),
50+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
5051
@log(menu='Application', operate='Create an application',
5152
get_operation_object=lambda r, k: {'name': r.data.get('name')},
5253
workspace_id=lambda r, k: k.get('workspace_id'))
@@ -63,7 +64,8 @@ def post(self, request: Request, workspace_id: str):
6364
responses=ApplicationQueryAPI.get_response(),
6465
tags=[_('Application')] # type: ignore
6566
)
66-
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_permission())
67+
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_permission(),
68+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
6769
def get(self, request: Request, workspace_id: str):
6870
return result.success(Query(data={'workspace_id': workspace_id, 'user_id': request.user.id}).list(request.data))
6971

@@ -79,7 +81,8 @@ class Page(APIView):
7981
responses=ApplicationQueryAPI.get_page_response(),
8082
tags=[_('Application')] # type: ignore
8183
)
82-
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_permission())
84+
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_permission(),
85+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
8386
def get(self, request: Request, workspace_id: str, current_page: int, page_size: int):
8487
return result.success(
8588
Query(data={'workspace_id': workspace_id, 'user_id': request.user.id}).page(current_page, page_size,
@@ -99,7 +102,7 @@ class Import(APIView):
99102
responses=result.DefaultResultSerializer,
100103
tags=[_('Application')] # type: ignore
101104
)
102-
@has_permissions(PermissionConstants.APPLICATION_READ)
105+
@has_permissions(PermissionConstants.APPLICATION_READ, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
103106
@log(menu='Application', operate="Import Application", workspace_id=lambda r, k: k.get('workspace_id'))
104107
def post(self, request: Request, workspace_id: str):
105108
return result.success(ApplicationSerializer(
@@ -119,7 +122,8 @@ class Export(APIView):
119122
responses=ApplicationExportAPI.get_response(),
120123
tags=[_('Application')] # type: ignore
121124
)
122-
@has_permissions(PermissionConstants.APPLICATION_EXPORT.get_workspace_application_permission())
125+
@has_permissions(PermissionConstants.APPLICATION_EXPORT.get_workspace_application_permission(),
126+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
123127
@log(menu='Application', operate="Export Application",
124128
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
125129
workspace_id=lambda r, k: k.get('workspace_id'))
@@ -140,7 +144,8 @@ class Operate(APIView):
140144
responses=result.DefaultResultSerializer,
141145
tags=[_('Application')] # type: ignore
142146
)
143-
@has_permissions(PermissionConstants.APPLICATION_DELETE.get_workspace_application_permission())
147+
@has_permissions(PermissionConstants.APPLICATION_DELETE.get_workspace_application_permission(),
148+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
144149
@log(menu='Application', operate='Deleting application',
145150
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
146151
workspace_id=lambda r, k: k.get('workspace_id')
@@ -160,7 +165,8 @@ def delete(self, request: Request, workspace_id: str, application_id: str):
160165
responses=ApplicationCreateAPI.get_response(),
161166
tags=[_('Application')] # type: ignore
162167
)
163-
@has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission())
168+
@has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission(),
169+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
164170
@log(menu='Application', operate="Modify the application",
165171
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
166172
workspace_id=lambda r, k: k.get('workspace_id'))
@@ -180,7 +186,8 @@ def put(self, request: Request, workspace_id: str, application_id: str):
180186
responses=result.DefaultResultSerializer,
181187
tags=[_('Application')] # type: ignore
182188
)
183-
@has_permissions(PermissionConstants.WORKSPACE_READ.get_workspace_application_permission())
189+
@has_permissions(PermissionConstants.WORKSPACE_READ.get_workspace_application_permission(),
190+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
184191
def get(self, request: Request, workspace_id: str, application_id: str):
185192
return result.success(ApplicationOperateSerializer(
186193
data={'application_id': application_id, 'user_id': request.user.id}).one())
@@ -202,7 +209,7 @@ class Publish(APIView):
202209
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
203210
workspace_id=lambda r, k: k.get('workspace_id')
204211
)
205-
def put(self, request: Request, application_id: str):
212+
def put(self, request: Request, workspace_id: str, application_id: str):
206213
return result.success(
207214
ApplicationOperateSerializer(
208215
data={'application_id': application_id, 'user_id': request.user.id}).publish(request.data))

apps/application/views/application_access_token.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from common import result
1717
from common.auth import TokenAuth
1818
from common.auth.authentication import has_permissions
19-
from common.constants.permission_constants import PermissionConstants
19+
from common.constants.permission_constants import PermissionConstants, RoleConstants
2020

2121

2222
class AccessToken(APIView):
@@ -31,7 +31,8 @@ class AccessToken(APIView):
3131
request=ApplicationAccessTokenAPI.get_request(),
3232
tags=[_('Application')] # type: ignore
3333
)
34-
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_ACCESS.get_workspace_application_permission())
34+
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_ACCESS.get_workspace_application_permission(),
35+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
3536
def put(self, request: Request, workspace_id: str, application_id: str):
3637
return result.success(
3738
AccessTokenSerializer(data={'application_id': application_id}).edit(
@@ -45,6 +46,8 @@ def put(self, request: Request, workspace_id: str, application_id: str):
4546
parameters=ApplicationAccessTokenAPI.get_parameters(),
4647
tags=[_('Application')] # type: ignore
4748
)
48-
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_application_permission())
49+
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_application_permission(),
50+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
51+
)
4952
def get(self, request: Request, workspace_id: str, application_id: str):
5053
return result.success(AccessTokenSerializer(data={'application_id': application_id}).one())

apps/application/views/application_api_key.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from application.serializers.application_api_key import ApplicationKeySerializer
1010
from common.auth import TokenAuth
1111
from common.auth.authentication import has_permissions
12-
from common.constants.permission_constants import PermissionConstants
12+
from common.constants.permission_constants import PermissionConstants, RoleConstants
1313
from common.log.log import log
1414
from common.result import result, success, DefaultResultSerializer
1515

@@ -39,7 +39,9 @@ class ApplicationKey(APIView):
3939
@log(menu='Application', operate="Add ApiKey",
4040
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
4141
workspace_id=lambda r, k: k.get('workspace_id'))
42-
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission())
42+
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission(),
43+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
44+
)
4345
def post(self, request: Request, workspace_id: str, application_id: str):
4446
return result.success(ApplicationKeySerializer(
4547
data={'application_id': application_id, 'user_id': request.user.id,
@@ -54,7 +56,8 @@ def post(self, request: Request, workspace_id: str, application_id: str):
5456
responses=ApplicationKeyAPI.List.get_response(),
5557
tags=[_('Application Api Key')] # type: ignore
5658
)
57-
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission())
59+
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission(),
60+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
5861
def get(self, request: Request, workspace_id: str, application_id: str):
5962
return result.success(ApplicationKeySerializer(
6063
data={'application_id': application_id,
@@ -73,7 +76,8 @@ class Operate(APIView):
7376
responses=DefaultResultSerializer,
7477
tags=[_('Application Api Key')] # type: ignore
7578
)
76-
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission())
79+
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission(),
80+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
7781
@log(menu='Application', operate="Modify application API_KEY",
7882
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
7983
workspace_id=lambda r, k: k.get('workspace_id'))
@@ -94,7 +98,8 @@ def put(self, request: Request, workspace_id: str, application_id: str, api_key_
9498
responses=DefaultResultSerializer,
9599
tags=[_('Application Api Key')] # type: ignore
96100
)
97-
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission())
101+
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission(),
102+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
98103
@log(menu='Application', operate="Delete application API_KEY",
99104
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
100105
workspace_id=lambda r, k: k.get('workspace_id'))

apps/application/views/application_chat.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from application.serializers.application_chat import ApplicationChatQuerySerializers
1717
from common.auth import TokenAuth
1818
from common.auth.authentication import has_permissions
19-
from common.constants.permission_constants import PermissionConstants
19+
from common.constants.permission_constants import PermissionConstants, RoleConstants
2020
from common.result import result
2121
from common.utils.common import query_params_to_single_dict
2222

@@ -34,7 +34,8 @@ class ApplicationChat(APIView):
3434
responses=ApplicationChatQueryAPI.get_response(),
3535
tags=[_("Application/Conversation Log")] # type: ignore
3636
)
37-
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission())
37+
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission(),
38+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
3839
def get(self, request: Request, workspace_id: str, application_id: str):
3940
return result.success(ApplicationChatQuerySerializers(
4041
data={**query_params_to_single_dict(request.query_params), 'application_id': application_id,
@@ -53,7 +54,8 @@ class Page(APIView):
5354
responses=ApplicationChatQueryPageAPI.get_response(),
5455
tags=[_("Application/Conversation Log")] # type: ignore
5556
)
56-
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission())
57+
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission(),
58+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
5759
def get(self, request: Request, workspace_id: str, application_id: str, current_page: int, page_size: int):
5860
return result.success(ApplicationChatQuerySerializers(
5961
data={**query_params_to_single_dict(request.query_params), 'application_id': application_id,
@@ -73,7 +75,8 @@ class Export(APIView):
7375
responses=ApplicationChatExportAPI.get_response(),
7476
tags=[_("Application/Conversation Log")] # type: ignore
7577
)
76-
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG_EXPORT.get_workspace_application_permission())
78+
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG_EXPORT.get_workspace_application_permission(),
79+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
7780
def post(self, request: Request, workspace_id: str, application_id: str):
7881
return ApplicationChatQuerySerializers(
7982
data={**query_params_to_single_dict(request.query_params), 'application_id': application_id,

apps/application/views/application_chat_record.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ class Page(APIView):
5656
responses=ApplicationChatRecordQueryAPI.get_response(),
5757
tags=[_("Application/Conversation Log")] # type: ignore
5858
)
59-
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission())
59+
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission(),
60+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
6061
def get(self, request: Request, workspace_id: str, application_id: str, chat_id: str, current_page: int,
6162
page_size: int):
6263
return result.success(ApplicationChatRecordQuerySerializers(
@@ -79,7 +80,8 @@ class ApplicationChatRecordAddKnowledge(APIView):
7980
responses=ApplicationChatRecordAddKnowledgeAPI.get_response(),
8081
tags=[_("Application/Conversation Log")] # type: ignore
8182
)
82-
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission())
83+
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission(),
84+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
8385
def post(self, request: Request, workspace_id: str, application_id: str):
8486
return result.success(ApplicationChatRecordAddKnowledgeSerializer().post_improve(request.data))
8587

@@ -97,7 +99,8 @@ class ApplicationChatRecordImprove(APIView):
9799
responses=ApplicationChatRecordQueryAPI.get_response(),
98100
tags=[_("Application/Conversation Log")] # type: ignore
99101
)
100-
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission())
102+
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG.get_workspace_application_permission(),
103+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
101104
def get(self, request: Request, workspace_id: str, application_id: str, chat_id: str, chat_record_id: str):
102105
return result.success(ChatRecordImproveSerializer(
103106
data={'chat_id': chat_id, 'chat_record_id': chat_record_id}).get())
@@ -116,7 +119,8 @@ class ApplicationChatRecordImproveParagraph(APIView):
116119
responses=ApplicationChatRecordImproveParagraphAPI.get_response(),
117120
tags=[_("Application/Conversation Log")] # type: ignore
118121
)
119-
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG_ANNOTATION.get_workspace_application_permission())
122+
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG_ANNOTATION.get_workspace_application_permission(),
123+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
120124
def put(self, request: Request,
121125
workspace_id: str,
122126
application_id: str,
@@ -141,7 +145,8 @@ class Operate(APIView):
141145
responses=ApplicationChatRecordImproveParagraphAPI.Operate.get_response(),
142146
tags=[_("Application/Conversation Log")] # type: ignore
143147
)
144-
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG_ANNOTATION.get_workspace_application_permission())
148+
@has_permissions(PermissionConstants.APPLICATION_CHAT_LOG_ANNOTATION.get_workspace_application_permission(),
149+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
145150
def delete(self, request: Request, workspace_id: str, application_id: str, chat_id: str, chat_record_id: str,
146151
knowledge_id: str,
147152
document_id: str, paragraph_id: str):

apps/application/views/application_stats.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
from common.auth import TokenAuth
1717
from django.utils.translation import gettext_lazy as _
1818

19+
from common.auth.authentication import has_permissions
20+
from common.constants.permission_constants import PermissionConstants, RoleConstants
21+
1922

2023
class ApplicationStats(APIView):
2124
authentication_classes = [TokenAuth]
@@ -29,6 +32,8 @@ class ApplicationStats(APIView):
2932
responses=ApplicationStatsAPI.get_response(),
3033
tags=[_('Application')] # type: ignore
3134
)
35+
@has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_application_permission(),
36+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
3237
def get(self, request: Request, workspace_id: str, application_id: str):
3338
return result.success(
3439
ApplicationStatisticsSerializer(data={'application_id': application_id,

0 commit comments

Comments
 (0)