def __init__(self, data): geo = Geo() from_geopos = geo.get_geoloc(data["from"]["address"]) if {} == from_geopos: logging.error("Cannot find coordinates for {}".format(data["from"]["address"])) self.ride = None return to_geopos = geo.get_geoloc(data["to"]["address"]) if {} == to_geopos: logging.error("Cannot find coordinates for {}".format(data["to"]["address"])) self.ride = None return self.ride = { "user_id": data["user_id"], "created_at": datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "start_at": data["start_at"], "from": { "address": data["from"]["address"], "zip_code": data["from"]["zip_code"], "coordinates": from_geopos }, "to": { "address": data["to"]["address"], "zip_code": data["to"]["zip_code"], "coordinates": to_geopos }, "iteration": { "todo": get_conf("number_of_iteration"), "done": 0 }, "status": "pending", "seat_count": data["number_seat"], "prices": { } }
def __init__(self): self.token = get_conf("uber_app_id") self.available_seats = { "Pool": 2, "UberX": 4, "Green": 4, "Van": 6, "ACCESS": 4, "Berline": 4 }
def scheduler(): mongo = Mongodb('rides') rides = list( mongo.get_pending_rides(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) logging.info("{} Rides found".format(len(rides))) async_list = [] for ride in rides: logging.info(ride["_id"]) action_item = grequests.get( "{}/rides/{}?size=0&update=True&apps=*".format( get_conf("api_hostname"), ride["_id"])) #, verify=False) async_list.append(action_item) #requests.get("http://0.0.0.0:5000/weleave/{}".format(ride["_id"])) grequests.map(async_list)
def get_apps_details(): try: qs = parse.parse_qs(request.query_string.decode()) os = qs["os"][0] except: return Response(status=400) if os not in ["ios", "android"]: return Response(status=400) hostname = get_conf("api_hostname") if os == "android": return Response( response=json.dumps({ "uber": { "picture_link": "{}/apps/pictures/uber".format(hostname), "deeplink": "", "rating": "4.2" }, "marcel": { "picture_link": "{}/apps/pictures/marcel".format(hostname), "deeplink": "", "rating": "3.9" }, "snapcar": { "picture_link": "{}/apps/pictures/snapcar".format(hostname), "deeplink": "", "rating": "3.4" }, "allocab": { "picture_link": "{}/apps/pictures/allocab".format(hostname), "deeplink": "", "rating": "3.9" }, "g7": { "picture_link": "{}/apps/pictures/g7".format(hostname), "deeplink": "", "rating": "3.7" }, "drive": { "picture_link": "{}/apps/pictures/drive".format(hostname), "deeplink": "", "rating": "" }, "citybird": { "picture_link": "{}/apps/pictures/citybird".format(hostname), "deeplink": "", "rating": "4.3" }, "felix": { "picture_link": "{}/apps/pictures/felix".format(hostname), "deeplink": "", "rating": "3.2" }, "lecab": { "picture_link": "{}/apps/pictures/lecab".format(hostname), "deeplink": "", "rating": "3.7" }, "taxify": { "picture_link": "{}/apps/pictures/taxify".format(hostname), "deeplink": "", "rating": "4.2" }, "talixo": { "picture_link": "{}/apps/pictures/talixo".format(hostname), "deeplink": "", "rating": "3.9" } }), status=200, mimetype='application/json' ) return Response( response=json.dumps({ "uber": { "picture_link": "{}/apps/pictures/uber".format(hostname), "deeplink": "", "rating": "4.2" }, "marcel": { "picture_link": "{}/apps/pictures/marcel".format(hostname), "deeplink": "", "rating": "3.1" }, "snapcar": { "picture_link": "{}/apps/pictures/snapcar".format(hostname), "deeplink": "", "rating": "3.8" }, "allocab": { "picture_link": "{}/apps/pictures/allocab".format(hostname), "deeplink": "", "rating": "4.7" }, "g7": { "picture_link": "{}/apps/pictures/g7".format(hostname), "deeplink": "", "rating": "3.9" }, "drive": { "picture_link": "{}/apps/pictures/drive".format(hostname), "deeplink": "", "rating": "4.9" }, "citybird": { "picture_link": "{}/apps/pictures/citybird".format(hostname), "deeplink": "", "rating": "4.4" }, "felix": { "picture_link": "{}/apps/pictures/felix".format(hostname), "deeplink": "", "rating": "3.5" }, "lecab": { "picture_link": "{}/apps/pictures/lecab".format(hostname), "deeplink": "", "rating": "3.7" }, "taxify": { "picture_link": "{}/apps/pictures/taxify".format(hostname), "deeplink": "", "rating": "4.8" }, "talixo": { "picture_link": "{}/apps/pictures/talixo".format(hostname), "deeplink": "", "rating": "4.6" } }), status=200, mimetype='application/json' )
def get_apps_picture(app_name): if app_name not in get_conf("apps"): return Response(status=404) return send_file("../assets/{}.jpg".format(app_name), mimetype='image/gif')
from flask import Flask import logging import flask_monitoringdashboard as dashboard from datetime import datetime from utils.ConfManager import get_conf import controllers.users as users import controllers.rides as rides import controllers.apps as apps app = Flask(__name__) dashboard.bind(app) # Initial logger if get_conf("log_in_file"): filename = '/logs/weleave_api_{}.log'.format( datetime.now().strftime('%Y-%m-%d')) logging.basicConfig(filename=filename, level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.info("Redirect logs to {}".format(filename)) else: logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') # Register routes # Rides app.register_blueprint(rides.init_ride_route) app.register_blueprint(rides.stop_ride_route) app.register_blueprint(rides.get_ride_route) app.register_blueprint(rides.extend_ride_route) # Apps
def __init__(self, tablename): client = MongoClient(get_conf("mongodb_host"), get_conf("mongodb_port")) db = client['weleave'] self.collection = db[tablename]