"""Logic for Account Contract.""" from owsresponse import response from abacus_contract import models from abacus_contract.schemas.account_contract import AccountContractDetailSchema from abacus_contract.utils.format_error import validation_error def create_account_contract(account_id: int, contract_id: int) -> response.Response: """Create account_contract. Args: account_id (int): account_id to which a contract belongs contract_id (int): contract_id to be associated to the account Returns: a response.Response """ try: models.Contract.get_by_id_or_error(contract_id) AccountContractDetailSchema(exclude=('account_contract_id',)).load({ 'account_id': account_id, 'contract_id': contract_id }) new_account_contract = models.AccountContract.create( account_id=account_id, contract_id=contract_id ) message = AccountContractDetailSchema().dump(new_account_contract) return response.Response(message=message, status=201) except Exception as e: return validation_error(str(e))