From c2127268765c91b09ea14c9592e68cf1f67e1ee2 Mon Sep 17 00:00:00 2001 From: yjoonjang Date: Wed, 10 Apr 2024 16:55:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=8A=B9=EC=A0=95=20=EC=9E=90=EC=86=8C?= =?UTF-8?q?=EC=84=9C=20=EB=B0=9B=EC=95=84=EC=98=A4=EB=8A=94=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- memos/urls.py | 2 +- resume/urls.py | 3 +- resume/views.py | 87 +++++++++++++++++++++++++++++++------------------ 3 files changed, 59 insertions(+), 33 deletions(-) diff --git a/memos/urls.py b/memos/urls.py index c04ef75..d91bddf 100644 --- a/memos/urls.py +++ b/memos/urls.py @@ -5,7 +5,7 @@ urlpatterns = [ path("", views.PostMemoView.as_view(), name="post_memo"), path("all", views.GetAllMemoView.as_view(), name="get_all_memos"), - path("memo/", views.GetMemoDetailView.as_view(), name="memo-detail"), + path("", views.GetMemoDetailView.as_view(), name="memo-detail"), path("update/", views.UpdateMemoView.as_view(), name="scrap-memo"), path("delete/", views.DeleteMemoView.as_view(), name="delete-memo"), path("search", views.SearchMemoView.as_view(), name="search-memo"), diff --git a/resume/urls.py b/resume/urls.py index c06c361..34834bf 100644 --- a/resume/urls.py +++ b/resume/urls.py @@ -6,8 +6,9 @@ path("all", views.GetAllResumeView.as_view(), name="get_all_resume"), path("guidelines", views.GetGuidelinesView.as_view(), name="get_guidelines"), path("generate", views.GenerateResumeView.as_view(), name="generate_resume"), - path("", views.PostResumeView.as_view(), name="post_resume"), + # path("", views.PostResumeView.as_view(), name="post_resume"), path("update/", views.UpdateResumeView.as_view(), name="update_resume"), path("scrap/", views.ScrapResumeView.as_view(), name="scrap_resume"), path("chat", views.ChatView.as_view(), name="chat"), + path("", views.GetResumeView.as_view(), name="update_resume"), ] diff --git a/resume/views.py b/resume/views.py index a56119b..9804b36 100644 --- a/resume/views.py +++ b/resume/views.py @@ -216,51 +216,75 @@ def post(self, request): # 데이터 유효성 검사 if serializer.is_valid(): # 유효한 데이터의 경우, 자소서 저장 - serializer.save( + saved_instance = serializer.save( user=request.user ) # 현재 로그인한 사용자를 자소서의 user 필드에 저장 - return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response({"id": saved_instance.id}, status=status.HTTP_201_CREATED) else: # 데이터가 유효하지 않은 경우, 에러 메시지 반환 return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) -class PostResumeView(APIView): +# class PostResumeView(APIView): +# permission_classes = [IsAuthenticated] +# +# @extend_schema( +# summary="자기소개서 등록", +# description="자기소개서를 등록합니다.", +# responses={200: PostResumeSerializer}, +# request={ +# "application/json": { +# "type": "object", +# "properties": { +# "title": {"type": "string"}, +# "position": {"type": "string"}, +# "content": {"type": "string"}, +# "due_date": {"type": "string"}, +# }, +# }, +# }, +# ) +# def post(self, request): +# serializer = PostResumeSerializer(data=request.data) +# +# # 데이터 유효성 검사 +# if serializer.is_valid(): +# # 유효한 데이터의 경우, 자소서 저장 +# serializer.save( +# user=request.user +# ) # 현재 로그인한 사용자를 메모의 user 필드에 저장 +# return Response(serializer.data, status=status.HTTP_201_CREATED) +# else: +# # 데이터가 유효하지 않은 경우, 에러 메시지 반환 +# return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + +class GetResumeView(APIView): permission_classes = [IsAuthenticated] + def get_object(self, pk, user): + try: + resume = Resume.objects.get(pk=pk) + # 메모를 작성한 유저와 현재 요청 유저가 동일한지 확인 + if resume.user != user: + raise Http404("해당 메모에 접근할 권한이 없습니다.") + return resume + except resume.DoesNotExist: + raise Http404 + @extend_schema( - summary="자기소개서 등록", - description="자기소개서를 등록합니다.", + summary="특정 자소서를 받아옵니다.", + description="사용자가 작성한 특정 자소서의 디테일을 받아옵니다.", responses={200: PostResumeSerializer}, - request={ - "application/json": { - "type": "object", - "properties": { - "title": {"type": "string"}, - "position": {"type": "string"}, - "content": {"type": "string"}, - "due_date": {"type": "string"}, - }, - }, - }, ) - def post(self, request): - serializer = PostResumeSerializer(data=request.data) - - # 데이터 유효성 검사 - if serializer.is_valid(): - # 유효한 데이터의 경우, 자소서 저장 - serializer.save( - user=request.user - ) # 현재 로그인한 사용자를 메모의 user 필드에 저장 - return Response(serializer.data, status=status.HTTP_201_CREATED) - else: - # 데이터가 유효하지 않은 경우, 에러 메시지 반환 - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + def get(self, request, pk, format=None): + print(pk) + resume = self.get_object(pk, request.user) + serializer = PostResumeSerializer(resume) + return Response(serializer.data, status=status.HTTP_200_OK) class UpdateResumeView(APIView): - permission_classes = [IsAuthenticated] # 인증된 사용자만 접근 가능하도록 설정 + permission_classes = [IsAuthenticated] @extend_schema( summary="자기소개서 업데이트", @@ -342,4 +366,5 @@ def post(self, request): return JsonResponse( {"answer": chatbot_answer}, status=status.HTTP_200_OK, - ) \ No newline at end of file + ) +