def table(title, rows=[]): print(Style.RESET_ALL) if len(rows) > 0 and type(rows[0]) != tuple: rows = [[ row, ] for row in rows] table_instance = DoubleTable(rows, Fore.YELLOW + title + Fore.RESET) table_instance.outer_border = True table_instance.inner_heading_row_border = False table_instance.inner_column_border = True print(table_instance.table)
def cherche_prochain_rdv_dans_centre( data: Tuple[dict, Queue]) -> CenterInfo: # pragma: no cover timestamp_before_request = datetime.datetime.now() centre, creneau_q = data center_data = CenterInfo.from_csv_data(centre) start_date = get_start_date() has_error = None result = None try: result = fetch_centre_slots( centre["rdv_site_web"], centre["platform_is"] if "platform_is" in centre.keys() else None, start_date, creneau_q=creneau_q, center_info=center_data, input_data=centre.get("booking"), atlas_gid=centre["atlas_gid"] if "atlas_gid" in centre.keys() else None, ) center_data.fill_result(result) except Blocked403 as blocked_doctolib__error: logger.error( f"erreur lors du traitement de la ligne avec le gid {centre['gid']} {str(blocked_doctolib__error)}" ) has_error = blocked_doctolib__error except DoublonDoctolib as doublon_doctolib: has_error = doublon_doctolib doublon = Color("{autored}DOUBLON{/autored}") gid = centre.get( "gid", "") if len(centre.get("gid", "")) < 50 else centre.get( "gid", "")[0:50] platform = "Doctolib" departement = center_data.departement if center_data.departement else "" table_data = [[ platform + str(" " * (15 - len(platform))), gid + str(" " * (50 - len(gid))), doublon + str(" " * (35 - len(doublon))), departement + str(" " * (3 - len(departement))), ]] table_instance = DoubleTable(table_data) table_instance.outer_border = False print(table_instance.table) except CircuitBreakerOffException as error: logger.error( f"circuit '{error.name}' désactivé lors du traîtement de la ligne avec le gid {centre['gid']}: {str(error)}" ) has_error = error except Exception: logger.error( f"erreur lors du traitement de la ligne avec le gid {centre['gid']}" ) traceback.print_exc() else: next_appointment = (Color("{autogreen}" + center_data.prochain_rdv + "{/autogreen}") if center_data.prochain_rdv else "") gid = centre.get( "gid", "") if len(centre.get("gid", "")) < 50 else centre.get( "gid", "")[0:50] platform = center_data.plateforme if center_data.plateforme else "Autre" departement = center_data.departement if center_data.departement else "" table_data = [[ platform + str(" " * (15 - len(platform))), gid + str(" " * (50 - len(gid))), next_appointment + str(" " * (35 - len(next_appointment))), departement + str(" " * (3 - len(departement))), ]] table_instance = DoubleTable(table_data) table_instance.outer_border = False print(table_instance.table) time_for_request = (datetime.datetime.now() - timestamp_before_request).total_seconds() if result is not None and result.request.url is not None: center_data.url = result.request.url.lower() if result.request.internal_id is None: center_data.internal_id = f'{result.platform.lower()}{centre.get("gid", "")}' if "type" in centre: center_data.type = centre["type"] if not center_data.type: center_data.type = VACCINATION_CENTER center_data.gid = centre.get("gid", "") center_data.time_for_request = time_for_request return center_data