コード例 #1
0
def get_common_context(request):
    c = {}
    
    form = OrderForm()
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save(request.POST['action'])
            if request.POST['action'] == 'request':
                c['order_ok'] = True
            else: 
                c['feedback_ok'] = True
            form = OrderForm()
    c['form'] = form
    
    c['request_url'] = request.path
    c['is_debug'] = settings.DEBUG
    c['phone'] = config_value('MyApp', 'PHONE')
    ORDERS_COUNT = int(config_value('MyApp', 'ORDERS_COUNT'))
    c['oc_3'] = ORDERS_COUNT % 10
    ORDERS_COUNT = ORDERS_COUNT / 10
    c['oc_2'] = ORDERS_COUNT % 10
    c['oc_1'] = ORDERS_COUNT / 10
    c.update(csrf(request))
    return c
コード例 #2
0
ファイル: views.py プロジェクト: ayush-f/helmet_nepal
def create(request):
    print(request.POST)
    if request.method == "POST":
        form = OrderForm(request.POST)
        form.save()
        request.session.clear()
        return redirect("/")
コード例 #3
0
 def form_valid(self, request):
     if self.request.method == 'POST':
         form = OrderForm(self.request.POST, self.request.FILES)
         if form.is_valid():
             form.save()
             return HttpResponse("order created!!!")
         return render(request, self.template_name, {'form': form})
     else:
         return render(request, self.template_name)
コード例 #4
0
def create(request):
    print(request.POST)
    if request.method == "POST":
        form = OrderForm(request.POST)
        form.save()
        return redirect("/order")
    else:
        form = OrderForm()
    return render(request, "order/create.html", {'form': form})
コード例 #5
0
def update(request, id):
    order = Order.objects.get(order_id=id)
    if request.method == "POST":
        form = OrderForm(request.POST, instance=order)
        form.save()
        return redirect("/order")
    else:
        form = OrderForm(instance=order)
    return render(request, "order/edit.html", {'form': form})
コード例 #6
0
ファイル: views.py プロジェクト: kpx13/forward
def order(request):
    c = get_common_context(request)
    #c.update({'p': Page.get('order', c['lang'])})
    if request.method == 'GET':
        c.update({'form': OrderForm()})
    elif request.method == 'POST':
        form = OrderForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            form = OrderForm()
            c['feedback_ok'] = True
        c.update({'form': form})
    return render_to_response('order.html', c, context_instance=RequestContext(request))
コード例 #7
0
ファイル: views.py プロジェクト: kpx13/h2h
def order(request):
    c = get_common_context(request)
    form = OrderForm()
    # filter real countries
    c["countries"] = Country.objects.filter(wt_4=False)
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save()
            c["order_ok"] = True
            form = OrderForm()
    c["form"] = form
    return render_to_response("order.html", c, context_instance=RequestContext(request))
コード例 #8
0
def Order(request):
    '''
    Render the order page
    '''
    template = 'order/order.html'
    if request.method == 'GET':
        return render(request, template, {'orderForm': OrderForm()})

    orderForm = OrderForm(request.POST)
    if not orderForm.is_valid():
        return render(request, template, {'orderForm': OrderForm})
    orderForm.save()
    return render(request, 'main/main.html')
コード例 #9
0
 def post(self, request, *args, **kwargs):
     form = OrderForm(request.POST or None)
     customer = Customer.objects.get(user=request.user)
     if form.is_valid():
         new_order = form.save(commit=False)
         new_order.customer = customer
         new_order.first_name = form.cleaned_data['first_name']
         new_order.last_name = form.cleaned_data['last_name']
         new_order.phone = form.cleaned_data['phone']
         new_order.address = form.cleaned_data['address']
         new_order.delivery_type = form.cleaned_data['delivery_type']
         new_order.order_date = form.cleaned_data['order_date']
         new_order.comment = form.cleaned_data['comment']
         new_order.save()
         self.cart.in_order = True
         self.cart.save()
         new_order.cart = self.cart
         new_order.save()
         customer.orders.add(new_order)
         messages.add_message(
             request, messages.INFO,
             f'Благодарим за заказ, {new_order.first_name}! Заказ будет обработан в течение 30 минут'
         )
         return HttpResponseRedirect('/')
     return HttpResponseRedirect('/checkout/')
コード例 #10
0
ファイル: views.py プロジェクト: zshuangyan/syan
def order_create(request):
    cart = Cart(request)
    user = request.user
    if request.method == 'POST':
        form= OrderForm(user,request.POST)
        order = form.save(commit = False)
        order.user = user
        order.save()
        for item in cart:
            OrderItem.objects.create(order= order, book = item.book , quantity= item.quantity)
        cart.clear()
        return redirect('order:order_detail', order_id = order.order_id)
    else:
        form = OrderForm(user)
        categories =[]
        for item in cart:
            category = item.book.category
            if category not in categories:
                categories.append(category)
        if categories:
            related_books = Book.objects.filter(category = categories[0])
            if len(categories)>1:
                for category in categories[1:]:
                    related_books= related_books|(Book.objects.filter(category = category))
        related_books = related_books[:5]
        return render(request,'order/order_form.html',{'cart':cart, 'form':form,'related_books':related_books})
コード例 #11
0
ファイル: views.py プロジェクト: kpx13/classicag
def order(request):
    c = get_common_context(request)
    if request.method == "POST":
        if "step" in request.POST:
            step = int(request.POST["step"])
            res = []
            sum_price = 0
            for k, v in request.POST.iteritems():
                if k.startswith("field_") and int(v) > 0:
                    item = Item.get(int(k[6:]))
                    count = int(v)
                    res.append((item, count))
                    sum_price += item.price * count
            c["sum_price"] = sum_price
            c["order_content"] = res
            if step == 1:
                c["form"] = OrderForm()
                return render_to_response("order.html", c, context_instance=RequestContext(request))
            elif step == 2:
                form = OrderForm(request.POST)
                if form.is_valid():
                    ord = form.save()
                    print ord
                    for item, count in res:
                        OrderContent(order=ord, item=item, count=count).save()
                    ord.send_email()
                    return render_to_response("order_ok.html", c, context_instance=RequestContext(request))
                else:
                    c["form"] = form
                    return render_to_response("order.html", c, context_instance=RequestContext(request))
        else:
            raise Http404()
    else:
        raise Http404()
コード例 #12
0
    def post(self, request, *args, **kwargs):
        form = OrderForm(request.POST, prefix='order')
        user = UserOrderForm(request.POST, prefix='user')
        if user.is_valid():
            user = user.save()
        elif not request.POST.get('phone') or not request.POST.get('name'):
            user = User.objects.get(name='Администратор')

        if form.is_valid():
            cart = Cart()
            cart.session_id = request.session.session_key
            cart.save()
            order = form.save(commit=False)
            order.user = user
            order.cart = cart
            order.save()
            return JsonResponse({
                'result': True,
                'href': '/order/edit/%s' % order.id,
                'item_id': order.id
            })
        else:
            return JsonResponse({
                'errors': form.errors,
                'user-errors': user.errors
            })
コード例 #13
0
def order(request):
	if request.POST:
		form = OrderForm(request.POST)
		if form.is_valid():
			order = form.save(commit=False)
		else:
			return render_to_response("order.html",{"form":form},context_instance=RequestContext(request))
		try:
			cart = Cart.objects.get(id = request.session.get("cart"))
		except:
			return HttpResponse("Server Error")
		cart.status = 'off'
		cart.save()
		order.cart = cart
		order.delivery = cart.delivery
		del request.session['cart']
		order.serial = serial_generator()
		order.save()
		#mailing(order,request)
		for i in cart.items.all():
			i.size.stock-=i.quantity
			i.size.save()
		return render_to_response("thanks.html",{ "order":order }, context_instance=RequestContext(request))
	else:
		form = OrderForm()
		return render_to_response("order.html",{"form":form},context_instance=RequestContext(request))
コード例 #14
0
ファイル: views.py プロジェクト: alejo8591/backend-lab
def add_order(request):

    if request.method == 'POST':

        form = OrderForm(request.POST)

        if form.is_valid():
            form.save()

            return redirect(index)
        else:
            print(form.errors)

    else:
        context = {'form':OrderForm()}

    return render(request, 'add_order.html',context)
コード例 #15
0
ファイル: views.py プロジェクト: kpx13/cargo
def order_page(request):
    c = get_common_context(request)
    c.update(pages.views.get_page('order'))

    if request.POST:
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save()
            form = OrderForm()
            c['done'] = True
            messages.success(request, u'Ваш заказ успешно отправлен.')
    else:
        form = OrderForm()

    c['form'] = form

    return render_to_response('vn.html', c, context_instance=RequestContext(request))
コード例 #16
0
def orderCreate(request):
    '''
    Create a new order instance
        1. If method is GET, render an empty form
        2. If method is POST, perform form validation and display error messages if the form is invalid
        3. Save the form to the model and redirect the user to the article page
    '''
    template = 'order/orderCreate.html'
    if request.method == 'GET':
        return render(request, template, {'orderForm':OrderForm()})
    # POST
    orderForm = OrderForm(request.POST)
    if not orderForm.is_valid():
        return render(request, template, {'orderForm':orderForm})

    orderForm.save()
    return render(request, 'main/main.html')
コード例 #17
0
ファイル: views.py プロジェクト: alejo8591/backend-lab
def add_order(request):

    if request.method == "POST":

        form = OrderForm(request.POST)

        if form.is_valid():
            form.save()

            return redirect(order_index)
        else:
            print(form.errors)

    else:
        context = {"form": OrderForm()}

    return render(request, "add_order.html", context)
コード例 #18
0
def veg_food_view(request):
    veg_types = FoodItem.objects.filter(
        food_super_class__class_name__contains="veg")
    veg_dict = {'veg_records': veg_types}
    form = OrderForm()

    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save(commit=True)
            return redirect('type/')
        else:
            print("Error")
    return render(request, 'order/veg_food.html', {
        'form': form,
        'veg_records': veg_dict
    })
コード例 #19
0
ファイル: views.py プロジェクト: webapps963/blog
def orderCreate(request):
    '''
    Create a new article instance
        1. If method is GET, render an empty form
        2 . If method is POST, perform form validation. Display error messages if the form is invalid
        3. Save the form to the model and redirect to the article page
    '''
    template = 'order/orderCreate.html'
    if request.method == 'GET':
        print(OrderForm())
        return render(request, template, {'orderForm': OrderForm()})
    # POST
    orderForm = OrderForm(request.POST)
    if not orderForm.is_valid():
        return render(request, template, {'orderForm': orderForm})
    orderForm.save()
    messages.success(request, '訂單已傳送')
    return redirect('order:order')
コード例 #20
0
def update_order(request, order_id):

    order = get_object_or_404(Cust_order, pk=order_id)
    order_form = OrderForm(request.POST or None, instance=order)

    if request.method == 'POST':

        if order_form.is_valid():
            order_form.save()
            return HttpResponseRedirect(reverse('admin_app:order_report'))
        else:
            print(order_form.errors)
    else:
        context = {
            'order_form': order_form,
            'order_id': order_id,
        }

        return render(request, 'admin_app/order_form.html', context=context)
コード例 #21
0
ファイル: views.py プロジェクト: varikin/nom
def create_order(request):
    if request.method == 'POST':
        orderForm = OrderForm(request.POST)
        if orderForm.is_valid():
            order = orderForm.save()
            return redirect(order)
    else:
        orderForm = OrderForm()

    return {
        'orderForm': orderForm,
    }
コード例 #22
0
ファイル: views.py プロジェクト: suarezlucas28/OrderApp
def OrderView(request,order_id=None):
    
    if order_id:
        order = Order.objects.filter(pk=order_id)
    else:
        order = Order()
    
    NestedFormset = inlineformset_factory(Order,DetailOrder,form=DetailForm,can_delete=True)
    
    if request.method == 'POST':
        main_form = OrderForm(request.POST, instance=order)
        detail_form = NestedFormset(request.POST, request.FILES, instance=order)
        
        if main_form.is_valid() and detail_form.is_valid():
            main_form.save()
            detail_form.save()
            return HttpResponseRedirect('summary')
    else:
        main_form = OrderForm(instance=order)
        detail_form = NestedFormset(instance=order)
    return render_to_response('order.html', {'main_form':main_form,'detail_form':detail_form},context_instance=RequestContext(request))
    
コード例 #23
0
    def post(self, request, *args, **kwargs):
        order = Order.objects.get(id=kwargs.get['id'])
        user = UserOrderForm(request.POST, prefix="user", instance=order.user)
        order = OrderForm(request.POST, prefix="order", instance=order)

        if user.is_valid():
            user.save()
        else:
            return JsonResponse({
                'errors': user.errors,
                'non-field': user.non_field_errors()
            })

        if order.is_valid():
            order.save()
        else:
            return JsonResponse({
                'errors': order.errors,
                'non-field': order.non_field_errors()
            })

        return JsonResponse({'result': True})
コード例 #24
0
def place_order(request):
    if request.method == "POST":
        form = OrderForm(request.POST, request.FILES)

        if form.is_valid():
            data = form.save(commit=False)
            custm_user = CustomUser.objects.filter(user=request.user).first()
            data.user = custm_user
            data.save()
            return HttpResponseRedirect(reverse('home'))
    else:
        form = OrderForm()

    return render(request, "order/index.html", {'form': form})
コード例 #25
0
ファイル: views.py プロジェクト: fox1985/news_dom
def listing(request, listing_id):
  """Страница listing"""
  listing = get_object_or_404(Listing, pk=listing_id)
  form = OrderForm(request.POST or None, initial={'listing': listing} )

  if request.method == "POST":
    if form.is_valid():
      form.save()

      send_mail('Заявка от torrehome.ru', 'Зайдите в админку чтобы почетать заявку',  'torrehome.ru/admin/',
                ['*****@*****.**'], fail_silently=False)
      return  HttpResponseRedirect("{}?sended=True".format(reverse('listing', kwargs={'listing_id': listing_id})), )




  context = {
    'listing': listing,
    'form' : form,
    'sended': request.GET.get("sended", False)
  }

  return render(request, 'listings/listing.html', context)
コード例 #26
0
def order(request):
    context = {}

    basket = Basket.get_session_basket(request.session._session_key)

    # if not basket['goods_count']:
    #     return HttpResponseRedirect('/')

    if request.method.lower() == 'post':
        order_form = OrderForm(request.POST, basket_summary=basket['summary'])
        context['show_form'] = True

        if order_form.is_valid():
            order_instance = order_form.save(commit=False)
            order_instance.delivery_price = order_form.cleaned_data['delivery_price']
            order_instance.delivery_type = order_form.cleaned_data['delivery_type_label']
            order_instance.delivery_time = order_form.cleaned_data['delivery_time']
            order_instance.make_order(request.session.session_key)

            send_order_email(order_instance, request.META.get('HTTP_HOST'))

            if order_instance.pay_type not in ('nal', 'nalk'):
                # оплата онлайн
                payment_url = WalletonePaymentForm(initial={
                    'WMI_PAYMENT_AMOUNT': order_instance.total_price(),
                    'WMI_PAYMENT_NO': order_instance.id,
                    'WMI_DESCRIPTION': u'%s заказ №%s' % (request.get_host(), order_instance.id)
                }, host=settings.HOST).get_redirect_url()
                return HttpResponseRedirect(payment_url)
            else:
                # оплата наличными
                return HttpResponseRedirect(reverse('ordered', args=(order_instance.id, )))

    else:
        order_form = OrderForm(basket_summary=basket['summary'])

    context['for_order'] = True
    context['order_form'] = order_form
    context['delivery_types'] = DELIVERY_TYPES
    context['pay_types'] = PAY_TYPES
    context['free_delivery_price'] = FREE_DELIVERY_PRICE
    context['add_toy_price'] = ADD_TOY_PRICE

    add_goods_filter = Q(show_in_bouquets=True)
    context['add_goods'] = list(Bouquet.active_objects().filter(add_goods_filter))
    context['add_goods'].extend(list(Unusual.active_objects().filter(add_goods_filter)))
    context['add_goods'].extend(list(Special.active_objects().filter(add_goods_filter)))
    shuffle(context['add_goods'])

    return render(request, 'order.html', context)
コード例 #27
0
 def post(self, request, client_id):
     """Save order and redirect to order list."""
     form = OrderForm(request.POST)
     client = get_object_or_404(Client, id=client_id)
     if form.is_valid():
         new_order = form.save(commit=False)
         new_order.client = client
         new_order.save()
         return redirect('order:orders')
     else:
         return render(request, 'order/add-order.html', {
             'form': form,
             'func': 'Add',
             'client': client
         })
コード例 #28
0
 def post(self, request, id):
     """Save order and redirect to order list."""
     order = get_object_or_404(Order, id=id)
     client = get_object_or_404(Client, id=order.client.id)
     form = OrderForm(request.POST, instance=order)
     if form.is_valid():
         new_order = form.save(commit=False)
         new_order.client = client
         new_order.save()
         return redirect('order:orders')
     else:
         return render(request, 'order/add-order.html', {
             'form': form,
             'func': 'Update',
             'order': order
         })
コード例 #29
0
def new_order(request):
    orderer_form = OrdererForm(request.POST)
    order_form = OrderForm(request.POST)
    if orderer_form.is_valid() and order_form.is_valid():
        orderer = orderer_form.save()

        order = order_form.save(commit=False)
        order.orderer = orderer
        order.save()

        for meatInfo in MeatPrice.objects.all():
            meatOrder = MeatOrder(order=order,
                                  meat_price=meatInfo,
                                  count=request.POST[meatInfo.name])
            meatOrder.save()
        return redirect(reverse('order:view_order', args=[orderer.id]))
コード例 #30
0
ファイル: views.py プロジェクト: genxstylez/Empor-Fashion
def index(request):
    cart = get_cart(request)
    items = CartItem.objects.filter(cart=cart)
    if request.method == 'POST':
        voucher_code = request.POST.get('voucher_code', None)
        form = OrderForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.discount_total = cart.discount_total
            order.gross_total = cart.gross_total
            order.net_total = cart.net_total
            order.user = request.user
            order.voucher_code = voucher_code
            order.order_id = ''
            order.billing_post_code = request.POST['billing_zip']
            order.billing_county = request.POST['billing_county']
            order.billing_district = request.POST['billing_district']
            order.shipping_post_code = request.POST['shipping_zip']
            order.shipping_county = request.POST['shipping_county']
            order.shipping_district = request.POST['shipping_district']
            order.save()
            request.session.save()
            request.session['order'] = order
            
            if order.payment_method == 0: 
                return redirect('order-paypal')
            else:
                return redirect('order-success')
    else:
        profile = request.user.profile
        form = OrderForm(initial={
                'billing_recipient': request.user.get_name(),
                'billing_phone' : profile.phone,
                'billing_address': profile.address,
                'billing_country': profile.country,
                'payment_method': 0,
                'reciept_type': 0,
                'dispatch_time': 0,
            }
        )
    try:
        voucher = request.session['voucher']
    except KeyError:
        voucher = None

    return render(request, 'order/index.html', {'cart': cart, 'form': form, 'items': items, 'voucher': voucher})
コード例 #31
0
def user_dash_view(request):
    orders = Order.objects.filter(
        user_details=request.user).order_by('-date_of_order')
    if (request.user.user_type == 'U'):
        if request.method == "POST":
            form = OrderForm(request.POST)
            if form.is_valid():
                order = form.save(commit=False)
                order.user_details = request.user
                order.status = 'P'
                order.save()
                # return redirect()
        else:
            form = OrderForm()
        return render(request, 'user/userhome2.html', {
            'orders': orders,
            'form': form
        })
コード例 #32
0
def plantBuy(request, plantId):
    template = 'shop/buyInfo.html'
    plant = get_object_or_404(Plant, id=plantId)
    context = {}
    if request.method == 'GET':
        context.update({
            'plant':
            plant,
            'orderForm':
            OrderForm(
                initial={
                    'name': request.user.fullName,
                    'email': request.user.email,
                    'address': request.user.address,
                    'plantName': plant.plantName
                })
        })
        return render(request, template, context)

    # POST
    orderForm = OrderForm(request.POST)
    print(orderForm)
    if not orderForm.is_valid():
        return render(request, template, {
            'plant': plant,
            'orderForm': orderForm
        })
    if plant.newPrice:
        realPrice = plant.newPrice
    else:
        realPrice = plant.price
    order = orderForm.save(commit=False)
    order.plant = plant
    order.customer = request.user
    order.totalPrice = realPrice
    order.save()
    messages.success(request, '購買成功')
    if request.user not in plant.buyes.all():
        plant.buyes.add(request.user)
        plant.inventory = plant.inventory - 1
        plant.save()
    return redirect('shop/shop.html')
コード例 #33
0
def order(request):
    c = get_common_context(request)
    if request.method == 'POST':
        if 'step' in request.POST:
            step = int(request.POST['step'])
            res = []
            sum_price = 0
            for k, v in request.POST.iteritems():
                if k.startswith('field_') and int(v) > 0:
                    item = Item.get(int(k[6:]))
                    count = int(v)
                    res.append((item, count))
                    sum_price += item.price * count
            c['sum_price'] = sum_price
            c['order_content'] = res
            if step == 1:
                c['form'] = OrderForm()
                return render_to_response(
                    'order.html', c, context_instance=RequestContext(request))
            elif step == 2:
                form = OrderForm(request.POST)
                if form.is_valid():
                    ord = form.save()
                    print ord
                    for item, count in res:
                        OrderContent(order=ord, item=item, count=count).save()
                    ord.send_email()
                    return render_to_response(
                        'order_ok.html',
                        c,
                        context_instance=RequestContext(request))
                else:
                    c['form'] = form
                    return render_to_response(
                        'order.html',
                        c,
                        context_instance=RequestContext(request))
        else:
            raise Http404()
    else:
        raise Http404()
コード例 #34
0
ファイル: views.py プロジェクト: rif/click2eat
def confirm_order(request, unit_id):
    has_profile = __user_has_profile(request.user)
    if has_profile != None: return has_profile
    oc = OrderCarts(request.session,unit_id)
    unit = oc.get_unit()
    total_sum = oc.get_total_sum()
    oc.update_prices()
    oc.check_and_show_odd_promotion_message(request)
    if not unit.is_open():
        messages.warning(request, _('This restaurant is now closed! Please check the open hours and set desired delivery time accordingly.'))
    if unit.minimum_ord_val > total_sum:
        messages.error(request, _('This restaurant has a minimum order value of %(min)d') % {'min': unit.minimum_ord_val})
        return redirect('restaurant:detail', unit_id=unit.id)
    """if current_order.address and not current_order.address.geolocation_error:
        src = (unit.latitude, unit.longitude)
        dest = (current_order.address.latitude, current_order.address.longitude)
        dist = distance.distance(src, dest)
        if  dist.km > unit.delivery_range:
            messages.warning(request, _('We are sorry, you are not in the delivery range of this restaurant.'))
            return redirect('restaurant:detail', unit_id=unit.id)"""
    if request.method == 'POST':
        form = OrderForm(request.POST)
        form.unit = unit
        if form.is_valid():
            order = form.save(commit=False)
            paid_with_bonus = 'paid_with_bonus' in form.data
            construct_order(request, oc, unit, order, paid_with_bonus)
            if not unit.is_open():
                return redirect('restaurant:detail', unit_id=unit.id)
            return redirect('order:timer', order_id=order.id)
    else:
        form = OrderForm()
    form.fields['delivery_type'] = forms.ModelChoiceField(unit.delivery_type.all(), required=True, initial={'primary': True})
    form.fields['address'] = forms.ModelChoiceField(queryset=DeliveryAddress.objects.filter(user=request.user), required=True, initial={'primary': True})
    profile = request.user.get_profile()
    show_pay_with_bonus = profile and profile.get_current_bonus() > total_sum    
    if show_pay_with_bonus:
        messages.info(request, _('Congratulations! You have enough bonus to pay for your order. Please check "Pay using bonus" to use it.'))
        form.fields['paid_with_bonus'] = forms.BooleanField(label=_('Pay using bonus'), help_text=_('We shall use the minimum number of received bonuses enough to cover the order total amount'), required=False)
    return locals()
コード例 #35
0
ファイル: views.py プロジェクト: cjh5414/jihun-MT-meat
def new_order(request):
    orderer_form = OrdererForm(request.POST)
    order_form = OrderForm(request.POST)

    if orderer_form.is_valid():
        orderer = orderer_form.save(commit=False)
        if orderer.is_exist():
            orderer = Orderer.objects.get(username=orderer.get_username())
        else:
            orderer.username = orderer.get_username()
            orderer.save()

        if order_form.is_valid():
            order = order_form.save(commit=False)
            order.orderer = orderer
            order.save()

        for meatInfo in MeatPrice.objects.all():
            meat_order = MeatOrder(order=order, meat_price=meatInfo, count=request.POST[meatInfo.name])
            meat_order.save()

        order.send_order_email()
        return redirect(reverse('order:view_order', args=[orderer.id]))
コード例 #36
0
def create_order(request):
    """使用 cart 的数据创建 order"""
    cart = Cart(request)
    if request.method == 'POST':
        order_form = OrderForm(request.POST)
        if order_form.is_valid():
            # create order
            order = order_form.save(commit=False)
            order.customer = request.user
            order.email = request.user.email
            if cart.coupon:
                order.coupon = cart.coupon
                order.discount = cart.coupon.discount
            order.save()
            # create order_item
            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            cart.clear()
            # store order id
            request.session['order_id'] = order.id
            # send notice mail by celery
            order_created.delay(order.id)
            # 推荐计分
            recommender = Recommender()
            recommender.cal_products_bought(
                [item.product for item in order.items.all()])
            # 重定向到支付页
            return redirect('order:payment_process')
    else:
        order_form = OrderForm()
    return render(request, 'order/create.html', {
        'order_form': order_form,
        'cart': cart
    })
コード例 #37
0
def order_detail(request):
    cart = Cart(request)
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid:
            order = form.save()
            for item in cart:
                print(item['product'])
                print(item['price'])
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         quantity=item['quantity'],
                                         price=item['price'])
            cart.clear()
            new_order = order
            print('ZAKAZ', order.id)
            return render(request, 'order/thanks_order.html',
                          {'order': new_order})
    else:
        form = OrderForm()
        return render(request, 'order/order_detail.html', {
            'form': form,
            'cart': cart
        })
コード例 #38
0
def get_common_context(request):
    form = OrderForm()
    hform = OrderHForm()
    fform = OrderFForm()
    c = {}
    if request.method == 'POST':
        if request.POST['action'] == 'subscribe':
            em = request.POST.get('email', None)
            if em:
                Subscribe(email=em).save()
                messages.success(request,
                                 u'Вы успешно подписались на рассылку.')
            else:
                messages.error(request, u'Необходимо ввести емейл.')
        elif request.POST['action'] == 'homeform':
            hform = OrderHForm(request.POST)
            if hform.is_valid():
                hform.save()
                messages.success(request, u'Ваша заявка успешно отправлена.')
                hform = OrderHForm()
            else:
                c['show_hform'] = True
                messages.error(request, u'Необходимо ввести имя и телефон.')
        elif request.POST['action'] == 'franchajzing':
            fform = OrderFForm(request.POST)
            if fform.is_valid():
                fform.save()
                messages.success(request, u'Ваша заявка успешно отправлена.')
                fform = OrderFForm()
            else:
                print fform.errors
                c['show_fform'] = True
                messages.error(request, u'Необходимо ввести имя и телефон.')
        else:
            form = OrderForm(request.POST)
            if form.is_valid():
                form.save()
                c['request-ok'] = True
            else:
                if request.POST['action'] == 'signup':
                    c['show_signup'] = True
                if request.POST['action'] == 'get':
                    c['show_get'] = True
                if request.POST['action'] == 'gift':
                    c['show_gift'] = True
                messages.error(request, u'Необходимо ввести имя.')

    c['request_url'] = request.path
    c['is_debug'] = settings.DEBUG
    c['reviews'] = Review.objects.all()[:3]
    c['form'] = form
    c['hform'] = hform
    c['fform'] = fform
    c['menu'] = Menu.objects.filter(parent=None)
    c['partners'] = Partner.objects.all()
    c['complex'] = Page.get_by_slug('complex').content

    try:
        c['menu_cat'] = Menu.get_by_href(request.path).parent
    except:
        c['menu_cat'] = None

    c['siteurl'] = request.get_host().split('.')[0]
    c['phone'] = config_value('MyApp', 'PHONE')
    c.update(csrf(request))
    return c
コード例 #39
0
ファイル: views.py プロジェクト: kpx13/fitngo
def get_common_context(request):
    form = OrderForm()
    hform = OrderHForm()
    fform = OrderFForm()
    c = {}
    if request.method == 'POST':
        if request.POST['action'] == 'subscribe':
            em = request.POST.get('email', None)
            if em:
                Subscribe(email=em).save()
                messages.success(request, u'Вы успешно подписались на рассылку.')
            else:
                messages.error(request, u'Необходимо ввести емейл.')
        elif request.POST['action'] == 'homeform':
            hform = OrderHForm(request.POST)
            if hform.is_valid():
                hform.save()
                messages.success(request, u'Ваша заявка успешно отправлена.')
                hform = OrderHForm()
            else:
                c['show_hform'] = True
                messages.error(request, u'Необходимо ввести имя и телефон.')
        elif request.POST['action'] == 'franchajzing':
            fform = OrderFForm(request.POST)
            if fform.is_valid():
                fform.save()
                messages.success(request, u'Ваша заявка успешно отправлена.')
                fform = OrderFForm()
            else:
                print fform.errors
                c['show_fform'] = True
                messages.error(request, u'Необходимо ввести имя и телефон.')
        else:
            form = OrderForm(request.POST)
            if form.is_valid():
                form.save()
                c['request-ok'] = True
            else:
                if request.POST['action'] == 'signup':
                    c['show_signup'] = True
                if request.POST['action'] == 'get':
                    c['show_get'] = True
                if request.POST['action'] == 'gift':
                    c['show_gift'] = True
                messages.error(request, u'Необходимо ввести имя.')

    c['request_url'] = request.path
    c['is_debug'] = settings.DEBUG
    c['reviews'] = Review.objects.all()[:3]
    c['form'] = form
    c['hform'] = hform
    c['fform'] = fform
    c['menu'] = Menu.objects.filter(parent=None)
    c['partners'] = Partner.objects.all()
    c['complex'] = Page.get_by_slug('complex').content
    
    try:
        c['menu_cat'] = Menu.get_by_href(request.path).parent
    except:
        c['menu_cat'] = None
        
    c['siteurl'] = request.get_host().split('.')[0]
    c['phone'] = config_value('MyApp', 'PHONE')
    c.update(csrf(request))
    return c
コード例 #40
0
ファイル: views.py プロジェクト: navill/port_django_shop
def create_order(request):
    cart = Cart(request)
    # 'if cart.products:' 를 별도로 구성하여 '장바구니가 비었습니다' 안내 페이지로 이동시킬 수 있음
    # 현재 구성은 장바구니가 비어있을 경우, 빈 폼 로드
    products = cart.products  # cart에 담긴 아이템들
    total_price = cart.get_total_price()  # 총 가격
    if products.exists() and request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            order_item_list = []
            order = form.save(commit=False)
            order.total_price = total_price
            order.user = request.user
            order.save()
            # dict-type의 Product 객체 생성
            product_bulk = products.in_bulk()
            for item in cart:
                order_item_obj = OrderWithItem(order=order,
                                               item=item['product'],
                                               price=int(item['price']) * int(item['quantity']),
                                               quantity=item['quantity'])
                # OrderWithItem 객체를 리스트에 추가
                order_item_list.append(order_item_obj)
                product_bulk[item['product'].id].quantity -= item['quantity']
                # 사용자 동작
                if request.user.is_authenticated:
                    pass
                    # user=Foreignkey(User) 이므로 request.user가 authenticated user가 아닐 경우 에러 발생
                    # track_action(user=request.user, verb='bought', content_object=item['product'])

            # bulk_create를 이용한 OrderWithItem db 생성
            order_items = OrderWithItem.objects.bulk_create(order_item_list)
            # bulk_update를 이용한 Product.quantity 업데이트(release version2.2)
            products.bulk_update(product_bulk.values(), ['quantity'])
            # 함께 구매한 아이템 등록
            r = Recommend()
            try:
                r.buy_item(products)
                print('bought in redis')
            except Exception as e:
                print(f'not connect redis:{e}')

            # for order_item in order_items:
            #     print(order_item.order.id)  # 주문번호
            #     print(order_item.item)      # 아이템
            #     print(order_item.price)     # 가격
            #     print(order_item.quantity)  # 수량

            # 주문 완료 시, 장바구니(session) 비우기
            cart.clear_session()
            return render(request, 'order/created.html', {'order': order, 'order_items': order_items})
            # order -> 주문번호, 사용자 성, 이름, 주소, 구매 총 가격
            # order_item -> 구매 아이템 수량, 가격

    else:
        user = User.objects.get(id=request.user.id)

        form = OrderForm(
            initial={'first_name': user.first_name, 'last_name': user.last_name, 'address': user.profile.address,
                     'post_code': user.profile.postal_code})
        print(form['address'])
        return render(request, 'order/create.html', {'cart': cart, 'form': form})