"""Blueprint for Account Contract VAT Details API.""" from abacus_common_logic.views.create_view import CreateView from flask import Blueprint, request from marshmallow import ValidationError from owsrequest import flask_request from owsresponse import response from owsresponse.adaptors.flask import flaskify from abacus_account.constants import error from abacus_account.logic import account_contract_vat_detail as logic from abacus_account.schemas import AccountContractVatDetailSchema account_contract_vat_detail_api = Blueprint('account_contract_vat_detail_api', __name__) class AccountContractVatDetailCreate(CreateView): """POST account contract vat details.""" def post(self): """Create or update existing account contract vat details.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify(response.create_error_response( code=error.ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401, )) try: input_data = request.get_json() vat_details = AccountContractVatDetailSchema( many=True, exclude=['account_contract_vat_detail_id']).load(input_data) return flaskify( logic.create_or_update_account_contract_vat_detail(vat_details)) except ValidationError as err: return flaskify( response.create_error_response('error', str(err), status=400)) account_contract_vat_detail_api.add_url_rule( '/account-contract-vat-detail', methods=['POST'], view_func=AccountContractVatDetailCreate.as_view( 'create_account_contract_vat_detail') )