Example #1
0
def order_custom(request):
    config = OrderConfig.objects.get(id=1)
    options = CustomCakeOrderConfigOption.objects.filter(
        available=True).order_by('sort')
    if request.method == 'POST':
        custom_cake_order_form = CustomCakeOrderForm(data=request.POST,
                                                     options=options)
        order_form = OrderForm(request.POST)
        if custom_cake_order_form.is_valid() and order_form.is_valid():
            product = Product.objects.get(slug='custom-cake')
            new_order = order_form.save()
            OrderItem(price=product.price,
                      quantity=1,
                      product=product,
                      order_id=new_order.id).save()
            new_order.send_admin_custom_cake_confirm_emails(
                custom_cake_order_form.cleaned_data)
            new_order.send_client_custom_cake_confirm_emails(
                custom_cake_order_form.cleaned_data)
            return render(request,
                          template_name='orders/order/custom-done.html',
                          context={'config': config})
    else:
        custom_cake_order_form = CustomCakeOrderForm(options)
        # cake_form = CustomCakeForm()
        order_form = OrderForm()
    return render(
        request,
        'orders/order/custom.html',
        {
            'config': config,
            # 'cake_form': cake_form,
            'order_form': order_form,
            'ok': custom_cake_order_form
        })
Example #2
0
def order_detail(request, order_id):
    order = Order.objects.get(id=order_id)

    if request.method == "POST":
        form = OrderForm(request.POST, instance=order)
        if form.is_valid():
            order = form.save()
            order.save()  # just to calculate & store the price

            msg = 'Your order for {} pounds of blueberries for ${} has been received. You can ' \
                  'pick them up after 9am on {} at Morning Shade Farm.'.format(
                    order.quantity, order.total_cost, order.pickup_date,
                )
            if order.quantity >= 200:
                msg += " If you have additional requests, please call the farm."

            messages.success(request, msg)
            return HttpResponseRedirect(request.META['HTTP_REFERER'])
        else:
            msg = mark_safe("The form has errors: {}".format(form.errors))
            messages.add_message(request,
                                 messages.constants.ERROR,
                                 msg,
                                 extra_tags='danger')
    else:
        form = OrderForm(instance=order, submit_button_name="Update Order")

    return render(request, 'orders/order_detail.html', {
        'pagetitle': "Order {}".format(order.id),
        'form': form,
    })
Example #3
0
def place_order(request):
    if request.method == 'GET':
        total_amount = round(
            sum([
                product.price
                for product in Product.objects.filter(cart__user=request.user)
            ]), 2)
        order = Order()
        order.amount = total_amount
        context = {
            'form': OrderForm(instance=order),
        }
        return render(request, 'orders/order_details.html', context)
    else:
        form = OrderForm(request.POST)

        if form.is_valid():
            order = form.save(commit=False)
            order.buyer = request.user
            order.order_date = datetime.datetime.now()
            order.save()

            set_sold_products_unavailable(request.user, order)

            update_raised_money(order.amount)

            empty_user_cart(request.user)

            return redirect('successful donation', order.id)

        context = {
            'form': form,
        }
        return render(request, 'orders/order_details.html', context)
Example #4
0
def update_order(request, pk_order):
    """
    A order update page for the admin to change the status
    and download/upload the artwork for the customer.
    """
    order = Order.objects.get(id=pk_order)
    form = OrderForm(instance=order)
    tax = order.get_total() * Decimal(21 / 100)
    total = order.get_total() + tax

    if order.id_code:
        if request.method == 'POST':
            form = OrderForm(request.POST, request.FILES, instance=order)
            if form.is_valid():
                form.save()
                messages.info(request, 'Order updated successfully')
                return redirect('accounts:adminpage')
        else:
            context = {
                'order': order,
                'tax': tax,
                'total': total,
                'form': form
            }
            return render(request, 'accounts/update_order.html', context)
    else:
        messages.error(request, 'Order still in progress')
        return redirect('accounts:adminpage')
Example #5
0
def car_detail(request, car_id):
    car = get_object_or_404(Car, id=car_id)

    form = OrderForm(request.POST or None, initial={"car": car})

    if request.method == "POST":
        if form.is_valid():
            form = OrderForm(request.POST)
            name = request.POST.get('name', '')
            carid = request.POST.get('car', '')
            telephone = request.POST.get('phone', '')
            autos = int(carid)
            idauto = Car.objects.all()[autos].idauto
            model = Car.objects.all()[autos].modelcar
            complectation = Car.objects.all()[autos].complectation
            engine = Car.objects.all()[autos].engine
            power = Car.objects.all()[autos].power
            kpp = Car.objects.all()[autos].kpp
            color = Car.objects.all()[autos].color
            oldprice = Car.objects.all()[autos].oldprice
            newprice = Car.objects.all()[autos].newprice

            subject = 'Заявка с сайта "Лайфхак SKODA"'
            from_email = settings.EMAIL_HOST_USER

            message = ''' 
На сайте "SKODA Лайфхак" появилась новая заявка на автомобиль! 
_____________________________________________________________ 

АВТОМОБИЛЬ: 

ID автомобиля: {0} 
ŠKODA {1} {2} | {3}, {4} | {5} | {6}

Цена без скидки: {7} руб.
Цена со скидкой: {8} руб.
_____________________________________________________________

КЛИЕНТ:

Имя клиента: {9} 
Телефон клиента: {10}'''.format(idauto, model, complectation, engine, power,
                                kpp, color, oldprice, newprice, name,
                                telephone)

            recipient_list = Mail.objects.all()

            messages = [(subject, message, from_email, [recipient])
                        for recipient in recipient_list]

            send_mass_mail(messages)

            return HttpResponseRedirect("{}?sended=True".format(
                reverse("car", kwargs={"car_id": car.id})))

    return render(request, "cars/car_detail.html", {
        "car": car,
        "form": form,
        "sended": request.GET.get("sended", False)
    })
Example #6
0
def index(request):
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            order = form.save()
            order.save()  # just to calculate & store the price

            msg = 'Your order for {} pounds of blueberries for ${} has been received. You can ' \
                  'pick them up after 9am on {} at Morning Shade Farm.'.format(
                order.quantity, order.total_cost, order.pickup_date,
            )
            if order.quantity >= 200:
                msg += " If you have additional requests, please add comments to your order or call us."

            messages.success(request, msg)
            return redirect('index')
        else:
            msg = mark_safe("The form has errors: {}".format(form.errors))
            messages.add_message(request,
                                 messages.constants.ERROR,
                                 msg,
                                 extra_tags='danger')
    else:
        form = OrderForm()

    prices = Price.objects.all().order_by('min_quantity')
    return render(request, 'orders/index.html', {
        'form': form,
        'prices': prices
    })
Example #7
0
File: web.py Project: Whitie/ozone
def order(req, article_id=0):
    if req.user.has_perm('orders.can_order'):
        choice_filter = {'day__gte': date.today() - timedelta(days=1)}
    else:
        choice_filter = {'day__gt': date.today()}
    if req.method == 'POST':
        form = OrderForm(req.POST)
        form.fields['oday'].choices = h.get_oday_choices(choice_filter)
        if form.is_valid():
            cleaned = form.cleaned_data
            company = Company.objects.get(id=cleaned['art_supplier_id'])
            costs = h.get_costs(req.POST)
            art, created = h.search_article(
                cleaned['art_id'].strip(),
                cleaned['art_name'], cleaned['art_q'], company
            )
            art.tax = int(req.POST.get('tax', '19'))
            if created:
                art.tox_control = cleaned['tox']
                art.save()
            _price = h.get_price(cleaned['art_price'])
            if _price and art.price != _price:
                art.price = _price
                art.save()
            order = Order.objects.create(
                count=cleaned['count'], article=art,
                order_day=OrderDay.objects.get(id=int(cleaned['oday']))
            )
            order.save()
            for cost, percent in costs:
                co = CostOrder.objects.create(percent=percent, order=order,
                                              cost=cost)
                co.save()
            order.memo = cleaned['memo']
            order.for_test = cleaned['exam']
            order.for_repair = cleaned['repair']
            order.users.add(req.user)
            order.save()
            # Add orderer to rating_users
            if req.user.id not in [x.id for x in company.rating_users.all()]:
                company.rating_users.add(req.user)
                company.save()
                messages.success(req, u'Sie wurden als Bewerter für %s '
                                      u'hinzugefügt.' % company.name)
            messages.success(req, u'Ihre Bestellung %s wurde gespeichert.'
                             % order)
            return redirect('orders-detail', order_id=order.order_day.id)
        messages.error(req, u'Bitte füllen Sie die benötigten Felder aus.')
    else:
        form = OrderForm()
        form.fields['oday'].choices = h.get_oday_choices(choice_filter)
    costs = Cost.objects.all().order_by('ident')
    ctx = dict(
        page_title=_(u'New Order'), form=form, menus=menus, costs=costs,
        article_id=article_id, costs_msg=_(u'Sum of costs must be 100!'),
        cur_msg=u'Preis in %s.' % settings.CURRENCY[0], extra=False,
        need_ajax=True
    )
    return render(req, 'orders/order.html', ctx, app=u'orders')
Example #8
0
def handle_order_form(request):
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save()
            return
    else:
        form = OrderForm()
    return form
Example #9
0
def add_order(request):
    """Allow to add a new order"""
    form_filter = FilterForm()
    form = OrderForm()
    if request.method == 'POST':
        form = OrderForm(request.POST)
        form.save()
        contains = {'orders': Order.objects.all(), 'form_filter': form_filter}
        return render(request, 'orders/list_orders.html', contains)

    return render(request, 'orders/add_order.html', {'form': form})
Example #10
0
def order_page(request):
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)

            order.save()
            return redirect("http://localhost:8000/orders_list")
    else:
        form = OrderForm()
    return render(request, "order.html", {'form': form})
Example #11
0
def create(request):
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            try:
                form.save()
                messages.success(request, "Order created successfully")
                return redirect('/list')
            except:
                pass
    else:
        form = OrderForm()
    return render(request, 'new.html', {'form': form})
Example #12
0
def new_order(request):
    if request.method == 'POST':
        orderform = OrderForm(request.POST)
        if orderform.is_valid():
            order = orderform.save(commit=False)
            order.created_by = request.user
            order.save()
            return HttpResponseRedirect(order.get_absolute_url())
    else:
        orderform = OrderForm()
    return render_to_response('orders/new_order.html',
                              {'orderform': orderform,},
                              context_instance=RequestContext(request))
Example #13
0
def orders(request):
    # Register a new user.
    if request.method != 'POST':
        # Display blank registration form.
        form = OrderForm()
    else:
        # Process completed form.
        form = OrderForm(data=request.POST)
        if form.is_valid():
            new_user = form.save()
            return redirect('/pizza')
    context = {'form': form}
    return render(request, 'orders/ordering.html', context)
Example #14
0
 def test_require_amount(self):
     # TODO: move to model test
     form_data = {
         "product": self.product.id,
         "team": self.team.id,
         "state": "REQ",
         "unit_price": 10.00,
     }
     form = OrderForm(data=form_data, teams=Team.objects.all())
     self.assertFalse(form.is_valid())
     form_data["amount"] = 1
     form = OrderForm(data=form_data, teams=Team.objects.all())
     self.assertTrue(form.is_valid())
Example #15
0
def process_form(request, order=None, creating_new=False):
    """
    Called for generating the form initially, and processing it when submitted. Used by both the
    main index page (for new orders), and the order details page (for changing an order).
    """
    if request.method == "POST":
        form = OrderForm(request.POST, instance=order)
        if form.is_valid():
            order = form.save()
            order.save()  # just to calculate & store the price

            share_button = """<p>
                <div class="fb-share-button" data-href="http://www.morningshade.farm/" 
                data-layout="button" data-size="large">
                <a target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.morningshade.farm%2F&amp;src=sdkpreparse" class="fb-xfbml-parse-ignore">Share</a>
                </div>
            """
            msg = 'Your order for {} pounds of blueberries for ${} has been received. You can ' \
                  'pick them up from {} on {} at Morning Shade Farm.'.format(
                   order.quantity, order.total_cost, order.pretty_time, order.pretty_date
            )
            if order.quantity >= 200:
                msg += " If you have additional requests, please add comments to your order or call us."

            if creating_new:
                msg += " You can <a href={}>see, update, and cancel your order here</a>.".format(
                    reverse('order_detail', args=[order.id]))

            msg += share_button

            messages.success(request, mark_safe(msg))

            if creating_new:
                email_new_order_info(request, order)
            return HttpResponseRedirect(request.META['HTTP_REFERER'])
        else:
            # The bootstrap inline form displays global errors automatically, so we will remove
            # them here. Other errors it does not display, so we need to add a message to the
            # page with those.
            non_global_errors = copy.copy(form.errors)
            if "__all__" in non_global_errors:
                del(non_global_errors["__all__"])
            if non_global_errors:
                msg = mark_safe("The form has errors: {}".format(non_global_errors))
                messages.add_message(request, messages.constants.ERROR, msg, extra_tags='danger')
    else:
        form = OrderForm(instance=order)
    return form
Example #16
0
def create_order(request):
    billing_profile = BillingProfile.objects.filter(user=request.user).first()
    cart = Cart.objects.filter(user=request.user, active=True).first()

    if request.method == 'POST':
        if not request.user.is_authenticated or Order.objects.filter(
                billing_profile=billing_profile, active=True).first() is None or cart is None:
            return HttpResponseBadRequest('Error occurred while placing the order!')

        model_instance = Order.objects.get_active_order(
            billing_profile=billing_profile, cart=cart)
        form = OrderForm(request.POST, instance=model_instance)
        if form.is_valid():
            model_instance.shipping_address = form.cleaned_data.get('shipping_address')
            model_instance.payment_method = form.cleaned_data.get('payment_method')
            # change order status to placed
            model_instance.status = 'placed'
            # make order and cart inactive for placing next order
            model_instance.active = False
            model_instance.save()
            form.save()
            context = {
                'order_id': model_instance.order_id,
            }
            return render(request, "carts/order_success.html", context)
    return redirect('home')
Example #17
0
def order(request):
    if request.method == 'POST':
        user = request.user
        form = OrderForm(user, request.POST)
        if form.is_valid():
            user.profile.full_name = form.cleaned_data['full_name']
            user.profile.phone = form.cleaned_data['phone']
            user.profile.postcode = form.cleaned_data['postcode']
            user.profile.region = form.cleaned_data['region']
            user.profile.locality = form.cleaned_data['locality']
            user.profile.street = form.cleaned_data['street']
            user.profile.house_nmb = form.cleaned_data['house_nmb']
            user.profile.apartment_nmb = form.cleaned_data['apartment_nmb']
            user.save()
    else:
        return redirect('cart')

    dandp = DandP(request)
    delivery_id = int(dandp.dandp['delivery']) + 1
    payment_id = int(dandp.dandp['payment']) + 1

    delivery = Delivery.objects.get(id=delivery_id)
    payment = Payment.objects.get(id=payment_id)

    context = {
        'delivery': delivery,
        'payment': payment,
    }

    return render(request, 'orders/order.html', context)
Example #18
0
 def test_customer_excludes_providers(self):
     """Providers should be excluded from dropdown."""
     form = OrderForm()
     Customer.objects.create(name='Provider', phone=5, cp=1, provider=True)
     self.assertEqual(len(form.fields['customer'].choices), 2)
     for customer in form.fields['customer'].choices:
         self.assertNotEqual(customer[1], 'express')
Example #19
0
    def test_avoid_duplicates(self):
        """Test to avoid duplicates."""
        order = Order.objects.create(
            user=User.objects.all()[0],
            customer=Customer.objects.all()[0],
            ref_name='Duplicate test',
            delivery=date(2018, 1, 1),
            priority='2',
            waist=10,
            chest=20,
            hip=30,
            lenght=40,
            others='Duplicate order',
            budget=100,
            prepaid=100,
        )
        self.assertTrue(Order.objects.get(ref_name='Duplicate test'))
        duplicated_order = OrderForm({
            'customer': order.customer.pk,
            'ref_name': order.ref_name,
            'delivery': order.delivery,
            'waist': order.waist,
            'chest': order.chest,
            'hip': order.hip,
            'priority': order.priority,
            'lenght': order.lenght,
            'others': order.others,
            'budget': order.budget,
            'prepaid': order.prepaid,
        })

        self.assertFalse(duplicated_order.is_valid())
        self.assertEqual(duplicated_order.errors['__all__'][0],
                         'The order already exists in the db')
Example #20
0
    def get(self, request):
        cart = Cart(request)

        # if not cart.delivery['price']:
        #     messages.error(request, 'Неверный почтовый индекс')

        user = request.user

        initial = cart.delivery
        if user.is_authenticated:
            initial = {
                'method': cart.delivery['method'],
                'price': cart.delivery['price'],
                # 'postcode': cart.delivery['postcode'] or user.postcode,
                'country': cart.delivery['country'] or user.country,
                'region': cart.delivery['region'] or user.region,
                'city': cart.delivery['city'] or user.city,
                'micro_district': cart.delivery['micro_district']
                or user.micro_district,
                'street': cart.delivery['street'] or user.street,
                'house_nmb': cart.delivery['house_nmb'] or user.house_nmb,
                'building_nmb': cart.delivery['building_nmb']
                or user.building_nmb,
                'room_nmb': cart.delivery['room_nmb'] or user.room_nmb,
                'phone': cart.delivery['phone'] or user.phone,
                'full_name': cart.delivery['full_name'] or user.full_name,
                'email': cart.delivery['email'] or user.email,
            }

        order_form = OrderForm(initial=initial)

        context = {
            'order_form': order_form,
        }
        return render(request, 'orders/cart.html', context)
Example #21
0
    def get(self, request):
        index = Index.objects.first()
        first_slide = index.slides.first()

        products = Product.objects.filter(is_active=True)[:3]

        order_form = OrderForm()
        feedback_form = FeedBackForm()

        news = News.objects.filter(is_active=True)[:4]

        addresses = Address.objects.all()
        phones = Phone.objects.all()
        emails = Email.objects.all()
        map_code = MapCode.objects.first()

        context = {
            'index': index,
            'first_slide': first_slide,
            'products': products,
            'order_form': order_form,
            'feedback_form': feedback_form,
            'news': news,
            'addresses': addresses,
            'phones': phones,
            'emails': emails,
            'map_code': map_code,
        }

        return render(request, 'core/index.html', context)
Example #22
0
File: views.py Project: eof4tt/sfx
    def post(self, request, *args, **kwargs):
        self.form = OrderForm(request.POST, request.FILES)
        if request.method == "POST":
            if self.form.is_valid():
                new_order = self.form.save()
                self.formset2desc = OrderDescriptionFormset(request.POST,
                                                            instance=new_order)
                self.formset2files = OrderDocsFormset(request.POST,
                                                      request.FILES,
                                                      instance=new_order)
                messages.add_message(request, messages.SUCCESS,
                                     "Заказ успешно добавлен. ")
                if self.formset2desc.is_valid():
                    self.formset2desc.save()
                    messages.add_message(request, messages.SUCCESS,
                                         "Описание успешно добавлено. ")
                    if self.formset2files.is_valid():
                        self.formset2files.save()
                        messages.add_message(
                            request, messages.SUCCESS,
                            "Документ(ы) к заказу успешно добавлен(ы). ")
                        return redirect("/orders/index/", *args, **kwargs)
                    else:
                        messages.add_message(
                            request, messages.SUCCESS,
                            "Проверьте корректность добавление нового документа или подтвердите текущие изменения. "
                        )

        self.formset2desc = OrderDescriptionFormset(request.POST)
        self.formset2files = OrderDocsFormset(request.POST, request.FILES)
        messages.add_message(
            request, messages.SUCCESS,
            "ВНИМАНИЕ: Необходимо заполнить все обязательные параметры! ")
        return super(OrderCreate, self).get(request, *args, **kwargs)
Example #23
0
def charge(request):
	cart = Cart(request)
	if request.method == 'POST':
		form = OrderForm(request.POST)
		order = form.save()
		context = {
			'key': settings.STRIPE_PUBLISHABLE_KEY,
			'order': order,
		}
		for object in cart:
			OrderItem.objects.create(
				order=order,
				item=object['item'],
				price=object['price'],
				quantity=object['quantity']
			)
		cart.clear()
		#charge_amount = request.POST['amount']
		charge = stripe.Charge.create(
			amount=500,						#OrderItem.objects.filter(price__icontains(object['price'])),
			currency='usd', 				# will need to modify for different currency types (low priority)
			description='A New Django Order',
			source=request.POST['stripeToken']
		)
		return render(request, 'order_confirmation.html', context)
	else:
		response = HttpResponse("<center><h2>FATAL ERROR: Not a POST request.</h2></center>")
		return response
Example #24
0
def contact_info(request):
    cart = Cart(request)
    if len(cart) != 0:
        if request.method == 'POST':
            dandp = DandP(request)
            delivery = request.POST.get('delivery')
            payment = request.POST.get('payment')

            if delivery == 0:
                dandp.dandp['delivery'] = 0
            if delivery == 1:
                dandp.dandp['delivery'] = 1
            if payment == 0:
                dandp.dandp['payment'] = 0
            if payment == 1:
                dandp.dandp['payment'] = 1

            dandp.update(delivery, payment)
    else:
        return redirect('cart')

    form = OrderForm(request.user)

    context = {
        'form': form,
    }

    return render(request, 'orders/contact_info.html', context)
Example #25
0
def cvety_list(request):
    cvetys = Cvety.objects.all()
    form = OrderForm(request.POST or None)
    if request.method == "POST":
        if form.is_valid():
            form.save()
            return HttpResponseRedirect("?sended=True")
    return render(request, "cvety/cvety_list.html", {'cvetys': cvetys, 'form': form, "sended": request.GET.get("sended", False)})
Example #26
0
def update(request, id):
    order = Order.objects.get(id=id)
    form = OrderForm(request.POST, instance=order)
    if form.is_valid():
        form.save()
        messages.success(request, "Order modified successfully")
        return redirect("/list")
    return render(request, 'edit.html', {'order': order})
Example #27
0
def meal_details(request, id, slug):
    meal = get_object_or_404(Meal, id=id, slug=slug)
    form = OrderForm()
    context = {
                'meal': meal,
                'form': form,
              }
    return render(request, 'meals/details.html', context)
Example #28
0
def cart(request, slug):
    order = Order.objects.get(slug=slug)
    if order.status != "pending":
        return redirect(reverse('order_detail', kwargs={'slug': slug}))

    order_items = OrderItem.objects.filter(order=order)
    order_total = 0
    for item in order_items:
        subtotal = item.quantity * item.unity_price
        order_total = order_total + subtotal

    order_items_formset = inlineformset_factory(Order,
                                                OrderItem,
                                                form=OrderItemsForm,
                                                extra=0,
                                                can_delete=True)

    if request.method == "POST":
        form = OrderForm(request.POST, instance=order, prefix='main')
        formset = order_items_formset(request.POST,
                                      instance=order,
                                      prefix='product')

        try:
            if form.is_valid() and formset.is_valid():
                form.save()
                formset.save()
                messages.success(request, "Pedido atualizado")
                return redirect(reverse('cart', kwargs={'slug': slug}))
        except Exception as e:
            messages.warning(request,
                             'Ocorreu um erro ao atualizar: {}'.format(e))

    else:
        form = OrderForm(instance=order, prefix='main')
        formset = order_items_formset(instance=order, prefix='product')

    return render(
        request, 'orders/cart.html', {
            'order': order,
            'order_items': order_items,
            'order_total': order_total,
            'form': form,
            'formset': formset,
        })
Example #29
0
def create_order(request):
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            order = form.save()
            for item in cart:
                OrderItem.objects.create(order=order,
                                         book=item['book'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            cart.clear()
            context = {'order': order}
            return render(request, 'orders/order_created.html', context)
    else:
        form = OrderForm()
    context = {'form': form, 'cart': cart}
    return render(request, 'orders/create_order.html', context)
Example #30
0
    def post(self, request, *args, **kwargs):
        form = OrderForm(request.POST)
        if not form.is_valid():
            errors = {key: invalid_msg.format(value[0]) for key, value in form.errors.items()}
            return render(request, self.template_name, {'error': errors, 'form': form})
        # 保存
        form.save(request.user.id)

        return redirect('order:index')