Skip to content

Commit

Permalink
Fix: 리뷰 default ordering 수정 및 Swagger 주석#29
Browse files Browse the repository at this point in the history
  • Loading branch information
separk314 committed Aug 14, 2023
1 parent 3d5a71f commit aab2abd
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 12 deletions.
16 changes: 8 additions & 8 deletions review/review_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def put_review(request, review) -> ResponseDto:

def get_all_review_list() -> ResponseDto:
review_list = []
reviews = Review.objects.all()
reviews = Review.objects.all().order_by('-created_at') # created_at 필드 기준으로 내림차순 정렬
for review in reviews:
images = Image.objects.filter(review__rid=review.rid)
review_data = ReviewSerializer(review).data
Expand All @@ -67,14 +67,14 @@ def get_all_review_list() -> ResponseDto:


def get_user_review_list(user) -> ResponseDto:
reviews = Review.objects.filter(writer=user) # 해당 유저가 쓴 리뷰들 가져오기
reviews = Review.objects.filter(writer=user).order_by('-created_at') # created_at 필드 기준으로 내림차순 정렬
serializer = ReviewSerializer(reviews, many=True) # Review 객체들을 직렬화
return ResponseDto(status=200, data=serializer.data, msg=message['UserReviewListGetSuccess'])


def get_review_list_in_progrm(progrmRegistNo) -> ResponseDto:
review_list = []
reviews = Review.objects.filter(progrmRegistNo=progrmRegistNo)
reviews = Review.objects.filter(progrmRegistNo=progrmRegistNo).order_by('-created_at') # created_at 필드 기준으로 내림차순 정렬
for review in reviews:
images = Image.objects.filter(review__rid=review.rid)
review_data = ReviewSerializer(review).data
Expand All @@ -94,7 +94,7 @@ def get_one_review(rid) -> ResponseDto:
return ResponseDto(status=404, msg=message['ReviewNotFound'])


def delete_review(review):
def delete_review(review) -> ResponseDto:
res = delete_images_db(review.rid)
review.delete()
if res == 204: # 삭제 성공
Expand All @@ -106,23 +106,23 @@ def delete_review(review):


### 리뷰 응원하기
def cheer_review(user, rid):
def cheer_review(user, rid) -> ResponseDto:
try:
review = Review.objects.get(rid=rid)
except Review.DoesNotExist:
return ResponseDto(status=400, msg=message['ReviewNotFound'])
return ResponseDto(status=404, msg=message['ReviewNotFound'])

cheer, is_created = Cheered_Review.objects.get_or_create(writer=user, review=review)
if is_created:
return ResponseDto(status=201, msg=message['CheerReviewSuccess'])
else:
return ResponseDto(status=400, msg=message['AlreadyCheered'])

def cancel_cheering_review(user, rid):
def cancel_cheering_review(user, rid) -> ResponseDto:
try:
review = Review.objects.get(rid=rid)
except Review.DoesNotExist:
return ResponseDto(status=400, msg=message['ReviewNotFound'])
return ResponseDto(status=404, msg=message['ReviewNotFound'])

try:
cheered_review = Cheered_Review.objects.get(writer=user, review=review)
Expand Down
7 changes: 6 additions & 1 deletion review/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,9 @@ class Meta:
class ReviewSwaggerSerializer(serializers.ModelSerializer):
class Meta:
model = Review
exclude = ('rid', 'writer')
exclude = ('rid', 'writer')

class DefaultSwaggerSerializer(serializers.ModelSerializer):
class Meta:
model = Cheered_Review
fields = []
47 changes: 44 additions & 3 deletions review/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,7 @@ def post(self, request):
@swagger_auto_schema(
responses= {
200: '리뷰 리스트 조회 성공',
400: 'Bad Request',
401: '권한 없음'
400: 'Bad Request'
})
def get(self, request):
'''
Expand Down Expand Up @@ -151,6 +150,7 @@ def put(self, request, rid):
manual_parameters = [parameter_token],
responses= {
204: message['ReviewDeleteSuccess'],
401: '권한 없음',
404: message['ReviewNotFound']
}
)
Expand Down Expand Up @@ -192,6 +192,7 @@ def get(self, request, rid):
response = {
201: message['CommentCreateSuccess'],
400: 'Bad Request',
401: '권한 없음',
404: message['ReviewNotFound']
}
)
Expand All @@ -214,6 +215,7 @@ class CommentDetail(GenericAPIView):
response = {
200: message['CommentPutSuccess'],
400: 'Bad Request',
401: '권한 없음',
404: message['ReviewNotFound']
}
)
Expand All @@ -234,6 +236,7 @@ def put(self, request, rid, cid):
manual_parameters = [parameter_token],
response = {
204: message['CommentDeleteSuccess'],
401: '권한 없음',
404: 'Not Found'
}
)
Expand All @@ -250,10 +253,22 @@ def delete(self, request, rid, cid):


### 리뷰 응원하기 ###
class ReviewCheerGetView(APIView):
class ReviewCheerGetView(GenericAPIView):
permission_classes = [IsAuthenticated]
serializer_class = DefaultSwaggerSerializer

@swagger_auto_schema(
manual_parameters = [parameter_token],
response = {
200: message['CheeredReviewListGetSuccess'],
401: '권한 없음',
404: 'Not Found'
}
)
def get(self, request):
'''
## 로그인한 유저가 응원한 리뷰 리스트 조회
'''
cheered_reviews = Cheered_Review.objects.filter(writer=request.user)
review_id_list = list(cheered_reviews.values_list('review', flat=True))
res = ResponseDto(status=200, data=review_id_list, msg=message["CheeredReviewListGetSuccess"])
Expand All @@ -262,13 +277,39 @@ def get(self, request):

class ReviewCheerView(APIView):
permission_classes = [IsAuthenticated]
serializer_class = DefaultSwaggerSerializer

@swagger_auto_schema(
manual_parameters = [parameter_token],
response = {
201: message['CheerReviewSuccess'],
400: 'Bad Request',
401: '권한 없음',
404: message['ReviewNotFound']
}
)
def post(self, request, rid):
'''
## 특정 리뷰를 응원하기
'''
user = request.user
res = cheer_review(user, rid)
return responseFactory(res)


@swagger_auto_schema(
manual_parameters = [parameter_token],
response = {
200: message['CancelCheeringSuccess'],
400: 'Bad Request',
401: '권한 없음',
404: message['ReviewNotFound']
}
)
def delete(self, request, rid):
'''
## 특정 리뷰 응원 취소하기
'''
user = request.user
res = cancel_cheering_review(user, rid)
return responseFactory(res)

0 comments on commit aab2abd

Please sign in to comment.