Newer
Older
from app.apis import item_response, list_response, protect_route
from flask_restx import reqparse
from app.core.parsers import search_parser
list_schema = CompetitionDTO.list_schema
competition_parser = reqparse.RequestParser()
competition_parser.add_argument("name", type=str, location="json")
competition_parser.add_argument("year", type=int, location="json")
competition_parser.add_argument("city_id", type=int, location="json")
competition_edit_parser = competition_parser.copy()
competition_edit_parser.add_argument("background_image_id", default=None, type=int, location="json")
competition_search_parser = search_parser.copy()
competition_search_parser.add_argument("name", type=str, default=None, location="args")
competition_search_parser.add_argument("year", type=int, default=None, location="args")
competition_search_parser.add_argument("city_id", type=int, default=None, location="args")
@protect_route(allowed_roles=["*"])
def post(self):
args = competition_parser.parse_args(strict=True)
# Add competition
# Add default slide
return item_response(schema.dump(item))
@api.route("/<competition_id>")
@api.param("competition_id")
@protect_route(allowed_roles=["*"], allowed_views=["*"])
def get(self, competition_id):
item = dbc.get.competition(competition_id)
return item_response(rich_schema.dump(item))
@protect_route(allowed_roles=["*"])
args = competition_edit_parser.parse_args(strict=True)
item = dbc.get.one(Competition, competition_id)
item = dbc.edit.competition(item, **args)
return item_response(schema.dump(item))
@protect_route(allowed_roles=["*"])
def delete(self, competition_id):
item = dbc.get.one(Competition, competition_id)
return "deleted"
@api.route("/search")
class CompetitionSearch(Resource):
@protect_route(allowed_roles=["*"])
def get(self):
args = competition_search_parser.parse_args(strict=True)
return list_response(list_schema.dump(items), total)
@api.route("/<competition_id>/copy")
@api.param("competition_id")
class SlidesOrder(Resource):
@protect_route(allowed_roles=["*"])
def post(self, competition_id):
item_competition = dbc.get.competition(competition_id)
item_competition_copy = dbc.copy.competition(item_competition)
return item_response(schema.dump(item_competition_copy))