API: add tags
This commit is contained in:
parent
da15881310
commit
06087ab8a8
4 changed files with 64 additions and 44 deletions
|
@ -25,12 +25,12 @@ class SearchResult(Schema):
|
|||
count: int
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/catalog/search",
|
||||
response={200: SearchResult, 400: Result},
|
||||
summary="Search items in catalog",
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def search_item(
|
||||
request, query: str, category: AvailableItemCategory | None = None, page: int = 1
|
||||
|
@ -55,12 +55,12 @@ def search_item(
|
|||
return 200, {"data": items, "pages": num_pages, "count": count}
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/catalog/fetch",
|
||||
response={200: ItemSchema, 202: Result, 404: Result},
|
||||
summary="Fetch item from URL of a supported site",
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def fetch_item(request, url: str):
|
||||
"""
|
||||
|
@ -97,101 +97,101 @@ def _get_item(cls, uuid, response):
|
|||
return item
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/book/{uuid}",
|
||||
response={200: EditionSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_book(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Edition, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/movie/{uuid}",
|
||||
response={200: MovieSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_movie(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Movie, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/tv/{uuid}",
|
||||
response={200: TVShowSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_tv_show(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(TVShow, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/tv/season/{uuid}",
|
||||
response={200: TVSeasonSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_tv_season(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(TVSeason, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/tv/episode/{uuid}",
|
||||
response={200: TVEpisodeSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_tv_episode(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(TVEpisode, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/podcast/{uuid}",
|
||||
response={200: PodcastSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_podcast(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Podcast, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/album/{uuid}",
|
||||
response={200: AlbumSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_album(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Album, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/game/{uuid}",
|
||||
response={200: GameSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_game(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Game, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/performance/{uuid}",
|
||||
response={200: PerformanceSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_performance(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Performance, uuid, response)
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/performance/production/{uuid}",
|
||||
response={200: PerformanceProductionSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
tags=["catalog"],
|
||||
)
|
||||
def get_performance_production(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(PerformanceProduction, uuid, response)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<link rel="stylesheet"
|
||||
href="https://unpkg.com/swagger-ui-dist@5.1.0/swagger-ui.css"
|
||||
href="https://unpkg.com/swagger-ui-dist@5.11.1/swagger-ui.css"
|
||||
crossorigin="anonymous"
|
||||
referrerpolicy="no-referrer" />
|
||||
<title>{{ api.title }} Developer Console</title>
|
||||
|
@ -24,6 +24,12 @@
|
|||
background-color: white;
|
||||
padding: 0;
|
||||
}
|
||||
#swagger-ui>div>div>.wrapper button {
|
||||
background-color: unset;
|
||||
}
|
||||
#swagger-ui>div>div>.wrapper button.btn.execute {
|
||||
background-color: #4990e2;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -86,7 +92,7 @@
|
|||
more endpoints can be found in API Documentation below.
|
||||
</details>
|
||||
<div id="swagger-ui" data-theme="light"></div>
|
||||
<script src="https://unpkg.com/swagger-ui-dist@5.1.0/swagger-ui-bundle.js"
|
||||
<script src="https://unpkg.com/swagger-ui-dist@5.11.1/swagger-ui-bundle.js"
|
||||
crossorigin="anonymous"
|
||||
referrerpolicy="no-referrer"></script>
|
||||
<script>
|
||||
|
|
|
@ -1,14 +1,24 @@
|
|||
from datetime import datetime
|
||||
from typing import List
|
||||
|
||||
from django.http import Http404, HttpResponse
|
||||
from django.http import HttpResponse
|
||||
from ninja import Field, Schema
|
||||
from ninja.pagination import paginate
|
||||
|
||||
from catalog.common.models import *
|
||||
from common.api import *
|
||||
|
||||
from .models import Mark, Review, ShelfType, TagManager, q_item_in_category
|
||||
from .models import (
|
||||
Collection,
|
||||
Mark,
|
||||
Review,
|
||||
ShelfType,
|
||||
Tag,
|
||||
TagManager,
|
||||
q_item_in_category,
|
||||
)
|
||||
|
||||
# Mark
|
||||
|
||||
|
||||
class MarkSchema(Schema):
|
||||
|
@ -31,10 +41,10 @@ class MarkInSchema(Schema):
|
|||
post_to_fediverse: bool = False
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/me/shelf/{type}",
|
||||
response={200: List[MarkSchema], 401: Result, 403: Result},
|
||||
tags=["mark"],
|
||||
)
|
||||
@paginate(PageNumberPagination)
|
||||
def list_marks_on_shelf(
|
||||
|
@ -52,10 +62,10 @@ def list_marks_on_shelf(
|
|||
return queryset
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/me/shelf/item/{item_uuid}",
|
||||
response={200: MarkSchema, 302: Result, 401: Result, 403: Result, 404: Result},
|
||||
tags=["mark"],
|
||||
)
|
||||
def get_mark_by_item(request, item_uuid: str, response: HttpResponse):
|
||||
"""
|
||||
|
@ -73,10 +83,10 @@ def get_mark_by_item(request, item_uuid: str, response: HttpResponse):
|
|||
return shelfmember
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["POST"],
|
||||
@api.post(
|
||||
"/me/shelf/item/{item_uuid}",
|
||||
response={200: Result, 401: Result, 403: Result, 404: Result},
|
||||
tags=["mark"],
|
||||
)
|
||||
def mark_item(request, item_uuid: str, mark: MarkInSchema):
|
||||
"""
|
||||
|
@ -105,10 +115,10 @@ def mark_item(request, item_uuid: str, mark: MarkInSchema):
|
|||
return 200, {"message": "OK"}
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["DELETE"],
|
||||
@api.delete(
|
||||
"/me/shelf/item/{item_uuid}",
|
||||
response={200: Result, 401: Result, 403: Result, 404: Result},
|
||||
tags=["mark"],
|
||||
)
|
||||
def delete_mark(request, item_uuid: str):
|
||||
"""
|
||||
|
@ -124,6 +134,9 @@ def delete_mark(request, item_uuid: str):
|
|||
return 200, {"message": "OK"}
|
||||
|
||||
|
||||
# Review
|
||||
|
||||
|
||||
class ReviewSchema(Schema):
|
||||
url: str
|
||||
visibility: int = Field(ge=0, le=2)
|
||||
|
@ -142,10 +155,10 @@ class ReviewInSchema(Schema):
|
|||
post_to_fediverse: bool = False
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/me/review/",
|
||||
response={200: List[ReviewSchema], 401: Result, 403: Result},
|
||||
tags=["review"],
|
||||
)
|
||||
@paginate(PageNumberPagination)
|
||||
def list_reviews(request, category: AvailableItemCategory | None = None):
|
||||
|
@ -160,10 +173,10 @@ def list_reviews(request, category: AvailableItemCategory | None = None):
|
|||
return queryset.prefetch_related("item")
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/me/review/item/{item_uuid}",
|
||||
response={200: ReviewSchema, 401: Result, 403: Result, 404: Result},
|
||||
tags=["review"],
|
||||
)
|
||||
def get_review_by_item(request, item_uuid: str):
|
||||
"""
|
||||
|
@ -181,6 +194,7 @@ def get_review_by_item(request, item_uuid: str):
|
|||
@api.post(
|
||||
"/me/review/item/{item_uuid}",
|
||||
response={200: Result, 401: Result, 403: Result, 404: Result},
|
||||
tags=["review"],
|
||||
)
|
||||
def review_item(request, item_uuid: str, review: ReviewInSchema):
|
||||
"""
|
||||
|
@ -207,10 +221,10 @@ def review_item(request, item_uuid: str, review: ReviewInSchema):
|
|||
return 200, {"message": "OK"}
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["DELETE"],
|
||||
@api.delete(
|
||||
"/me/review/item/{item_uuid}",
|
||||
response={200: Result, 401: Result, 403: Result, 404: Result},
|
||||
tags=["review"],
|
||||
)
|
||||
def delete_review(request, item_uuid: str):
|
||||
"""
|
||||
|
|
|
@ -13,11 +13,11 @@ class UserSchema(Schema):
|
|||
username: str
|
||||
|
||||
|
||||
@api.api_operation(
|
||||
["GET"],
|
||||
@api.get(
|
||||
"/me",
|
||||
response={200: UserSchema, 401: Result},
|
||||
summary="Get current user's basic info",
|
||||
tags=["user"],
|
||||
)
|
||||
def me(request):
|
||||
return 200, {
|
||||
|
|
Loading…
Add table
Reference in a new issue