示例#1
0
def main2():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--date",
        type=str,
        help="The date used to load meetings from RMBS. Format: YYYY-MM-DD",
        required=True)
    parser.add_argument("--noMinWaste",
                        help="If set, then we will skip minWaste optimization",
                        action="store_true")
    parser.add_argument("--debug", action="store_true")
    parser.add_argument("--maxTime",
                        help="Max. resolving time in sec",
                        type=int,
                        default=600)
    args = parser.parse_args()

    _debug = args.debug

    # We have 3 rooms (A, B and C)
    # Use edge to mark which room is next to which
    # g_rooms = networkx.Graph()
    # for rm in list(room_names):
    #    g_rooms.add_node(rm)

    # g_rooms.add_edge("A", "B")
    # g_rooms.add_edge("B", "C")

    rmbs = Rmbs()

    applications = Application.get_applications(rmbs)
    if not applications:
        logger.info("No applications found")
        return

    df_apps = Application.applications_to_df(applications)

    df_apps_too_late = df_apps.query(
        f'status == "{Application.STATUS_TOO_LATE}"')

    # Please note that each app form can apply for multiple days.  Some may succeeed, and some may fail!
    if len(df_apps_too_late) > 0:
        logger.info(f"{len(df_apps_too_late)} found to be too_late")
        Site.send_too_late_bookings_email(df_apps_too_late)

    df_apps = df_apps.query(f'status != "{Application.STATUS_TOO_LATE}"')
    if len(df_apps) == 0:
        logger.info("No more non-too-late found")
        return

    grouped_apps = df_apps.groupby(['event_site', 'event_date'])
    for group_name, df_entries in grouped_apps:
        ret = process_site_applications(area=group_name[0],
                                        rmbs=rmbs,
                                        event_date=group_name[1],
                                        requests=df_entries,
                                        max_resolve_time=args.maxTime,
                                        no_min_waste=args.noMinWaste)
        Application.update_entries_status(df_entries, ret, rmbs)