"""Blueprint for Ledger Reserve Taken API.""" import simplejson as json from flask import Blueprint, request from owsrequest import flask_request from owsresponse import response from owsresponse.adaptors.flask import flaskify from ledger.constants.error import ERROR_CODE_AUTHORIZATION from ledger.logic import ledger_reserve_taken as logic ledger_reserve_taken_api = Blueprint('ledger_reserve_taken_api', __name__) @ledger_reserve_taken_api.route('/ledger-reserve-taken/bulk', methods=['POST']) def bulk_create_ledger_reserve_taken_entries(): """Create one or more ledger_reserve_taken entries.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify( response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401, ) ) parsed_body = json.loads(request.data.decode(), use_decimal=True) return flaskify(logic.bulk_create(parsed_body)) @ledger_reserve_taken_api.route( '/ledger-reserve-taken/accounting-run/', methods=['GET'] ) def get_ledger_reserve_taken_by_accounting_run_id(accounting_run_id: int): """GET a list of ledger_reserve_taken info for a specified accounting run.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify( response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401, ) ) return flaskify( logic.get_ledger_reserve_taken_by_accounting_run_id( accounting_run_id, request.args ) ) @ledger_reserve_taken_api.route( '/ledger-reserve-taken/accounting-run/', methods=['POST'] ) def debit_reserves_from_ledger_account_by_run(accounting_run_id: int): """Debit reserves from ledger_account for ledger_reserve_taken entries in the specified accounting_run.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify( response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401, ) ) return flaskify(logic.debit_reserves_from_ledger_account_by_run(accounting_run_id))