/
PRO100SANYA
/
rest-api
Обзор
Документация
Войти
/
PRO100SANYA
/
rest-api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/resources.py
163 строки
4 KB
MeterPreter57
first_commit
17 фев 2025, 16:37
17 фев 2025, 16:37
3992ba4
Код
Авторство
О чём код?
from flask_restx import Resource, Namespace # type: ignore from .api_models import ( movie_model, movie_input_model, screening_model, screening_input_model, client_model, client_input_model, ticket_model, ticket_input_model, ) from .extensions import db from .models import Movie, Screening, Client, Ticket ns = Namespace("api") @ns.route("/movies") class MovieListAPI(Resource): @ns.marshal_list_with(movie_model) def get(self): return Movie.query.all() @ns.expect(movie_input_model) @ns.marshal_with(movie_model) def post(self): movie = Movie(**ns.payload) db.session.add(movie) db.session.commit() return movie, 201 @ns.route("/movies/<int:movie_id>") class MovieAPI(Resource): @ns.marshal_with(movie_model) def get(self, movie_id: int): return Movie.query.get_or_404(movie_id) @ns.expect(movie_input_model) @ns.marshal_with(movie_model) def put(self, movie_id: int): movie = Movie.query.get_or_404(movie_id) movie.title = ns.payload["title"] movie.year = ns.payload["year"] db.session.commit() return movie def delete(self, movie_id: int): movie = Movie.query.get_or_404(movie_id) db.session.delete(movie) db.session.commit() return "", 204 @ns.route("/screenings") class ScreeningListAPI(Resource): @ns.marshal_list_with(screening_model) def get(self): return Screening.query.all() @ns.expect(screening_input_model) @ns.marshal_with(screening_model) def post(self): screening = Screening(**ns.payload) db.session.add(screening) db.session.commit() return screening, 201 @ns.route("/screenings/<int:screening_id>") class ScreeningAPI(Resource): @ns.marshal_with(screening_model) def get(self, screening_id: int): return Screening.query.get_or_404(screening_id) @ns.expect(screening_input_model) @ns.marshal_with(screening_model) def put(self, screening_id: int): screening = Screening.query.get_or_404(screening_id) screening.date = ns.payload["date"] screening.movie_id = ns.payload["movie_id"] db.session.commit() return screening def delete(self, screening_id: int): screening = Screening.query.get_or_404(screening_id) db.session.delete(screening) db.session.commit() return "", 204 @ns.route("/clients") class ClientListAPI(Resource): @ns.marshal_list_with(client_model) def get(self): return Client.query.all() @ns.expect(client_input_model) @ns.marshal_with(client_model) def post(self): client = Client(**ns.payload) db.session.add(client) db.session.commit() return client, 201 @ns.route("/clients/<int:client_id>") class ClientAPI(Resource): @ns.marshal_with(client_model) def get(self, client_id: int): return Client.query.get_or_404(client_id) @ns.expect(client_input_model) @ns.marshal_with(client_model) def put(self, client_id: int): client = Client.query.get_or_404(client_id) client.name = ns.payload["name"] db.session.commit() return client def delete(self, client_id: int): client = Client.query.get_or_404(client_id) db.session.delete(client) db.session.commit() return "", 204 @ns.route("/tickets") class TicketListAPI(Resource): @ns.marshal_list_with(ticket_model) def get(self): return Ticket.query.all() @ns.expect(ticket_input_model) @ns.marshal_with(ticket_model) def post(self): ticket = Ticket(**ns.payload) db.session.add(ticket) db.session.commit() return ticket, 201 @ns.route("/tickets/<int:ticket_id>") class TicketAPI(Resource): @ns.marshal_with(ticket_model) def get(self, ticket_id: int): return Ticket.query.get_or_404(ticket_id) @ns.expect(ticket_input_model) @ns.marshal_with(ticket_model) def put(self, ticket_id: int): ticket = Ticket.query.get_or_404(ticket_id) ticket.client_id = ns.payload["client_id"] ticket.screening_id = ns.payload["screening_id"] db.session.commit() return ticket def delete(self, ticket_id: int): ticket = Ticket.query.get_or_404(ticket_id) db.session.delete(ticket) db.session.commit() return "", 204