2020-08-05 19:09:38 +00:00
|
|
|
from flask import Flask
|
|
|
|
|
from flask import request, jsonify
|
|
|
|
|
from flask_mongoengine import MongoEngine
|
|
|
|
|
from model import Bike
|
|
|
|
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
|
|
|
|
db = MongoEngine(app)
|
|
|
|
|
|
|
|
|
|
|
2020-08-18 22:33:12 +00:00
|
|
|
# TODO: at registration give current location
|
2020-08-05 19:09:38 +00:00
|
|
|
@app.route("/register/")
|
|
|
|
|
def register():
|
|
|
|
|
dest_lat = request.args.get('dest_lat', None)
|
|
|
|
|
dest_lon = request.args.get('dest_lon', None)
|
|
|
|
|
|
|
|
|
|
assert dest_lat is not None and dest_lon is not None
|
|
|
|
|
|
|
|
|
|
dest = (float(dest_lon), float(dest_lat))
|
|
|
|
|
|
|
|
|
|
bike = Bike(point=(0, 0),
|
|
|
|
|
destination=dest)
|
|
|
|
|
|
|
|
|
|
bike.save()
|
|
|
|
|
|
|
|
|
|
return jsonify(bike_id=str(bike.id))
|
|
|
|
|
|
|
|
|
|
|
2020-08-18 22:33:12 +00:00
|
|
|
# TODO: recieve gps bearing and speed
|
2020-08-05 19:09:38 +00:00
|
|
|
@app.route("/update/<bike_id>/")
|
|
|
|
|
def update(bike_id):
|
|
|
|
|
|
|
|
|
|
bike = Bike.objects.get(id=bike_id)
|
|
|
|
|
|
|
|
|
|
lat = float(request.args.get('lat', None))
|
|
|
|
|
lon = float(request.args.get('lon', None))
|
2020-08-18 22:33:12 +00:00
|
|
|
speed = float(request.args.get('speed', None))
|
|
|
|
|
bearing = float(request.args.get('bearing', None))
|
2020-08-05 19:09:38 +00:00
|
|
|
|
2020-08-18 22:33:12 +00:00
|
|
|
|
|
|
|
|
bike.update(lat, lon, speed, bearing)
|
2020-08-05 19:09:38 +00:00
|
|
|
return jsonify(
|
2020-08-18 22:33:12 +00:00
|
|
|
dest_heading=bike.heading_to(bike.destination),
|
|
|
|
|
dest_distance=bike.distance_to(bike.destination),
|
2020-08-05 19:09:38 +00:00
|
|
|
speed=bike.speed,
|
|
|
|
|
**bike.flock_data())
|