def post(self):
        args = parser.parse_args()
        name = args['name']
        items_id = args['items']
        destination = args['address']
        creation_date = datetime.datetime.now()

        bill = 0

        # Update items availability in inventory
        for item_id in items_id:
            resp_get_item = requests.get("http://inventory:5000/items/" +
                                         item_id)
            data = resp_get_item.json()
            curr_availability = data['availability']
            resp_update_item = requests.put("http://inventory:5000/items/"+\
            item_id, json={'availability': curr_availability - 1})

            bill += data['price']

        # TODO: add id and delivery at saving Order

        order = Order( name=name, bill=bill, items=items_id, \
         creation_date=creation_date, destination=destination)
        order.save()

        resp_create_delivery = requests.post("http://tracking:5000/tracking", \
         json={'destination': destination, 'order_id': str(order._id)})
        print(resp_create_delivery.text, '\n\n')
        order.delivery_id = resp_create_delivery.json()['_id']
        order.save()
        return jsonify(pretty(order))
def create_selenium_dummy_order(from_raw, to_raw):
    order = Order(passenger=SELENIUM_PASSENGER,
                  station=SELENIUM_STATION,
                  status=ACCEPTED,
                  from_city=City.objects.get(name="תל אביב יפו"),
                  from_country=Country.objects.get(code="IL"),
                  from_geohash=u'swnvcbdruxgz',
                  from_lat=u'32',
                  from_lon=u'34',
                  from_raw=from_raw,
                  from_street_address=u'street1',
                  to_city=City.objects.get(name="תל אביב יפו"),
                  to_country=Country.objects.get(code="IL"),
                  to_geohash=u'swnvcbdruxgz',
                  to_lat=u'32',
                  to_lon=u'34',
                  to_raw=to_raw,
                  to_street_address=u'street2',
                  create_date=datetime.datetime.now() -
                  datetime.timedelta(hours=1))
    order.save()

    return order
Exemple #3
0
def order(request):
    cart = Cart(request)
    if cart.get_summary_quantity() == 0:
        return redirect('main-page')
    if request.method == 'GET':
        form = CustomerForm()
        return render(request, 'ordering/index.html', {'form': form, 'cart': cart})
    if request.method == 'POST':
        post = request.POST
        form = CustomerForm(request.POST)
        try:
            customer = Customer.objects.get(first_name=post.get('first_name'), last_name=post.get('last_name'),
                                            phone_number=post.get('phone_number'))
        except Customer.DoesNotExist as err:
            print(err)
            if {'first_name', 'last_name', 'phone_number'} < set(post.keys()):
                customer = Customer(first_name=post['first_name'], last_name=post['last_name'],
                                    phone_number=post['phone_number'])
                customer.save()
        if not customer:
            return JsonResponse({'message': 'error'})
        order = Order()
        order.status = 'made'
        order.address = post.get('address')
        order.customer = customer
        order.save()
        # print(customer)
        cart = Cart(request)
        for position in cart.get_products():
            order_position = OrderPosition()
            order_position.product = position['product']
            order_position.quantity = position['quantity']
            order_position.order = order
            order.save()
        print(order)
        return render(request, 'ordering/index.html', {'form': form, 'cart': cart})
Exemple #4
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)