diff --git a/config/urls.py b/config/urls.py index 9303af8..57ca949 100644 --- a/config/urls.py +++ b/config/urls.py @@ -4,6 +4,9 @@ from account.controller import account_router from movies.api_controllers.movies import movies_router +from movies.api_controllers.series import Series_controller +from movies.api_controllers.categories import categories_controller +from movies.api_controllers.news import news_controller api = NinjaAPI() api.add_router('account/', account_router) @@ -11,4 +14,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path('api/', api.urls), + path('categories/',categories_controller), + path('series/', Series_controller), + path('news/', news_controller) ] diff --git a/movies/api_controllers/categories.py b/movies/api_controllers/categories.py index e395fa0..1ca6349 100644 --- a/movies/api_controllers/categories.py +++ b/movies/api_controllers/categories.py @@ -1,15 +1,24 @@ from ninja import Router - +from pydantic.types import UUID4 from movies.models import Category from movies.schemas.categories import CategoryOut from movies.schemas.general import MessageOut categories_controller = Router(tags=['Categories']) - +#categorey @categories_controller.get('', response={200: list[CategoryOut], 404: MessageOut}) def list_categories(request): categories = Category.objects.all().order_by('name') if categories: return 200, categories return 404, {'msg': "There are no categories yet."} + +#here we will add the categorey/{id} +@categories_controller.get('/{id}', response={200: CategoryOut, 404: MessageOut}) +def get_categories(request, id: UUID4): + try: + categories = Category.objects.get(id=id) + return 200, categories + except Category.DoesNotExist: + return 404, {'msg': 'There is no categories with that id.'} diff --git a/movies/api_controllers/news.py b/movies/api_controllers/news.py index e69de29..73a6185 100644 --- a/movies/api_controllers/news.py +++ b/movies/api_controllers/news.py @@ -0,0 +1,23 @@ +from movies.models import New +from movies.schemas.news import Newsout +from movies.schemas.general import MessageOut +from pydantic.types import UUID4 +from ninja import Router + +news_controller = Router(tags=['News']) +#news +@news_controller.get('', response={200: list[Newsout], 404: MessageOut}) +def list_news(request): + news = New.objects.all().order_by('name') + if news: + return 200, news + return 404, {'msg': "There are no news yet."} + +#here we will add the news/{id} +@news_controller.get('/{id}', response={200: Newsout, 404: MessageOut}) +def get_categories(request, id: UUID4): + try: + categories = New.objects.get(id=id) + return 200, categories + except New.DoesNotExist: + return 404, {'msg': 'There is no news with that id.'} diff --git a/movies/api_controllers/series.py b/movies/api_controllers/series.py index e69de29..65ec15e 100644 --- a/movies/api_controllers/series.py +++ b/movies/api_controllers/series.py @@ -0,0 +1,23 @@ +from movies.models import Serial +from movies.schemas.series import SerialOut +from movies.schemas.general import MessageOut +from pydantic.types import UUID4 +from ninja import Router + +Series_controller = Router(tags=['Series']) +#series +@Series_controller.get('', response={200: list[SerialOut], 404: MessageOut}) +def list_seasons(request): + series= Serial.objects.all().order_by('release_date') + if series: + return 200, series + return 404, {'msg': "There are no seasons yet."} + +#here we will add the SERIES/{id} +@Series_controller.get('/{id}', response={200: SerialOut, 404: MessageOut}) +def get_categories(request, id: UUID4): + try: + series = Serial.objects.get(id=id) + return 200, series + except Serial.DoesNotExist: + return 404, {'msg': 'There is no categories with that id.'} diff --git a/movies/schemas/news.py b/movies/schemas/news.py index e69de29..1d5261e 100644 --- a/movies/schemas/news.py +++ b/movies/schemas/news.py @@ -0,0 +1,12 @@ +from ninja import Schema + +from pydantic.types import UUID4 +import datetime + + +class Newsout(Schema): + id: UUID4 + title: str + description: str + image: str = None + release_date: datetime.data diff --git a/movies/schemas/series.py b/movies/schemas/series.py index e69de29..e8446b4 100644 --- a/movies/schemas/series.py +++ b/movies/schemas/series.py @@ -0,0 +1,15 @@ +from ninja import Schema +from pydantic.types import UUID4,Decimal +import datetime + + +class SerialOut(Schema): + id: UUID4 + name: str + release_date: datetime.data + describtion: str + rating: Decimal + is_featured:bool + thumbnail:str + image:str + trailer_url: str