"""Logic for Ledger Reserve Release.""" from typing import Dict, List, Type from owsresponse import response from ledger.models.ledger_reserve_release import LedgerReserveRelease from ledger.models.ledger_reserve_release_schedule import ( LedgerReserveReleaseSchedule, ) from ledger.schemas.ledger_reserve_release import LedgerReserveReleaseDetailSchema from ledger.utils.format_error import validation_error def bulk_create(request_body: List[Dict]) -> Type[response.Response]: """Bulk insertion for ledger_reserve_release. Args: request_body(list): POST request body having list of ledger_reserve_release entries Returns: List of newly created ledger_reserve_release records """ ledger_reserve_release_records = list() try: for record in request_body: ledger_reserve_release_schedule = LedgerReserveReleaseSchedule.get_by_id( record.get('ledger_reserve_release_schedule_id') ) if ledger_reserve_release_schedule.released_reserves: continue ledger_reserve_release = LedgerReserveRelease.build(**record) ledger_reserve_release_records.append(ledger_reserve_release) LedgerReserveRelease.commit_changes() except Exception as e: return validation_error(str(e)) return response.Response( message=LedgerReserveReleaseDetailSchema(many=True).dump( ledger_reserve_release_records ), status=201, )