예제 #1
0
def manual_dispatch(request, work_station, ride_id):
    ride = SharedRide.by_id(ride_id)
    taxi_number = request.POST.get("taxi_number")
    pickup_estimate = request.POST.get("pickup_estimate")
    if taxi_number and pickup_estimate and ride and ride.station == work_station.station:
        ride.taxi_number = taxi_number
        ride.pickup_estimate = int(pickup_estimate)

        fleet_manager.cancel_ride(ride)
        fleet_manager.create_ride(ride)

        ride.change_status(old_status=RideStatus.VIEWED, new_status=RideStatus.ACCEPTED)

        return HttpResponse("OK")

    return HttpResponseForbidden()
예제 #2
0
def manual_dispatch(request, work_station, ride_id):
    ride = SharedRide.by_id(ride_id)
    taxi_number = request.POST.get("taxi_number")
    pickup_estimate = request.POST.get("pickup_estimate")
    if taxi_number and pickup_estimate and ride and ride.station == work_station.station:
        ride.taxi_number = taxi_number
        ride.pickup_estimate = int(pickup_estimate)

        fleet_manager.cancel_ride(ride)
        fleet_manager.create_ride(ride)

        ride.change_status(old_status=RideStatus.VIEWED,
                           new_status=RideStatus.ACCEPTED)

        return HttpResponse("OK")

    return HttpResponseForbidden()
예제 #3
0
def resend_to_fleet_manager(request, ride_id):
    resend_result = False

    ride = SharedRide.by_id(ride_id)
    cancel_result = fleet_manager.cancel_ride(ride)
    if cancel_result:
        resend_result = fleet_manager.create_ride(ride)

    return JSONResponse({'result': resend_result})
예제 #4
0
def resend_to_fleet_manager(request, ride_id):
    resend_result = False

    ride = SharedRide.by_id(ride_id)
    cancel_result = fleet_manager.cancel_ride(ride)
    if cancel_result:
        resend_result = fleet_manager.create_ride(ride)

    return JSONResponse({'result': resend_result})
예제 #5
0
def reassign_ride(request, work_station, ride_id):
    ride = SharedRide.by_id(ride_id)
    if ride and ride.station == work_station.station:
        ride.update(taxi_number=None)
        if fleet_manager.cancel_ride(ride) and fleet_manager.create_ride(ride):
            return HttpResponse("OK")
        else:
            logging.error("could not reassign ride: %s" % ride_id)

    return HttpResponseForbidden()
예제 #6
0
def reassign_ride(request, work_station, ride_id):
    ride = SharedRide.by_id(ride_id)
    if ride and ride.station == work_station.station:
        ride.update(taxi_number=None)
        if fleet_manager.cancel_ride(ride) and fleet_manager.create_ride(ride):
            return HttpResponse("OK")
        else:
            logging.error("could not reassign ride: %s" % ride_id)

    return HttpResponseForbidden()
예제 #7
0
def create_ny_isr_ride(request, ride_id):
    ride = SharedRide.by_id(ride_id)
    if not ride:
        msg = "no SharedRide found with id=%s" % ride_id
        logging.error(msg)
        return HttpResponseBadRequest(msg)

    if settings.LOCAL:
        isrproxy_id = 2738544
        test_station_id = 1008
    else:
        isrproxy_id = 3673085
        test_station_id = 1713061  # amir_station_1

    if ride.debug:
        target_station_id = test_station_id
        target_station_isr_id = 8  # test station isr id
    else:
        # real rides created from stable - send to New York taxi station
        target_station_id = 1529226
        target_station_isr_id = 10

    logging.info(u"create_ny_isr_ride: %s" %
                 u", ".join([unicode(s) for s in [target_station_id, ride]]))

    if not (ride.station and ride.station.id == target_station_id):
        msg = "wrong station: ride.station=%s target_station=%s" % (
            ride.station, target_station_id)
        logging.error(msg)
        response = HttpResponseBadRequest(msg)
    else:
        # fix the station data since stable.Station does not have fleet field
        if not ride.station.fleet_station_id:
            ride.station.fleet_station_id = target_station_isr_id
            ride.station.save()

        ride.dn_fleet_manager_id = isrproxy_id
        ride.save()

        result = fleet_manager.create_ride(ride)
        response = HttpResponse(str(result))

    return response
예제 #8
0
def create_ny_isr_ride(request, ride_id):
    ride = SharedRide.by_id(ride_id)
    if not ride:
        msg = "no SharedRide found with id=%s" % ride_id
        logging.error(msg)
        return HttpResponseBadRequest(msg)

    if settings.LOCAL:
        isrproxy_id = 2738544
        test_station_id = 1008
    else:
        isrproxy_id = 3673085
        test_station_id = 1713061 # amir_station_1

    if ride.debug:
        target_station_id = test_station_id
        target_station_isr_id = 8 # test station isr id
    else:
        # real rides created from stable - send to New York taxi station
        target_station_id = 1529226
        target_station_isr_id = 10

    logging.info(u"create_ny_isr_ride: %s" % u", ".join([unicode(s) for s in [target_station_id, ride]]))

    if not (ride.station and ride.station.id == target_station_id):
        msg = "wrong station: ride.station=%s target_station=%s" % (ride.station, target_station_id)
        logging.error(msg)
        response = HttpResponseBadRequest(msg)
    else:
        # fix the station data since stable.Station does not have fleet field
        if not ride.station.fleet_station_id:
            ride.station.fleet_station_id = target_station_isr_id
            ride.station.save()

        ride.dn_fleet_manager_id = isrproxy_id
        ride.save()

        result = fleet_manager.create_ride(ride)
        response = HttpResponse(str(result))

    return response
예제 #9
0
def create_ride(address, comments, passenger_phone, first_name, last_name, start_time, finish_time, station_id, as_raw_output):
    from common.tz_support import set_default_tz_time
    from geo.coder import geocode

    if not address:
        return "Please choose a valid street address: street, house number and city"

    lat, lon, city, street, house_number = None, None, None, None, None
    results = geocode(address, lang_code="he")
    if results:
        result = results[0]
        if "street_address" in result["types"]:
            lat = result["geometry"]["location"]["lat"]
            lon = result["geometry"]["location"]["lng"]

            for component in result["address_components"]:
                if "street_number" in component["types"]:
                    house_number = component["short_name"]
                if "route" in component["types"]:
                    street = component["short_name"]
                if "locality" in component["types"]:
                    city_name = component["short_name"]
                    city = City.objects.get(name=city_name)

    if not all([lat, lon, city, street, house_number]):
        return "Please choose a valid street address: street, house number and city"

    user = User()
    user.first_name = first_name
    user.last_name = last_name

    passenger = Passenger()
    passenger.user = user
    passenger.phone = passenger_phone
    passenger.id = random.randrange(1, 999999)

    order = Order()
    order.id = random.randrange(1, 999999)
    order.from_raw = address
    order.from_city = city
    order.from_street_address = street
    order.from_house_number = house_number
    order.from_lat = lat
    order.from_lon = lon
    order.comments = comments
    order.depart_time = set_default_tz_time(datetime.datetime.strptime(start_time, "%Y-%m-%dT%H:%M:%S")) if start_time else None
    order.arrive_time = set_default_tz_time(datetime.datetime.strptime(finish_time, "%Y-%m-%dT%H:%M:%S")) if finish_time else None
    order.passenger = passenger

    station = Station()
    station.fleet_manager = isr_fm
    station.fleet_station_id = station_id or 8 # waybetter station operator id

    ride = FakeSharedRide([order])
    ride.id = random.randrange(1, 999999)
    ride.station = station
    ride.dn_fleet_manager_id = isr_fm.id
    ride.status = ASSIGNED

    DEV_WB_ONGOING_RIDES.append(ride)

    if as_raw_output:
        ex_order = ISR._create_external_order(order, station.fleet_station_id)
        reply = ISR._get_client().service.Insert_External_Order(ISR._get_login_token(), ex_order)
        return reply

    return "%s ride id=%s" % (fleet_manager.create_ride(ride), ride.id)
예제 #10
0
def create_ride(address, comments, passenger_phone, first_name, last_name,
                start_time, finish_time, station_id, as_raw_output):
    from common.tz_support import set_default_tz_time
    from geo.coder import geocode

    if not address:
        return "Please choose a valid street address: street, house number and city"

    lat, lon, city, street, house_number = None, None, None, None, None
    results = geocode(address, lang_code="he")
    if results:
        result = results[0]
        if "street_address" in result["types"]:
            lat = result["geometry"]["location"]["lat"]
            lon = result["geometry"]["location"]["lng"]

            for component in result["address_components"]:
                if "street_number" in component["types"]:
                    house_number = component["short_name"]
                if "route" in component["types"]:
                    street = component["short_name"]
                if "locality" in component["types"]:
                    city_name = component["short_name"]
                    city = City.objects.get(name=city_name)

    if not all([lat, lon, city, street, house_number]):
        return "Please choose a valid street address: street, house number and city"

    user = User()
    user.first_name = first_name
    user.last_name = last_name

    passenger = Passenger()
    passenger.user = user
    passenger.phone = passenger_phone
    passenger.id = random.randrange(1, 999999)

    order = Order()
    order.id = random.randrange(1, 999999)
    order.from_raw = address
    order.from_city = city
    order.from_street_address = street
    order.from_house_number = house_number
    order.from_lat = lat
    order.from_lon = lon
    order.comments = comments
    order.depart_time = set_default_tz_time(
        datetime.datetime.strptime(
            start_time, "%Y-%m-%dT%H:%M:%S")) if start_time else None
    order.arrive_time = set_default_tz_time(
        datetime.datetime.strptime(
            finish_time, "%Y-%m-%dT%H:%M:%S")) if finish_time else None
    order.passenger = passenger

    station = Station()
    station.fleet_manager = isr_fm
    station.fleet_station_id = station_id or 8  # waybetter station operator id

    ride = FakeSharedRide([order])
    ride.id = random.randrange(1, 999999)
    ride.station = station
    ride.dn_fleet_manager_id = isr_fm.id
    ride.status = ASSIGNED

    DEV_WB_ONGOING_RIDES.append(ride)

    if as_raw_output:
        ex_order = ISR._create_external_order(order, station.fleet_station_id)
        reply = ISR._get_client().service.Insert_External_Order(
            ISR._get_login_token(), ex_order)
        return reply

    return "%s ride id=%s" % (fleet_manager.create_ride(ride), ride.id)
예제 #11
0
def dispatch_ride(pickmeapp_ride):
    if pickmeapp_ride.dn_fleet_manager_id:
        fleet_manager.create_ride(pickmeapp_ride)
    else:
        logging.info("pickmeapp ride %s has no fleet manager" % pickmeapp_ride.id)