Skip to content

Commit 16c5c4e

Browse files
committed
feat: trigger page
1 parent a26273c commit 16c5c4e

3 files changed

Lines changed: 73 additions & 35 deletions

File tree

apps/trigger/serializers/trigger.py

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
from common import result
3838
from common.cache_data.application_access_token_cache import del_application_access_token
3939
from common.database_model_manage.database_model_manage import DatabaseModelManage
40-
from common.db.search import native_search, native_page_search
40+
from common.db.search import native_search, native_page_search, page_search
4141
from common.exception.app_exception import AppApiException
4242
from common.field.common import UploadedFileField
4343
from common.utils.common import get_file_content, restricted_loads, generate_uuid, _remove_empty_lines, \
@@ -59,10 +59,10 @@
5959
from users.serializers.user import is_workspace_manage
6060

6161

62-
6362
class TriggerTaskCreateRequest(serializers.Serializer):
6463
pass
6564

65+
6666
class TriggerCreateRequest(serializers.Serializer):
6767
name = serializers.CharField(required=True, label=_('trigger name'))
6868
desc = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_('trigger description'))
@@ -73,12 +73,12 @@ class TriggerCreateRequest(serializers.Serializer):
7373
trigger_task = serializers
7474

7575

76-
7776
class TriggerResponse(serializers.ModelSerializer):
7877
class Meta:
7978
model = Trigger
8079
fields = "__all__"
8180

81+
8282
class TriggerSerializer(serializers.Serializer):
8383
workspace_id = serializers.CharField(required=True, label=_('workspace id'))
8484
user_id = serializers.UUIDField(required=True, label=_("User ID"))
@@ -102,24 +102,43 @@ def insert(self, instance, with_valid=True):
102102
)
103103
trigger_model.save()
104104

105-
106-
107105
return TriggerResponse(trigger_model).data
108106

107+
109108
class TriggerOperateSerializer(serializers.Serializer):
110-
trigger_id = serializers.UUIDField(required=True, label=_('trigger id'))
111-
user_id = serializers.UUIDField(required=True, label=_("User ID"))
112-
workspace_id = serializers.CharField(required=True, label=_('workspace id'))
109+
trigger_id = serializers.UUIDField(required=True, label=_('trigger id'))
110+
user_id = serializers.UUIDField(required=True, label=_("User ID"))
111+
workspace_id = serializers.CharField(required=True, label=_('workspace id'))
113112

114-
def is_valid(self, *, raise_exception=False):
115-
super().is_valid(raise_exception=True)
116-
workspace_id = self.data.get('workspace_id')
117-
query_set = QuerySet(Trigger).filter(id=self.data.get('trigger_id'))
118-
if workspace_id:
119-
query_set = query_set.filter(workspace_id=workspace_id)
120-
if not query_set.exists():
121-
raise AppApiException(500, _('Trigger id does not exist'))
113+
def is_valid(self, *, raise_exception=False):
114+
super().is_valid(raise_exception=True)
115+
workspace_id = self.data.get('workspace_id')
116+
query_set = QuerySet(Trigger).filter(id=self.data.get('trigger_id'))
117+
if workspace_id:
118+
query_set = query_set.filter(workspace_id=workspace_id)
119+
if not query_set.exists():
120+
raise AppApiException(500, _('Trigger id does not exist'))
122121

123122

123+
class TriggerQuerySerializer(serializers.Serializer):
124+
name = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_('Trigger name'))
125+
type = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_('Trigger type'))
126+
workspace_id = serializers.CharField(required=True, label=_('workspace id'))
124127

128+
def get_query_set(self):
129+
query_set = QuerySet(Trigger).filter(workspace_id=self.data.get("workspace_id"))
130+
if self.data.get("name"):
131+
query_set = query_set.filter(name__contains=self.data.get('name'))
132+
if self.data.get('type'):
133+
query_set = query_set.filter(trigger_type=self.data.get('type'))
134+
return query_set
125135

136+
def page(self, current_page: int, page_size: int, with_valid=True):
137+
if with_valid:
138+
self.is_valid(raise_exception=True)
139+
return page_search(current_page, page_size, self.get_query_set(), lambda row: TriggerResponse(data=row).data)
140+
141+
def list(self, with_valid=True):
142+
if with_valid:
143+
self.is_valid(raise_exception=True)
144+
return [TriggerResponse(data=row).data for row in self.get_query_set()]

apps/trigger/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@
1414

1515
urlpatterns = [
1616
path('workspace/<str:workspace_id>/trigger', views.TriggerView.as_view(), name='trigger'),
17-
path('workspace/<str:workspace_id>/trigger/<int:current_page>/<int:page_size>', views.TriggerView.as_view(), name='trigger_page'),
17+
path('workspace/<str:workspace_id>/trigger/<int:current_page>/<int:page_size>', views.TriggerView.Page.as_view(),
18+
name='trigger_page'),
1819
]

apps/trigger/views/trigger.py

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,18 @@
66
@date:2026/1/14 11:44
77
@desc:
88
"""
9-
from django.db.models import QuerySet
10-
from django.http import HttpResponse
119
from django.utils.translation import gettext_lazy as _
1210
from drf_spectacular.utils import extend_schema
13-
from rest_framework.parsers import MultiPartParser
1411
from rest_framework.request import Request
1512
from rest_framework.views import APIView
1613

17-
from application.api.application_api import ApplicationCreateAPI, ApplicationQueryAPI, ApplicationImportAPI, \
18-
ApplicationExportAPI, ApplicationOperateAPI, ApplicationEditAPI, TextToSpeechAPI, SpeechToTextAPI, PlayDemoTextAPI
19-
from application.models import Application
20-
from application.serializers.application import ApplicationSerializer, Query, ApplicationOperateSerializer
14+
from application.api.application_api import ApplicationCreateAPI
2115
from common import result
2216
from common.auth import TokenAuth
23-
from common.auth.authentication import has_permissions, get_is_permissions
24-
from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
25-
from common.log.log import log
26-
from tools.api.tool import GetInternalToolAPI
27-
from trigger.serializers.trigger import TriggerSerializer
17+
from trigger.serializers.trigger import TriggerSerializer, TriggerQuerySerializer
2818

2919

30-
class TriggerApi(APIView):
20+
class TriggerView(APIView):
3121
authentication_classes = [TokenAuth]
3222

3323
@extend_schema(
@@ -40,13 +30,41 @@ class TriggerApi(APIView):
4030
responses=ApplicationCreateAPI.get_response(),
4131
tags=[_('Trigger')] # type: ignore
4232
)
43-
44-
4533
def post(self, request: Request, workspace_id: str):
4634
return result.success(TriggerSerializer(
47-
data={'workspace_id': workspace_id,'user_id': request.user.id}).insert(request.data))
48-
49-
35+
data={'workspace_id': workspace_id, 'user_id': request.user.id}).insert(request.data))
5036

37+
@extend_schema(
38+
methods=['GET'],
39+
description=_('Get the trigger list'),
40+
summary=_('Get the trigger list'),
41+
operation_id=_('Get the trigger list'), # type: ignore
42+
parameters=ApplicationCreateAPI.get_parameters(),
43+
request=ApplicationCreateAPI.get_request(),
44+
responses=ApplicationCreateAPI.get_response(),
45+
tags=[_('Trigger')] # type: ignore
46+
)
47+
def get(self, request: Request, workspace_id: str):
48+
return result.success(TriggerQuerySerializer(data={'workspace_id': workspace_id,
49+
'name': request.query_params.get('name'),
50+
'type': request.query_params.get('type')}).list())
5151

52+
class Page(APIView):
53+
authentication_classes = [TokenAuth]
5254

55+
@extend_schema(
56+
methods=['GET'],
57+
description=_('Get the trigger list by page'),
58+
summary=_('Get the trigger list by page'),
59+
operation_id=_('Get the trigger list by page'), # type: ignore
60+
parameters=ApplicationCreateAPI.get_parameters(),
61+
request=ApplicationCreateAPI.get_request(),
62+
responses=ApplicationCreateAPI.get_response(),
63+
tags=[_('Trigger')] # type: ignore
64+
)
65+
def get(self, request: Request, workspace_id: str, current_page: int, page_size: int):
66+
return result.success(TriggerQuerySerializer(data={
67+
'workspace_id': workspace_id,
68+
'name': request.query_params.get('name'),
69+
'type': request.query_params.get('type')
70+
}).page(current_page, page_size))

0 commit comments

Comments
 (0)