from flask import Blueprint from flask_jwt_extended import jwt_required from flask_apispec import use_kwargs, marshal_with from api.exceptions import NotFoundException from api.utils import docwrap from .models import TargetExchange from .serializers import target_exchange_schema, target_exchanges_schema blueprint = Blueprint('target_exchange', __name__) doc = docwrap('TargetExchange') @doc @blueprint.route('', methods=['GET']) @jwt_required() @marshal_with(target_exchanges_schema) def get_list(): return TargetExchange.query.all() @doc @blueprint.route('', methods=['POST']) @jwt_required() @use_kwargs(target_exchange_schema) @marshal_with(target_exchange_schema) def create(name): target_exchange = TargetExchange(name=name) target_exchange.save() return target_exchange @doc @blueprint.route('/', methods=['GET']) @jwt_required() @marshal_with(target_exchange_schema) def get_by_id(exchange_id): target_exchange = TargetExchange.get_by_id(exchange_id) if target_exchange is not None: return target_exchange else: return NotFoundException(__name__) @doc @blueprint.route('/', methods=['PUT']) @jwt_required() @use_kwargs(target_exchange_schema) @marshal_with(target_exchange_schema) def update(exchange_id, **kwargs): target_exchange = TargetExchange.get_by_id(exchange_id) if target_exchange is not None: return target_exchange.update(**kwargs) else: return NotFoundException(__name__)