application_chat_link.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. """
  2. @project: MaxKB
  3. @Author: niu
  4. @file: application_chat_link.py
  5. @date: 2026/2/9 10:44
  6. @desc:
  7. """
  8. from django.utils.translation import gettext_lazy as _
  9. from drf_spectacular.utils import extend_schema
  10. from rest_framework.request import Request
  11. from rest_framework.views import APIView
  12. from application.api.application_chat_link import ChatRecordLinkAPI, ChatRecordDetailShareAPI
  13. from application.serializers.application_chat_link import ChatRecordShareLinkSerializer, ChatShareLinkDetailSerializer
  14. from common import result
  15. from common.auth import ChatTokenAuth
  16. class ChatRecordLinkView(APIView):
  17. authentication_classes = [ChatTokenAuth]
  18. @extend_schema(
  19. methods=['POST'],
  20. description=_("Generate share link"),
  21. summary=_("Generate share link"),
  22. operation_id=_("Generate share link"), # type: ignore
  23. request=ChatRecordLinkAPI.get_request(),
  24. parameters=ChatRecordLinkAPI.get_parameters(),
  25. responses=ChatRecordLinkAPI.get_response(),
  26. tags=[_("Chat record link")] # type: ignore
  27. )
  28. def post(self, request: Request, application_id: str, chat_id: str):
  29. return result.success(ChatRecordShareLinkSerializer(data={
  30. "application_id": application_id,
  31. "chat_id": chat_id,
  32. "user_id": request.auth.chat_user_id
  33. }).generate_link(request.data))
  34. class ChatRecordDetailView(APIView):
  35. @extend_schema(
  36. methods=['GET'],
  37. description=_("Get chat record by share link"),
  38. summary=_("Get chat record by share link"),
  39. operation_id=_("Get chat record by share link"), # type: ignore
  40. parameters=ChatRecordDetailShareAPI.get_parameters(),
  41. responses=ChatRecordDetailShareAPI.get_response(),
  42. tags=[_("Chat record link")] # type: ignore
  43. )
  44. def get(self, request, link: str):
  45. return result.success(
  46. ChatShareLinkDetailSerializer(data={'link':link}).get_record_list()
  47. )