def delete_ledger_values(case_id, section_id=None, entry_id=None): """ Delete LedgerValues marching passed in args :param case_id: ID of the case :param section_id: section ID or None :param entry_id: entry ID or None :return: number of values deleted """ try: with LedgerValue.get_plproxy_cursor() as cursor: cursor.execute( "SELECT delete_ledger_values(%s, %s, %s) as deleted_count", [case_id, section_id, entry_id]) results = fetchall_as_namedtuple(cursor) return sum([result.deleted_count for result in results]) except InternalError as e: raise LedgerSaveError(e)