コード例 #1
0
ファイル: views.py プロジェクト: MarcoPolo/SharkByte
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()
コード例 #2
0
ファイル: views.py プロジェクト: brittkistner/demo_1
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)
コード例 #3
0
ファイル: views.py プロジェクト: brittkistner/demo_1
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)
コード例 #4
0
ファイル: views.py プロジェクト: JKtrigger/rbpi
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")