Untitled

 avatar
unknown
plain_text
10 months ago
2.2 kB
7
Indexable
def get_filter_description(filters):
    return " and ".join(filters) if filters else "any criteria"

def is_airline_name_match(entry, airline_name):
    return airline_name and airline_name.lower() in entry['AirlineName'].lower()

def is_airport_name_match(entry, origin_or_destination_airportname):
    if not origin_or_destination_airportname:
        return False
    return any(
        origin_or_destination_airportname.lower() in route['AirportName'].lower()
        for route in entry.get('RouteList', [])
    )

def is_flight_number_match(entry, flight_number):
    return flight_number and flight_number in entry['FlightNumber']

def is_airport_and_flight_number_match(entry, origin_or_destination_airportname, flight_number):
    return is_airport_name_match(entry, origin_or_destination_airportname) and is_flight_number_match(entry, flight_number)

def filter_entries(shared_data, airline_name, origin_or_destination_airportname, flight_number):
    if not any([airline_name, origin_or_destination_airportname, flight_number]):
        return []

    # If both airportName and flightNumber are available, filter by both
    if origin_or_destination_airportname and flight_number:
        return [
            entry for entry in shared_data.flight_response['DailyScheduleResult']
            if is_airport_and_flight_number_match(entry, origin_or_destination_airportname, flight_number)
        ]

    # Otherwise, filter based on individual conditions
    return [
        entry for entry in shared_data.flight_response['DailyScheduleResult']
        if is_airline_name_match(entry, airline_name) or
           is_airport_name_match(entry, origin_or_destination_airportname) or
           is_flight_number_match(entry, flight_number)
    ]

def log_filtered_entries(filtered_entries):
    logger.info(f"filtered entries {filtered_entries}")

def get_result_data(filtered_entries):
    return {
        "DailyScheduleResult": filtered_entries
    }

# Main logic
filter_description = get_filter_description(filters)
filtered_entries = filter_entries(shared_data, airline_name, origin_or_destination_airportname, flight_number)
log_filtered_entries(filtered_entries)
result_data = get_result_data(filtered_entries)
Editor is loading...
Leave a Comment