def suppose_assignment(): # import all not taken deliveries now = datetime.datetime.now() cond = { "conditions" : { # "start" : datetime.datetime(now.year,now.month,now.day,0,0,0).strftime("%Y-%m-%d %H:%M:%S"), # "end" : (datetime.datetime(now.year,now.month,now.day,0,0,0) + datetime.timedelta(days=1, seconds=-1)).strftime("%Y-%m-%d %H:%M:%S"), "state" : "not assigned" } } deliveries = get_all_deliveries(company_id=session["user"]["company_id"], conditions=cond , return_obj=True, get_locations=True) # import drivers drivers = get_all_drivers(session["user"]["company_id"], return_obj=True, vehicles=True) suggestions = [] no_registered = [] for delivery in deliveries: best_distance = None best_driver = None for driver in drivers: if is_assignable(driver, delivery): distance = Location.getDistance(delivery.getSenderLocation(), driver.getLocation()) if best_distance is not None: if distance["distance"]["value"]< best_distance["distance"]["value"] : best_distance = distance best_driver = driver else: best_distance = distance best_driver = driver if best_distance is None or best_driver is None: no_registered.append(delivery) else : best = {"delivery" : delivery, "distance": best_distance["distance"], "duration" : best_distance["duration"]} append_suggestion(suggestions, best_driver, best) #update driver position best_driver.update_location(**delivery.getSenderLocation()) return jsonify(suggestions=suggestions),200
def test_getAll_with_drivers_return_obj(self, client, mocker): with client.session_transaction() as sess: sess["user"] = {"id": 3, "type": "admin", "company_id": 2} from application.classes.Driver import Driver _sql = [ { "id": 2, "name": "Romain", "email": "*****@*****.**", "phone": "5464654645", "location_lat": Decimal(12.46666), "location_lng": Decimal(13.46666), "vehicle_id_1": 1, "vehicle_id_2": 4, "v1_weight": 34, "v1_area": 1.4, "v1_max_weight": 3400, "v1_max_area": 41.4, "v2_weight": 567, "v2_area": 13.4, "v2_max_weight": 3400, "v2_max_area": 41.3, } ] v1 = {"id": 1, "registration": "", "type": "", "area": 1.4, "weight": 34, "max_area": 41.4, "max_weight": 3400} v2 = {"id": 1, "registration": "", "type": "", "area": 1.4, "weight": 34, "max_area": 41.4, "max_weight": 3400} driver = Driver(_sql[0]) from application.controllers.driverController import get_all_drivers mocker.patch.object(DBHandler, "query", return_value=_sql) res = get_all_drivers(2, return_obj=True, vehicles=True) assert isinstance(res, list) assert len(res) == 1 assert res[0] == driver mocker.stopall()