Example #1
0
 def list(self, request):
     pair_view_set = PairViewSet()
     data = []
     pairs_names = self._get_bestchange_pair_names()
     pairs = Pair.objects.filter(disabled=False,
                                 test_mode=False,
                                 name__in=pairs_names)
     for pair in pairs:
         if not pair_view_set._get_dynamic_test_mode(pair):
             order = Order(pair=pair, amount_base=Decimal('1'))
             try:
                 order.calculate_quote_from_base()
             except Price.DoesNotExist:
                 continue
             data.append(self._get_order_return_data(order))
         reverse_pair = pair.reverse_pair
         if reverse_pair and not pair_view_set._get_dynamic_test_mode(
                 reverse_pair):
             order = Order(pair=reverse_pair, amount_quote=Decimal('1'))
             try:
                 order.calculate_base_from_quote()
             except Price.DoesNotExist:
                 continue
             data.append(self._get_order_return_data(order))
     return Response(data)
Example #2
0
def Salad(request):
    item_selections = request.POST
    if len(item_selections) !=1:
            Total_cost = 0.0

            if Order.objects.last() == None:
                od = Order(1)
            else:
                od = Order(Order.objects.last().id+1)

            od.save()
            for i in item_selections.getlist("salad"):
                obj = Menu.objects.all().filter(id=i)
                Total_cost += obj[0].Price_small
                od.Others.add(obj[0])
            od.order_total = Total_cost
            od.save()
            if Cart.objects.all().filter(user =str(request.user),order_status=False).last() == None:
                if Cart.objects.last() == None:
                    cart = Cart(1,user =str(request.user))

                else:
                    cart = Cart(Cart.objects.last().id + 1,user =str(request.user))

                cart.save()
            else:
                cart = Cart.objects.all().filter(user =str(request.user),order_status=False).first()

            cart.stuff.add(od)
            cart.Total += Total_cost
            cart.save()

            return JsonResponse({"output":"Nope"})
    else:
        return JsonResponse({"output":"Fail"})
Example #3
0
 def create(self, validated_data):
     if (self.context['address_id']):
         address = validated_data.pop('address')
         order = Order(**validated_data)
         order.user = self.context['request'].user
         order.address = Address.objects.get(id=self.context['address_id'])
         order.save()
     else:
         address = validated_data.pop('address')
         ad = Address.objects.create(**address)
         order = Order(**validated_data)
         order.user = self.context['request'].user
         order.address = ad
         order.save()
     # order_created(order.id)
     # self.context['request'].session['order_id'] = order.id
     for cartitem in self.context['cartitems']:
         if cartitem.quantity < cartitem.item.quantity:
             OrderItem.objects.create(order=order,
                                      item=cartitem.item,
                                      quantity=cartitem.quantity)
         else:
             raise serializers.ValidationError({'status': 'quantity error'})
     order.total = order.get_total_cost()
     order.save()
     return order
Example #4
0
def order_create(request):
    cart = Cart(request)
    order = Order(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            email = form.cleaned_data['email']
            address = form.cleaned_data['address']
            phone_no = form.cleaned_data['phone_no']
            city = form.cleaned_data['city']

            order = form.save(commit=False)
            if cart.coupon:
                order.coupon = cart.coupon
                order.discount = cart.coupon.discount
            order.save()
            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            cart.clear()
            order: Order(request)
            #launch assy. tasks
            #order_created.delay(order.id)
            #set the order in the session
            request.session['order_id'] = order.id
            #redirect to payment
            return redirect(reverse('payment:process'))

    else:
        form = OrderCreateForm()
    return render(request, 'orders/create.html', {'cart': cart, 'form': form})
Example #5
0
    def _create_order_with_default_values(self, pair):
        base_maximal = pair.base.current_maximal_amount_to_sell
        base_minimal = pair.base.minimal_amount
        quote_maximal = pair.quote.maximal_amount
        quote_minimal = pair.quote.minimal_amount
        if pair.is_crypto:
            amount_quote = \
                quote_minimal * \
                settings.DEFAULT_CRYPTO_ORDER_DEPOSIT_AMOUNT_MULTIPLIER
            if amount_quote >= quote_maximal:
                amount_quote = (quote_maximal + quote_minimal) / Decimal('2')
        else:
            amount_quote = settings.DEFAULT_FIAT_ORDER_DEPOSIT_AMOUNT
            if amount_quote < quote_minimal:
                amount_quote = \
                    quote_minimal \
                    * settings.DEFAULT_FIAT_ORDER_DEPOSIT_AMOUNT_MULTIPLIER
        order = Order(pair=pair, amount_quote=amount_quote)
        order.calculate_base_from_quote()
        if all([
                not base_minimal <= order.amount_base <= base_maximal,
                base_maximal > base_minimal
        ]):
            if order.amount_base > base_maximal:
                # return value between minimal and maximal possible
                # (closer to maximal to avoid minimal quote error)
                amount_base = \
                    (base_minimal + Decimal('4') * base_maximal) / Decimal('5')
            else:
                amount_base = base_minimal
            order = Order(pair=pair, amount_base=amount_base)
            order.calculate_quote_from_base()

        return order
Example #6
0
def new_order(request, product_id):
    #import pdb; pdb.set_trace()
    additional = request.session['additional']
    print("Is this an additional order :", additional)

    if request.method == 'POST':
        print("New Order Request is POST")

    if 'order_id' in request.session:
        print("Order ID already Exists in Session :",
              request.session['order_id'])

        setNewId = False

        if not additional:

            print("Set New ID True")
            del request.session['order_id']
            print("Order_Id Deleted")
            start_order = Order()
            start_order.save()
            print("New Order ID = ", start_order.id)
            print("Adding new Order_Id to session")
            request.session['order_id'] = str(start_order.id)
            print("Session ID = ", request.session['order_id'])

    else:
        print("Order ID Does NOT Exist in Session")
        print("Set New ID False")
        start_order = Order()
        start_order.save()
        print("New Order ID = ", start_order.id)
        request.session['order_id'] = start_order.id
        print("Session ID = ", request.session['order_id'])

    product = get_object_or_404(Product, id=product_id)
    print("Product = ", product.name)

    random_ref = ''.join([
        random.choice(string.ascii_letters + string.digits) for n in range(32)
    ])
    form = OrderItemCreate(
        initial={
            'order': request.session['order_id'],
            'product': product.id,
            'price': product.price,
            'quantity': 1,
            'name': product.name,
            'ref': random_ref
        })  # create the form from the POST data

    return render(
        request,  # send user to complete the order details.
        'orders/santa/order-detail.html',
        {'form': form})
Example #7
0
def test_calculator_calc(services: QuerySet):
    """Should calc the order price."""
    order = Order()
    calc = Calculator()
    assert calc.calc(order) is None

    service = services.first()
    service.price.is_price_fixed = False
    order.service = service

    assert calc.calc(order) is None

    service.price.is_price_fixed = True
    service.price.price = Money(1, "USD")
    service.duration = 10

    now = arrow.utcnow()
    order.start_datetime = now.datetime
    order.end_datetime = now.shift(minutes=10).datetime

    assert calc.calc(order) == service.price.price

    order.start_datetime = now
    order.end_datetime = now.shift(minutes=30)

    assert calc.calc(order) == service.price.price * Decimal(3)
Example #8
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 #9
0
def test_notify_order_update(
    user: User,
    admin: User,
    services: "QuerySet[Service]",
    mailoutbox: List[EmailMultiAlternatives],
):
    """Should notify about a new review."""
    order = Order()
    order.service = services.filter(professional__user=admin).first()
    order.client = user
    order.price = Money(1, "EUR")

    notify_order_update(order, is_created=True)
    assert len(mailoutbox) == 2
    assert admin.email in mailoutbox[0].recipients()
    assert user.email in mailoutbox[1].recipients()
    assert "new order" in mailoutbox[1].subject

    order.created_by = admin
    notify_order_update(order, is_created=False)
    assert len(mailoutbox) == 3
    assert user.email in mailoutbox[2].recipients()
    assert "updated" in mailoutbox[2].subject

    order.modified_by = user
    notify_order_update(order, is_created=False)
    assert len(mailoutbox) == 4
    assert admin.email in mailoutbox[3].recipients()
Example #10
0
def create_order(request, cart, delivery=None):
    subtotal = cart.total_price

    order = Order()
    order.user = request.user

    delivery = Delivery.objects.all()[0]
    order.delivery = delivery
    order.total = subtotal + Decimal(order.delivery.price)

    order.save()

    for pro in cart:
        line = OrderLine()
        line.order = order
        line.product = pro.item
        line.quantity = pro.quantity
        if pro.color:
            line.color = Color.objects.get(pk=pro.color)
        if pro.size:
            line.size = Size.objects.get(pk=pro.size)
        line.line_price = pro.item.total_price() * pro.quantity
        line.save()

    request.session['order_pk'] = order.pk
    return order
Example #11
0
def upload(request):
    orders = getOrders()
    for order in orders:
        orderId = getField(order, 'order_id')
        try:
            newOrder = Order.objects.get(order_id=orderId)
        except:
            marketplace = getField(order, 'marketplace')
            # Status fields
            status = order.getElementsByTagName("order_status").item(0)
            marketplaceStatus = getField(status, 'marketplace')
            lengowStatus = getField(status, 'lengow')

            orderDate = getField(order, 'order_purchase_date')
            formatedDate = orderDate if orderDate != '' else None
            amount = getField(order, 'order_amount')
            currency = getField(order, 'order_currency')
            newOrder = Order(None, orderId, marketplace, amount, currency,
                             marketplaceStatus, lengowStatus, formatedDate)

            newOrder.save()
    #delete temporary file
    os.remove(filename)
    messages.success(request, "Orders uploaded successfuly !")
    return redirect("/list")
Example #12
0
    def post(self, request, *args, **kwargs):
        client_data = cookie_parser(request.COOKIES.get('client_data'))
        order = Order()
        order.shipping_address = client_data.get('shipping_address')
        order.phone = client_data.get('phone')
        order.client_name = client_data.get('client_name')
        if request.user.is_authenticated:
            order.customer = request.user
        order.save()
        cart_items = self.get_cart_items(self.request)
        total_price = 0

        json_data = []
        for cart_item in cart_items:
            cart_item.order = order
            total_price += cart_item.total_price
            cart_item.save()

            title = "{} {}".format(cart_item.variation.product.name, cart_item.variation.name)
            if cart_item.variation.color:
                title = "{} {}".format(title, cart_item.variation.color.name)
            json_data.append({
                'title': title,
                'price': float(cart_item.variation.price),
                'count': cart_item.count,
                'total_price': float(cart_item.total_price)
            })
        order.products = json_data
        order.total_price = Decimal(total_price)
        order.order_unique_id = uuid.uuid4()
        order.save()

        order_detail_url = reverse_lazy('orders:order_detail', args=[order.phone, order.order_unique_id])
        data = {'message': _('Order successful placed'), 'status': 'success', 'redirect_url': order_detail_url}
        return JsonResponse(data=data, safe=False)
Example #13
0
def confirm_order_view(request):
    data_basket = []
    summa = 0
    order = Order(user=request.user, status="new", summa_invoice=0)
    order.save()
    try:
        basket_session = request.session['basket']
    except KeyError:
        basket_session = {}
    index = 0
    for priceid in basket_session:
        item = Price.objects.get(id=priceid)
        OrderItem.objects.create(order=order,
                                 priceitem=item,
                                 cost=item.cost,
                                 count=basket_session[priceid],
                                 provider=item.provider,
                                 nomenclature=item.nomenclature,
                                 brend=item.brend,
                                 articul=item.articul)
        summa += basket_session[priceid] * item.cost
    order.summa_invoice = round(summa, 2)
    order.save()
    send_order2email(order.id)
    request.session['basket'] = {}
    template = loader.get_template('confirm_order.htm')
    context = {
        'title_html': "Hi",
        'user': "******" + request.user.username,
        'response': "Ваш заказ №" + str(order.id) + " оформлен",
    }
    return HttpResponse(template.render(context, request))
Example #14
0
 def test_import_payeer_invalid_status(self, convert_to_cash, trans_hist):
     convert_to_cash.return_value = None
     sender = 'zaza'
     # TODO: get fixutre
     trans_hist.return_value = {
         '1': {
             'id': '1',
             'type': 'transfer',
             'status': 'None',
             'creditedCurrency': self.EUR.code,
             'creditedAmount': str(self.payeer_order_data['amount_quote']),
             'to': 'tata',
             'shopOrderId': self.payeer_order_data['unique_reference'],
             'comment': self.payeer_order_data['unique_reference'],
             'from': sender
         }
     }
     order = Order(**self.payeer_order_data)
     order.save()
     import_payeer_payments = PayeerPaymentChecker()
     import_payeer_payments.run()
     p = Payment.objects.filter(amount_cash=order.amount_quote,
                                currency=order.pair.quote,
                                reference=order.unique_reference)
     self.assertEqual(0, len(p))
Example #15
0
    def test_confirm_order_payment_with_okpay_celery(self, history,
                                                     convert_to_cash,
                                                     validate):
        history.return_value = get_ok_pay_mock()
        convert_to_cash.return_value = None
        validate.return_value = True
        order = Order(**self.okpay_order_data)
        order.save()
        import_okpay_payments = OkPayPaymentChecker()
        import_okpay_payments.run()

        p = Payment.objects.filter(amount_cash=order.amount_quote,
                                   currency=order.pair.quote,
                                   reference=order.unique_reference)
        self.assertEqual(1, len(p))
        pref = PaymentPreference.objects.filter(payment=p[0])
        self.assertEqual(1, len(pref))
        self.assertEqual(pref[0].identifier, '*****@*****.**')
        self.assertEqual(pref[0].secondary_identifier, 'OK487565544')
        # apply second time - should not create another payment
        import_okpay_payments.run()

        p = Payment.objects.filter(amount_cash=order.amount_quote,
                                   currency=order.pair.quote,
                                   reference=order.unique_reference)
        self.assertEqual(1, len(p))
        order.refresh_from_db()
        # check that pref is intact
        pref = PaymentPreference.objects.filter(payment=p[0])
        self.assertEqual(1, len(pref))
        self.assertEqual(pref[0].identifier, '*****@*****.**')
        self.assertEqual(pref[0].secondary_identifier, 'OK487565544')
        # self.assertIn(order.status, Order.IN_PAID)
        # FIXME: CANCEL because fiat needs refactoring
        self.assertEqual(order.status, Order.CANCELED)
Example #16
0
def order_create(request):
    # Getting data
    body_unicode = request.body.decode('utf-8')
    body = json.loads(body_unicode)
    content = json.loads(body['order_data'])

    # Getting the new sequence
    new_sequence = Order.objects.order_by("-id")[0].id
    new_sequence += 1

    # Creating the object to save
    order = Order(id=new_sequence,
                  date=content['date'],
                  state='A',
                  observation=content['observation'],
                  commentary=content['commentary'],
                  warehouse_id=content['warehouse']['code'],
                  branch_id=content['branch']['code'],
                  travel_id=content['travel']['code'],
                  applicant_id=content['applicant']['id'],
                  user_created=content['userCreated'],
                  date_created=content['dateCreated'])

    order.save()

    detail_sequence = 0
    for d in content['detail']:
        detail_sequence += 1
        OrderDetail.objects.create(order_id=new_sequence,
                                   sequence=detail_sequence,
                                   quantity=d['quantity'],
                                   detail=d['detail'])

    return JSONResponse({'id': new_sequence}, status=status.HTTP_200_OK)
Example #17
0
def test_order_clean(mocker: MockFixture):
    """Should run the filler."""
    order = Order()
    order.validators = []
    order.filler = mocker.MagicMock()
    order.clean()
    order.filler.assert_called_once()
Example #18
0
def confrm_checkout(request):
	if len(request.session['cart']) != 0:
		if request.method == 'POST':
			name = request.POST['name']
			phone = request.POST['phonenumber']
			email = request.POST['email']
			address = request.POST['address']
			user_id = request.user.id
			if name and phone and email and address:
				for key,value in request.session['cart'].items():
					item = value['title']
					quantity = value['quantity']
					price = value['price']
					total = (float(quantity) * float(price))
					order = Order(item=item,quantity=quantity,price=price,total=total,name=name,phone=phone,email=email,address=address,user_id=user_id)
					order.save()
				cart_clear(request)
				messages.success(request,'Order Created SuccessFully')
				return redirect('users:dashboard')
			else:
				messages.info(request,'Filled All The Field')
				return redirect('cart:checkout')
		else:
			messages.warning(request,'SomeThing Went Wrong')
			return redirect('cart:checkout')
	else:
		messages.info(request,"Your cart Is Empty")
		return redirect('/')
Example #19
0
def model_form_upload(request):
    upload_check = False
    if request.method == 'POST':
        upload_check = False
        current_user = request.user
        order_list = Order.objects.filter(user=current_user,
                                          is_finished=False).order_by('-id')
        if len(order_list) > 0:
            order = order_list[0]
        else:
            order = Order(user=current_user)
            order.save()
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid:
            document = form.save(commit=False)
            document.user = current_user
            document.order = order
            document.save()
            # order.is_finished = True
            upload_check = True

        else:
            print(form.errors)
    else:
        form = DocumentForm()
    return render(request, 'relatedpages/upload.html', {
        'form': form,
        'upload_check': upload_check
    })
Example #20
0
    def createOrder(self, order_details):

        order = Order(order_details=[
            OrderDetail(product_id=order_detail['product_id'],
                        product_name=order_detail['product_name'],
                        price=order_detail['price'],
                        quantity=order_detail['quantity'],
                        currency=order_detail['currency'])
            for order_detail in order_details
        ])

        self.order_db.add(order)
        self.order_db.commit()

        order = OrderSchema().dump(order).data

        try:
            # self.event_dispatcher('order_created', {
            #         'order': order
            #     })
            self.products_rpc.handleOrderCreated({'order': order})
        except RemoteError as ex:
            self.logger.info("orders.createOrder: %s" % ex)
            raise OutOfStock(str(ex))

        # self.logger.info("createOrder: order: %s" % order)
        # Hide real Id from DB
        order['hash_id'] = self.hashids.encrypt(order['id'])

        return order
Example #21
0
def make_order(request):
    carts = Cart.objects.filter(c_user=request.user).filter(c_is_select=True)
    temp = []
    for cart in carts:
        if cart.c_goods.g_project_id not in temp:
            temp.append(cart.c_goods.g_project.id)
            cart_objs = Cart.objects.filter(c_user=request.user).filter(
                c_goods__g_project_id=cart.c_goods.g_project_id).filter(
                    c_is_select=True)
            order = Order()
            order.o_user = request.user
            order.o_merchant = cart.c_goods.g_project.p_merchant
            order.o_price = get_total_price_ordering(request.user.id,
                                                     cart.c_goods.g_project_id)
            order.save()
            addressid = request.GET.get('addressid')
            address = Address.objects.get(pk=addressid)
            address_copy = AddressCopy()
            address_copy.a_order = order
            address_copy.a_name = address.a_name
            address_copy.a_phone = address.a_phone
            address_copy.a_address = address.a_address
            address_copy.a_code = address.a_code
            address_copy.save()
            for cart_obj in cart_objs:
                orderGoods = OrderGoods()
                orderGoods.o_order = order
                orderGoods.o_goods_num = cart_obj.c_goods_num
                orderGoods.o_goods = cart_obj.c_goods
                orderGoods.save()
                cart_obj.delete()

    data = {'status': 200, 'msg': 'ok', 'order_id': order.id}

    return JsonResponse(data=data)
Example #22
0
def create_order(data):
    order = Order()

    order.address = data['Address']
    order.delivery = load_delivery(data['Dostavka'])
    #normalized_name = normalize.name(data['Name'])
    #order.full_name = normalized_name if normalized_name else data["Name"]
    #order.first_name = get_full_name_part(normalized_name, FIRST_NAME_PART)
    #order.middle_name = get_full_name_part(normalized_name, MIDDLE_NAME_PART)
    #order.last_name = get_full_name_part(normalized_name, LAST_NAME_PART)
    order.first_name = data['name']
    order.middle_name = data['name']
    order.last_name = data['name']

    order.phone = data['Phone']
    order.email = data['Email']
    order.comment = data.get('Comment', '')
    order.is_payed = is_payed(data['paymentsystem'])
    order.payment_system = data['paymentsystem']
    order.total = data['payment']['amount']
    order.payment_id = data['payment']['orderid']
    order.promo_code = data.get('Промокод', '')

    order.save()
    order.refresh_from_db()
    return order
Example #23
0
    def test_payment_get_paid(self, mock_Request):
        Payment = apps.get_model('getpaid', 'Payment')
        order = Order(name='Test PLN order', total='123.45', currency='PLN')
        order.save()
        payment = Payment(pk=99,
                          order=order,
                          amount=order.total,
                          currency=order.currency,
                          backend='getpaid.backends.payu')
        payment.save(force_insert=True)
        payment = Payment.objects.get(
            pk=99
        )  # this line is because django bug https://code.djangoproject.com/ticket/5903
        processor = getpaid.backends.payu.PaymentProcessor(payment)
        processor.get_payment_status(u'99:1342616247.41')
        self.assertEqual(payment.status, u'paid')
        self.assertNotEqual(payment.paid_on, None)
        self.assertNotEqual(payment.amount_paid, Decimal('0'))

        url = 'https://secure.payu.com/paygw/UTF/Payment/get/txt'
        callargs = mock_Request.call_args_list
        self.assertEqual(url, callargs[0][0][0])
        if six.PY3:
            self.assertIsInstance(callargs[0][0][1], bytes)
            self.assertTrue(b'pos_id=123456789' in callargs[0][0][1])
            self.assertTrue(
                b'session_id=99%3A1342616247.41' in callargs[0][0][1])
        else:
            self.assertIsInstance(callargs[0][0][1], str)
            self.assertTrue('pos_id=123456789' in callargs[0][0][1])
            self.assertTrue(
                'session_id=99%3A1342616247.41' in callargs[0][0][1])
Example #24
0
    def handle(self, *args, **options):
        logger = logging.getLogger()
        steam_handler = logging.StreamHandler()
        steam_handler.setLevel(logging.DEBUG)
        logger.addHandler(steam_handler)
        try:
            request = urllib2.urlopen(
                "http://test.ecommerce.io/orders-test.xml")
            tree = ET.parse(request)
        except:
            raise CommandError('Xml file is not valid')

        orders = tree.find("orders")
        for item in orders.getiterator('order'):
            if ((item.find('marketplace').text) is not None)\
                 and(item.find('order_purchase_date').text is not None)\
                 and(item.find('order_amount').text is not None)\
                 and(item.find('order_currency').text is not None)\
                 and(item.find('order_id').text is not None):
                marketplace = item.find('marketplace')
                order_purchase_date = item.find('order_purchase_date')
                order_amount = item.find('order_amount')
                order_currency = item.find('order_currency')
                order_id = item.find('order_id')
                # add and save a new order
                new_order = Order(marketplace=marketplace.text,
                                  order_purchase_date=order_purchase_date.text,
                                  order_amount=order_amount.text,
                                  order_currency=order_currency.text,
                                  order_id=order_id.text)
                new_order.save()
            else:
                logger.warning("A required argument is missing"
                               " for one order, please look at your xml file.")
Example #25
0
def request_product(request, item_id, page_num=None):
    try:
        product = Products.objects.get(id=item_id)
        submitted_orders = Order.objects.filter(status=1).filter(
            user_id=request.user.id)
        requested_prod_ids = [product.item_id for product in submitted_orders]

        # owner should not request their products
        # avoid multiple requests for same product
        # avoid requests on inactive products
        if product.user != request.user and item_id not in requested_prod_ids and product.status < 3:
            order = Order(user=request.user,
                          item=Products.objects.get(id=item_id),
                          owner=product.user)
            order.save()
            if product.status == 1:
                product.status = 2
            product.save()

    except Products.DoesNotExist:
        raise Http404('Products with id %s is not available' % item_id)

    previous_url = request.META['HTTP_REFERER']
    if not page_num or 'search_term' in previous_url:
        return redirect(previous_url)

    return redirect('%s?page=%s' % (reverse('products:items:list'), page_num))
Example #26
0
def ordering():
    if (sb.temp == 1):
        resp = sb.handle("show list")
        resp, sb.other = resp
        resp = "Processing.... \nEnter your phone number:"
    elif (sb.temp == 2):
        sb.phone = int(s)
        resp = "Processing.... \nEnter your address:"
    else:
        sb.address = s
        for product, quantity in sb.other:
            p = Product.objects.get(slug=product)
            u = User.objects.get(username=request.user.username)
            o = Order(item=product,
                      quantity=quantity,
                      price=p.price,
                      total=(int(quantity) * int(p.price)),
                      name=request.user.username,
                      phone=sb.phone,
                      email=u.email,
                      address=sb.address,
                      user_id=u.id)
            o.save()
        resp = "Adding... \nCheck Dashboard"
        sb.handle("clear list")
        sb.temp = 0
    # print(other)
    return HttpResponse(resp)
Example #27
0
def test_order_auto_filler_set_contacts(user: User):
    """Should set the order contacts."""
    user.first_name = "first name"
    user.last_name = "last name"
    user.phone = "phone"
    order = Order()
    order.client = user

    OrderAutoFiller(order)._set_contacts()

    assert order.first_name == user.first_name
    assert order.last_name == user.last_name
    assert order.phone == user.phone

    order.is_another_person = True
    order.first_name = None
    order.last_name = None
    order.phone = None
    OrderAutoFiller(order)._set_contacts()

    assert order.first_name is None
    assert order.last_name is None
    assert order.phone is None

    order.is_another_person = False
    order.first_name = "new first name"
    order.last_name = "new last name"
    order.phone = "new phone"
    OrderAutoFiller(order)._set_contacts()

    assert order.first_name == "new first name"
    assert order.last_name == "new last name"
    assert order.phone == "new phone"
Example #28
0
    def save(self, user, commit=True):
        from django.contrib.contenttypes.models import ContentType
        #
        booking = super(BookingForm, self).save(commit=False)

        booking.booked_by = user
        open_order_list = Order.objects.open_order(user=user)
        if open_order_list:
            order = open_order_list[0]

        if commit:
            booking.save()

            # Add to open order
            if not open_order_list:
                order = Order(ordered_by=user)

            order.save()

            order_item = OrderItem(
                order=order,
                description=booking.price.__unicode__(),
                value=(booking.price.value * booking.quantity),
                vat=booking.price.vat,
                content_type=ContentType.objects.get_for_model(booking),
                object_id=booking.id)

            order_item.save()

        return booking
Example #29
0
    def handle(self, *args, **options):
        # Récupération du fichier xml
        response = requests.get(URL)
        data = response.content

        # Récupération de la racine du fichier XML
        xml_root = et.fromstring(data)

        # On récupère le noeud parent qui nous interesse : <orders></orders>
        orders = xml_root.find("orders")

        # On parcours les balises <order></order>
        for order_xml in orders.iter('order'):
            # Pour chaque order, on initialise une nouvelle commande
            # que l'on remplit puis sauvegarde.
            new_order = Order()

            new_order.id = order_xml.find("order_id").text
            new_order.marketplace = order_xml.find("marketplace").text
            new_order.idFlux = order_xml.find("idFlux").text
            new_order.order_amount = order_xml.find("order_amount").text

            if order_xml.find("order_purchase_date").text is not None:
                dt = parser.parse(order_xml.find("order_purchase_date").text)
                new_order.order_purchase_date = date(dt.year, dt.month, dt.day)
            if order_xml.find("order_purchase_heure").text is not None:
                dt = parser.parse(order_xml.find("order_purchase_heure").text)
                new_order.order_purchase_heure = time(dt.hour, dt.minute,
                                                      dt.second)

            new_order.save()
Example #30
0
def checkout(request, slug):
    order = Order.objects.get(slug=slug)
    order_items = OrderItem.objects.filter(order=order)
    order_total = 0
    order_items_total = 0
    order.customer = request.user
    for item in order_items:
        subtotal = item.quantity * item.unity_price
        order_total = order_total + subtotal
        order_items_total = order_items_total + item.quantity

    if order.status == "pending":
        order.status = "on_hold"
        order.save()

        restaurant = order.restaurant
        order = Order(restaurant=restaurant)

        order.save()
        request.session["order_slug"] = order.slug

    context = {
        'order': order,
        'order_items': order_items,
        'order_total': order_total,
        'order_items_total': order_items_total,
    }
    return render(request, 'orders/simple_checkout.html', context=context)