Skip to content

Commit

Permalink
refactor(mangas): update logic of read, update, and delete actions fo…
Browse files Browse the repository at this point in the history
…r reviews
  • Loading branch information
tyronejosee committed Jul 4, 2024
1 parent 0f97580 commit 765df7c
Show file tree
Hide file tree
Showing 5 changed files with 410 additions and 101 deletions.
5 changes: 3 additions & 2 deletions apps/animes/schemas.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Schemas for Animes App."""

from drf_spectacular.utils import extend_schema, OpenApiResponse
from drf_spectacular.utils import extend_schema, OpenApiResponse, OpenApiParameter

from apps.utils.serializers import PictureReadSerializer, VideoReadSerializer
from apps.characters.serializers import CharacterMinimalSerializer
Expand Down Expand Up @@ -131,7 +131,7 @@
},
),
"update_or_delete_review": extend_schema(
summary="Partial Update or Remove Anime",
summary="Partial Update or Remove Anime Review",
description="Update some fields or delete of a anime, only for `IsMember` or `IsAdministrator` users.",
responses={
200: OpenApiResponse(ReviewWriteSerializer, description="OK"),
Expand All @@ -141,6 +141,7 @@
403: OpenApiResponse(description="Forbidden"),
404: OpenApiResponse(description="Not Found"),
},
parameters=[OpenApiParameter("review_id", str, OpenApiParameter.PATH)],
methods=["PATCH", "DELETE"],
),
"get_recommendations": extend_schema(
Expand Down
4 changes: 0 additions & 4 deletions apps/animes/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,6 @@ def get_stats(self, request, *args, **kwargs):
- GET api/v1/animes/{id}/stats/
"""
anime = self.get_object()
# stats = AnimeStats.objects.get(anime_id=anime.pk)
stats = anime.stats # reverse relationship
if stats:
serializer = AnimeStatsReadSerializer(stats)
Expand Down Expand Up @@ -234,9 +233,6 @@ def create_review(self, request, *args, **kwargs):
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

# @extend_schema(
# parameters=[OpenApiParameter("review_id", str, OpenApiParameter.PATH)]
# )
@action(
detail=True,
methods=["patch", "delete"],
Expand Down
85 changes: 59 additions & 26 deletions apps/mangas/schemas.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
"""Schemas for Mangas App."""

from drf_spectacular.utils import extend_schema, OpenApiResponse
from drf_spectacular.utils import extend_schema, OpenApiResponse, OpenApiParameter

from apps.utils.serializers import PictureReadSerializer
from apps.characters.serializers import CharacterMinimalSerializer
from apps.news.serializers import NewsMinimalSerializer
from apps.reviews.serializers import ReviewReadSerializer, ReviewWriteSerializer
from .serializers import (
MagazineReadSerializer,
MagazineWriteSerializer,
Expand All @@ -22,9 +23,9 @@
responses={
200: OpenApiResponse(MagazineReadSerializer(many=True), description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[]
auth=[],
),
"create": extend_schema(
summary="Create Magazine",
Expand All @@ -42,10 +43,9 @@
responses={
200: OpenApiResponse(MagazineReadSerializer, description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[]

auth=[],
),
"update": extend_schema(
summary="Update Magazine",
Expand Down Expand Up @@ -79,7 +79,7 @@
403: OpenApiResponse(description="Forbidden"),
404: OpenApiResponse(description="Not Found"),
},
)
),
}


Expand All @@ -90,9 +90,9 @@
responses={
200: OpenApiResponse(MangaMinimalSerializer(many=True), description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[]
auth=[],
),
"create": extend_schema(
summary="Create Manga",
Expand All @@ -110,10 +110,9 @@
responses={
200: OpenApiResponse(MangaReadSerializer, description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[]

auth=[],
),
"update": extend_schema(
summary="Update Manga",
Expand Down Expand Up @@ -152,43 +151,77 @@
summary="Get Manga Characters",
description="Get all characters of an manga passed as param (`uuid`).",
responses={
200: OpenApiResponse(CharacterMinimalSerializer(many=True), description="OK"),
200: OpenApiResponse(
CharacterMinimalSerializer(many=True), description="OK"
),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[]
auth=[],
),
"get_stats": extend_schema(
summary="Get Manga Stats",
description="Get all stats of an manga passed as param (`uuid`).",
responses={
200: OpenApiResponse(MangaStatsReadSerializer(many=True), description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[],
),
"get_reviews": extend_schema(
summary="Get Manga Reviews",
description="Get reviews of the manga passed as param (`uuid`).",
responses={
200: OpenApiResponse(ReviewReadSerializer(many=True), description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found"),
},
auth=[],
),
"create_review": extend_schema(
summary="Create Manga Review",
description="Create a new review for manga, only for `IsMember`",
responses={
201: OpenApiResponse(ReviewWriteSerializer, description="Created"),
400: OpenApiResponse(description="Bad request"),
401: OpenApiResponse(description="Unauthorized"),
403: OpenApiResponse(description="Forbidden"),
},
auth=[]
),
# TODO: Add schema for review_list, pending refactor
# TODO: Add schema for review_detail and review_id param, pending refactor
"update_or_delete_review": extend_schema(
summary="Partial Update or Remove Manga Review",
description="Update some fields or delete of a manga, only for `IsMember` or `IsAdministrator` users.",
responses={
200: OpenApiResponse(ReviewWriteSerializer, description="OK"),
204: OpenApiResponse(description="No Content"),
400: OpenApiResponse(description="Bad request"),
401: OpenApiResponse(description="Unauthorized"),
403: OpenApiResponse(description="Forbidden"),
404: OpenApiResponse(description="Not Found"),
},
parameters=[OpenApiParameter("review_id", str, OpenApiParameter.PATH)],
methods=["PATCH", "DELETE"],
),
"get_recommendations": extend_schema(
summary="Get Manga Recommendations",
description="Get all recommendations of an manga passed as param (`uuid`).",
responses={
200: OpenApiResponse(MangaMinimalSerializer(many=True), description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[]
auth=[],
),
"get_news": extend_schema(
summary="Get Manga News",
description="Get all news of an manga passed as param (`uuid`).",
responses={
200: OpenApiResponse(NewsMinimalSerializer(many=True), description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[]
auth=[],
),
# "get_forum": extend_schema(),
"get_pictures": extend_schema(
Expand All @@ -197,8 +230,8 @@
responses={
200: OpenApiResponse(PictureReadSerializer(many=True), description="OK"),
400: OpenApiResponse(description="Bad request"),
404: OpenApiResponse(description="Not found")
404: OpenApiResponse(description="Not found"),
},
auth=[]
)
auth=[],
),
}
Loading

0 comments on commit 765df7c

Please sign in to comment.