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
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})
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)