Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions apps/homepage/api/home_page_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,12 @@ def get_parameters():
type=OpenApiTypes.STR,
required=True,
),
OpenApiParameter(
name="name",
description="Name",
type=OpenApiTypes.STR,
required=False,
),
OpenApiParameter(
name="end_time",
description="end Time",
Expand Down
12 changes: 12 additions & 0 deletions apps/homepage/serializers/homepage.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ class ApplicationUserTokenRanking(serializers.Serializer):
workspace_id = serializers.CharField(required=False, label=_("Workspace ID"))
user_id = serializers.UUIDField(required=True, label=_("User ID"))
start_time = serializers.DateField(format='%Y-%m-%d', label=_("Start time"))
name = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("User Name"))
end_time = serializers.DateField(format='%Y-%m-%d', label=_("End time"))

def ranking(self, auth, current_page, page_size, with_valid=True):
Expand All @@ -122,6 +123,7 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
user_id = self.validated_data.get("user_id")
start_time = get_format_time(self.data.get("start_time"))
end_time = get_format_time(self.data.get("end_time"))
name = self.data.get("name")
base_queryset = Chat.objects.filter(
is_deleted=False,
chat_user_id__isnull=False,
Expand All @@ -130,6 +132,8 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
).exclude(
chat_user_id=""
)
if name:
base_queryset = base_queryset.filter(asker__username__contains=name)

workspace_manage = is_workspace_manage(auth, workspace_id)
if workspace_manage:
Expand Down Expand Up @@ -210,6 +214,7 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
class ApplicationQuestionRanking(serializers.Serializer):
workspace_id = serializers.CharField(required=False, label=_('Workspace ID'))
user_id = serializers.UUIDField(required=True, label=_("User ID"))
name = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("Application Name"))
start_time = serializers.DateField(format='%Y-%m-%d', label=_("Start time"))
end_time = serializers.DateField(format='%Y-%m-%d', label=_("End time"))

Expand All @@ -220,6 +225,9 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
workspace_id = self.validated_data.get("workspace_id")
user_id = self.validated_data.get("user_id")
queryset = Application.objects.filter(workspace_id=workspace_id)
name = self.data.get("name")
if name:
queryset = queryset.filter(name__contains=name)
start_time = get_format_time(self.data.get("start_time"))
end_time = get_format_time(self.data.get("end_time"))
queryset = queryset.filter(
Expand Down Expand Up @@ -287,6 +295,7 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
class ApplicationTokensRanking(serializers.Serializer):
workspace_id = serializers.CharField(required=False, label=_('Workspace ID'))
user_id = serializers.UUIDField(required=True, label=_("User ID"))
name = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("Application Name"))
start_time = serializers.DateField(format='%Y-%m-%d', label=_("Start time"))
end_time = serializers.DateField(format='%Y-%m-%d', label=_("End time"))

Expand All @@ -295,6 +304,7 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
self.is_valid(raise_exception=True)
start_time = get_format_time(self.data.get('start_time'))
end_time = get_format_time(self.data.get('end_time'))
name = self.data.get("name")
workspace_id = self.data.get("workspace_id")
user_id = self.data.get("user_id")

Expand All @@ -306,6 +316,8 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
queryset = Application.objects.filter(
create_time__gte=start_time,
create_time__lte=end_time)
if name:
queryset = queryset.filter(name__contains=name)

workspace_manage = is_workspace_manage(auth, workspace_id)

Expand Down
27 changes: 15 additions & 12 deletions apps/homepage/views/homepage.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,28 +63,30 @@ def get(self, request: Request, workspace_id: str, current_page: int, page_size:
'start_time': request.query_params.get(
'start_time'),
'end_time': request.query_params.get(
'end_time')
'end_time'),
"name": request.query_params.get("name")
}).ranking(request.auth, current_page, page_size))

@extend_schema(
methods=["GET"],
description=_("Top applications by question count"),
summary=_("Top applications by question count"),
operation_id="homepage_application_question_ranking",
parameters=ApplicationQuestionRankingAPI.get_parameters(),
responses=ApplicationQuestionRankingAPI.get_response(),
tags=[_("Home page")],
)
class ApplicationQuestionRanking(APIView):
authentication_classes = [TokenAuth]

@extend_schema(
methods=["GET"],
description=_("Top applications by question count"),
summary=_("Top applications by question count"),
operation_id="homepage_application_question_ranking",
parameters=ApplicationQuestionRankingAPI.get_parameters(),
responses=ApplicationQuestionRankingAPI.get_response(),
tags=[_("Home page")],
)
def get(self, request: Request, workspace_id: str, current_page: int, page_size: int):
return result.success(HomePageSerializer.ApplicationQuestionRanking(
data={'user_id': request.user.id, 'workspace_id': workspace_id,
'start_time': request.query_params.get(
'start_time'),
'end_time': request.query_params.get(
'end_time')
'end_time'),
"name": request.query_params.get("name")
}).ranking(request.auth, current_page, page_size))

class UserTokensRanking(APIView):
Expand All @@ -105,7 +107,8 @@ def get(self, request: Request, workspace_id: str, current_page: int, page_size:
'start_time': request.query_params.get(
'start_time'),
'end_time': request.query_params.get(
'end_time')})
'end_time'),
"name": request.query_params.get("name")})
.ranking(request.auth, current_page, page_size))

class ApplicationMonitoring(APIView):
Expand Down
Loading