if email == "": print("Please enter an email address.") # check that it looks like an email address # just a simple validation, without using regular expressions elif email.find("@") == -1 or email.find(".") == -1: print("Please enter a valid email address.") else: return email # initialization prices = dm.DataManager("prices") # using a different object to handle users users = dm.DataManager("users") flight_search = fs.FlightSearch() notification_manager = nm.NotificationManager() # load the worksheets prices_sheet = prices.get_sheet() users_sheet = users.get_sheet() # just for some basic interaction print("Enter \"y\" if you want to add a new user.") choice = input("> ").lower() if choice == "y": add_new_user() # add missing codes for city in prices_sheet: if city["iataCode"] == "": query_result = flight_search.find_city_code(city["city"])
# This file will need to use the DataManager,FlightSearch, FlightData, NotificationManager classes to achieve the program requirements. import requests import os import data_manager import notification_manager import flight_search # Initialise class references flight_finder = flight_search.FlightSearch() flight_data = data_manager.DataManager() twilio = notification_manager.NotificationManager() # Load up current flight data flight_data.get_data() # Update all city codes for row in flight_data.data: #1. Update IATA Code iata_code = row['iataCode'] if len(iata_code) == 0: print(row['city']) this_code = flight_finder.get_iata_code(row['city']) print(row) row['iataCode'] = this_code print(row) flight_data.set_data(row) # 2. Get lowest price search_results = flight_finder.get_price(iata_code)
'curr': 'GBP' } data_manager = dm.DataManager(dm.ENDPOINT, dm.SHEET, dm.TOKEN) for row in data_manager.data['prices']: if len(row['iataCode']) != 0: continue city = row['city'] params = {'apikey': fs.API_KEY, 'location_types': 'city', 'term': city} flight_search = fs.FlightSearch(fs.API_LOCATIONS, fs.ENDPOINT, params) row['iataCode'] = flight_search.search_locations('name', city, 'code') data_manager.put_data(row) iata_codes = [row['iataCode'] for row in data_manager.data['prices']] notification_manager = nm.NotificationManager(nm.ACCOUNT_SID, nm.AUTH_TOKEN) for idx, iata_code in enumerate(iata_codes): flight_params.update(fly_to=iata_code, max_stopovers=0) flight_search = fs.FlightSearch(fs.API_SEARCH, fs.ENDPOINT, flight_params) data = flight_search.data['data'] stopped = False if len(data) == 0: flight_params.update(max_stopovers=1) flight_search = fs.FlightSearch(fs.API_SEARCH, fs.ENDPOINT, flight_params) data = flight_search.data['data'] if len(data) == 0: continue stopped = True flight_data = fd.FlightData(data) if flight_data.data['price'] <= data_manager.data['prices'][idx][
'curr': 'GBP' } data_manager = dm.DataManager(dm.ENDPOINT, dm.SHEET, dm.TOKEN) for row in data_manager.data['prices']: if len(row['iataCode']) != 0: continue city = row['city'] params = {'apikey': fs.API_KEY, 'location_types': 'city', 'term': city} flight_search = fs.FlightSearch(fs.API_LOCATIONS, fs.ENDPOINT, params) row['iataCode'] = flight_search.search_locations('name', city, 'code') data_manager.put_data(row) iata_codes = [row['iataCode'] for row in data_manager.data['prices']] notification_manager = nm.NotificationManager(nm.EMAIL, nm.PASSWORD) for idx, iata_code in enumerate(iata_codes): flight_params.update(fly_to=iata_code, max_stopovers=0) flight_search = fs.FlightSearch(fs.API_SEARCH, fs.ENDPOINT, flight_params) data = flight_search.data['data'] stopped = False if len(data) == 0: flight_params.update(max_stopovers=1) flight_search = fs.FlightSearch(fs.API_SEARCH, fs.ENDPOINT, flight_params) data = flight_search.data['data'] if len(data) == 0: continue stopped = True flight_data = fd.FlightData(data) if flight_data.data['price'] <= data_manager.data['prices'][idx][
import data_manager import flight_search from pprint import pprint import datetime import notification_manager data = data_manager.DataManager() flights = flight_search.FlightSearch() sheet_data = data.get_sheet_data() notification = notification_manager.NotificationManager() origin_city = "NYC" # Using dates from now till 6 months today = datetime.datetime.today() + datetime.timedelta(days=1) tomorrow = today.strftime("%d/%m/%Y") six_months = datetime.datetime.now() + datetime.timedelta(days=6 * 30) six_months = six_months.strftime("%d/%m/%Y") def replace_empty_iata(): for values in sheet_data: if values[1] == "": # Get the city name flight_city = values[0] # changing the IATA code in sheet_data to the code values[1] = flights.update_iata_code(flight_city) pprint(sheet_data) data.sheet_data = sheet_data data.update_iatacode()