Newer
Older
from app.apis import check_jwt, item_response, list_response
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")
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")
def get(self, competition_id):
item = dbc.get.competition(competition_id)
return item_response(rich_schema.dump(item))
args = competition_edit_parser.parse_args(strict=True)
item = dbc.get.one(Competition, competition_id)
return item_response(schema.dump(item))
def delete(self, competition_id):
item = dbc.get.one(Competition, competition_id)
return "deleted"
@api.route("/search")
class CompetitionSearch(Resource):
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):
@check_jwt(editor=True)
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))