def makeAnOrder(post, menuid, request): mealid = post['dinner'] timeslotid = int(post['id_timeslot']) timeSlot = TimeSlot.objects.get(pk=timeslotid) employee = Employee.objects.get(pk=request.session['employeeID']) meal = Meal.objects.get(pk=mealid) instructions = post['specialIns'] state = 'r' orders = Order.objects.filter(employee=employee) if (findMeal(orders, meal.meal_type) == -1): if( checkSpotsRemaining(timeslotid, menuid) > 0): newOrder = Order(employee=employee, timeSlot=timeSlot, menuid=menuid, timeslotid=timeslotid, meal=meal, instructions=instructions, state=state) newOrder.save()
def checkout(request,cart_id): cart = ShoppingCart.objects.get(pk=cart_id) food_quantities = cart.food_quantities.all() restaurant = cart.restaurant customer = request.user order = Order(customer=customer,restaurant=restaurant) order.save() for food_quantity in food_quantities: # food_id = food_quantity.food.id food = food_quantity.food quantity = food_quantity.quantity order_food_quantity = OrderFoodQuantity(food=food, quantity=quantity, order=order) order_food_quantity.save() food_quantity.delete() cart.delete() data={ 'order':order, 'restaurant':restaurant, } return render(request, 'checkout.html', data)
def checkout(request, cart_id): cart = ShoppingCart.objects.get(pk=cart_id) food_quantities = cart.food_quantities.all() restaurant = cart.restaurant customer = request.user order = Order(customer=customer, restaurant=restaurant) order.save() for food_quantity in food_quantities: # food_id = food_quantity.food.id food = food_quantity.food quantity = food_quantity.quantity order_food_quantity = OrderFoodQuantity(food=food, quantity=quantity, order=order) order_food_quantity.save() food_quantity.delete() cart.delete() data = { 'order': order, 'restaurant': restaurant, } return render(request, 'checkout.html', data)
def submit_order(request): post = request.POST if request.user.username != post.get('user', -1): return send_login(request) orders = {} for key in post.keys(): value = post.get(key) option = re.compile( '((?P<option_menu>[a-z]{5,6})_)?(?P<date>\d{4}-\d{2}-\d{2})') result = option.match(key) # собираем данные перед сабминитом if result: option_menu = result.group('option_menu') or 'place' # todo : ОПРЕДЕЛИТСЯ СО СТРАНДАРТОМ # где то предаю , где то не передаю option_menu = option_menu.replace('group', 'place') date = result.group('date') if option_menu == 'count': if orders.get(date, None): orders[date].update({ 'first': value or 0, 'second': value or 0, 'salad': value or 0, }) else: if option_menu is 'place': orders[date] = {option_menu: value or 0} continue orders[date] = { 'first': value or 0, 'second': value or 0, 'salad': value or 0, } continue if orders.get(date, None): orders[date].update({option_menu: value or 0}) else: orders[date] = {option_menu: value or 0} list_to_save_orders = [] disabled_dates = map( lambda x: x.isoformat(), list( DisableDateOrder.objects.filter( disabled_date__in=orders.keys()).values_list('disabled_date', flat=True))) message = '' for order in orders: if order in disabled_dates: # FIXME: выполняется в цикле message = { 'success': u'lunches successfully ordered, \n\n\n\nbut' u' some of dates are ignored {} ' u' any order changes '.format(disabled_dates) } continue if orders.get(order, {}).get('place', None): # если задано место, даже без обеда # то сохраняем заказ # Нужно для отмены заказа Order.objects.filter( customer=request.user, order_date=order, ).delete() options_to_save = { 'customer': request.user, 'user_modifier': request.user, 'order_date': order, 'office': Office.objects_active_offices.get( name=orders.get(order, {}).get('place')), 'first_course': orders.get(order, {}).get('first'), 'second_course': orders.get(order, {}).get('second'), 'salad': orders.get(order, {}).get('salad'), } list_to_save_orders.append(Order(**options_to_save)) message = message or {'success': u'lunches successfully ordered'} try: # fixme: list_to_save = [] ? Order.objects.bulk_create(list_to_save_orders) except Exception as err: message = {'error': 'unsuccessfully', 'details': err} # TODO : logger else: user = BaseRBPIUser.objects_active_users.get(username=request.user) send_email.delay(user.email, 'Your order received successfully', 'Order changes') return HttpResponse(json.dumps(message), content_type="application/json")