feat: 对话日志,删除

This commit is contained in:
shaohuzhang1 2023-12-06 16:29:14 +08:00
parent 5db9ce45c3
commit 9ed8aa91bb
4 changed files with 38 additions and 2 deletions

View File

@ -36,6 +36,16 @@ chat_cache = cache
class ChatSerializers(serializers.Serializer):
class Operate(serializers.Serializer):
chat_id = serializers.UUIDField(required=True)
application_id = serializers.UUIDField(required=True)
def delete(self, with_valid=True):
if with_valid:
self.is_valid(raise_exception=True)
QuerySet(Chat).filter(id=self.data.get('chat_id'), application_id=self.data.get('application_id')).delete()
return True
class Query(serializers.Serializer):
abstract = serializers.CharField(required=False)
history_day = serializers.IntegerField(required=True)
@ -48,7 +58,10 @@ class ChatSerializers(serializers.Serializer):
def get_query_set(self):
end_time = self.get_end_time()
return QuerySet(Chat).filter(application_id=self.data.get("application_id"), create_time__gte=end_time)
query_dict = {'application_id': self.data.get("application_id"), 'create_time__gte': end_time}
if 'abstract' in self.data and self.data.get('abstract') is not None:
query_dict['abstract'] = self.data.get('abstract')
return QuerySet(Chat).filter(**query_dict)
def list(self, with_valid=True):
if with_valid:

View File

@ -61,7 +61,9 @@ class ChatApi(ApiMixin):
in_=openapi.IN_QUERY,
type=openapi.TYPE_NUMBER,
required=True,
description='历史天数')
description='历史天数'),
openapi.Parameter(name='abstract', in_=openapi.IN_QUERY, type=openapi.TYPE_STRING, required=False,
description="摘要")
]

View File

@ -20,6 +20,7 @@ urlpatterns = [
path("application/chat/open", views.ChatView.OpenTemp.as_view()),
path('application/<str:application_id>/chat', views.ChatView.as_view(), name='chats'),
path('application/<str:application_id>/chat/<int:current_page>/<int:page_size>', views.ChatView.Page.as_view()),
path('application/<str:application_id>/chat/<chat_id>', views.ChatView.Operate.as_view()),
path('application/<str:application_id>/chat/<chat_id>/chat_record/', views.ChatView.ChatRecord.as_view()),
path('application/<str:application_id>/chat/<chat_id>/chat_record/<int:current_page>/<int:page_size>',
views.ChatView.ChatRecord.Page.as_view()),

View File

@ -90,6 +90,26 @@ class ChatView(APIView):
data={**query_params_to_single_dict(request.query_params), 'application_id': application_id,
'user_id': request.user.id}).list())
class Operate(APIView):
authentication_classes = [TokenAuth]
@action(methods=['DELETE'], detail=False)
@swagger_auto_schema(operation_summary="删除对话",
operation_id="删除对话",
tags=["应用/对话日志"])
@has_permissions(ViewPermission(
[RoleConstants.ADMIN, RoleConstants.USER],
[lambda r, keywords: Permission(group=Group.APPLICATION, operate=Operate.MANAGE,
dynamic_tag=keywords.get('application_id'))],
compare=CompareConstants.AND), lambda r, k: Permission(group=Group.APPLICATION, operate=Operate.DELETE,
dynamic_tag=k.get('application_id')),
compare=CompareConstants.AND)
def delete(self, request: Request, application_id: str, chat_id: str):
return result.success(
ChatSerializers.Operate(
data={'application_id': application_id, 'user_id': request.user.id,
'chat_id': chat_id}).delete())
class Page(APIView):
authentication_classes = [TokenAuth]