"""Blueprint for exchange rate API.""" from abacus_common_logic.views.create_view import CreateView from flask import Blueprint, request from owsrequest import flask_request from owsresponse import response from royalties.constants.error import ERROR_CODE_AUTHORIZATION from royalties.logic import exchange_rate as logic from royalties.schemas.exchange_rate import ExchangeRatePostSchema exchange_rate_api = Blueprint( 'exchange_rate_api', __name__, url_prefix='/exchange-rate' ) class ExchangeRatesCreateView(CreateView): """Handles exchange rates creation.""" post_schema = ExchangeRatePostSchema() def post(self, **kwargs): """Create exchange rates.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401, ) return super().post(**kwargs) def create_handler(self, **params: dict): """Import exchange rates from a CSV.""" return logic.bulk_load_exchange_rates(params) exchange_rate_api.add_url_rule( '/bulk-exchange-rates', methods=['POST'], view_func=ExchangeRatesCreateView.as_view('create_exchange_rates'), )