def new_order(request):
	order_id = OrderModel.objects.last()
	print order_id.id
	bot = ('https://api.telegram.org/bot120000427:AAGVzPumYWYHJAx_EtBS3KehPA2r-_5Fxwg/sendMessage')
	data_chat = {'chat_id': -20063683, 'text': 'new order created. order id is --> %s' % order_id.id}


	user_credentials = {}
	info_basket = basket_info(request)
	if request.method == 'POST':  # якщо метод з форми є POST тоді наступне
		name_form = OrderForm(request.POST)  # свторюємо PostForm з даними з форми
		if name_form.is_valid():  # валідація
			data = name_form.cleaned_data
			post = name_form.save(commit=False)  # відтермінування збереження форми комміт=фолс
			post.save()  # saving and redirecting
			# name_form.save_m2m()
			info_basket[0].delete()
			send_order_email(post.id, prefix='send_order_email')
			requests.post(bot, data_chat)

			return HttpResponseRedirect('/thanks')

	else:
		name_form = OrderForm()

	return render(request, 'orders/orders.html',
	              {'full_price': info_basket[1], 'user_info': name_form, 'basket': info_basket,
	               'user_credentials': user_credentials})
Beispiel #2
0
def show_the_cart():
    cart_info = get_right_cart_end()
    cart = session.get("cart", [])
    dishes_for_buy = []
    for d in cart:
        dishes_for_buy.append(db.session.query(Dish).get(d))
    if request.method == "POST":
        form = OrderForm()
        if form.validate_on_submit():
            dishes_ids = session['cart']
            date = datetime.datetime.today()
            user = db.session.query(User).get(session['user']['user_id'])
            user.address = form.address.data
            user.name = form.username.data
            order = Order(final_price=form.price.data,
                          date=date,
                          buyer_id=user.u_id)
            for ident in dishes_ids:
                dish = db.session.query(Dish).get(ident)
                order.dishes.append(dish)
            db.session.add(order, user)
            db.session.commit()
            session.pop('cart')
            return redirect('/ordered/')
        return render_template('cart.html',
                               cart_info=cart_info,
                               form=form,
                               dishes=dishes_for_buy)
    form = OrderForm(price=cart_info[1])
    return render_template('cart.html',
                           cart_info=cart_info,
                           form=form,
                           dishes=dishes_for_buy)
Beispiel #3
0
def order(request):  # создание заказа
    if request.method == 'POST':
        raw_data = OrderForm(request.POST)
        if raw_data.is_valid():
            data = raw_data.cleaned_data
            order = Orders.objects.create(**data)
            if check_time() == 'notify':
                send_email('admin', order)
            context = {'message': u'Заказ успешно добавлен'}
            return render(request, 'order_success.html', context)
        else:
            context = {'message': u'Ощибка. Вы ввели неверные данные'}
            return render(request, 'order_success.html', context)
    else:
        order_f = OrderForm()
        message = ''
        disable_submit = False

        if check_time() == 'stop':
            message = u'Время приема заказов истекло. Ваш заказ не будет принят.'
            disable_submit = True  # блокируем кнопку отправки заказа
            for field in order_f.fields:
                order_f.fields[field].widget.attrs['disabled'] = True

        context = {'order_add_form': order_f, 'message': message, 'disable_submit': disable_submit}
        return render(request, 'order_add_form.html', context)
Beispiel #4
0
def new_order():
    received = request.get_json()
    form = OrderForm(data=received)

    if form.validate():
        customer_id = int(received['customer_id'])
        order = Order(customer_id=customer_id)

        for product_id in received['products']:
            product = Product.query.get(product_id)
            order.products.append(product)
        order.save()

        success = {"message" : "success"}
        return make_response(jsonify(success), 201)

    if form.errors:
        validation_err = []
        for entry in form.errors:
            validation_err.append({"message": "incorrect value: < {0} : {1} >".format(entry, received[entry])})
        return make_response(jsonify(validation_err), 400)

    # Something went really bad
    err = {"message": "internal server error"}
    return make_response(jsonify(err), 500)
Beispiel #5
0
def cart():
    form = OrderForm()
    cart_list_id = session.get('dish', [])
    dish_list = []
    for dish_id in cart_list_id:
        dish_list.append(db.session.query(Dish).get(dish_id))
    flag_del = session.get('flag_dish_del', False)
    if flag_del:
        session['flag_dish_del'] = False
    flag_login = session.get('login', False)
    if form.validate_on_submit():
        return redirect('/ordered/')
    client_data = [
        session.get('client_name', ''),
        session.get('client_address', ''),
        session.get('client_email', ''),
        session.get('client_phone', '')
    ]
    return render_template('cart.html',
                           count_cart=count_dish_nav(),
                           form=form,
                           dish_list=dish_list,
                           flag_del=flag_del,
                           flag_login=flag_login,
                           client_data=client_data)
Beispiel #6
0
def cart():
    user = User()
    if session.get('user_id'):
        user = User.query.filter_by(id=int(session.get('user_id'))).first()
    else:
        flash(
            Markup(
                "Чтобы сделать заказ – <a href='/login/'>войдите</a> или <a "
                "href='/register/'>зарегистрируйтесь</a>"), 'warning')
    form = OrderForm()
    if form.validate_on_submit():
        ids = list(map(int, session.get('cart', {}).keys()))
        meals = db.session.query(Meal).filter(Meal.id.in_(ids)).all()
        order = Order(date=date.today(), mail=form.email.data, user_id=user.id)
        for meal in meals:
            order.meals.append(meal)
        db.session.add(order)
        db.session.commit()
        flash("Заказ был успешно сделан!", 'success')
        session['cart'] = {}
        return render_template("ordered.html")
    if form.errors:
        flash("{}".format(form.errors), 'danger')
    return render_template("cart.html",
                           form=form,
                           cart=session.get("cart", {}),
                           user=user)
Beispiel #7
0
def prepare_payment(request):
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            product = Clothes.objects.get(id=request.POST['product_id'])
            order = Order(
                buyer_id = request.user.id,
                address = form.cleaned_data['address'],
                phone = form.cleaned_data['phone'],
                email = request.user.email,
                amount = product.price,
                create_date = datetime.now(),
                payment_system = '11'
            )
            order.save()
            order.products.add(product)
            order.save()
            return HttpResponse(prepare_order('11', order.id, order.amount, order.phone, order.email))         
    else:
        raise Http404

    variables = RequestContext(request, {
        'form': form,
        'product': Clothes.objects.get(id=request.POST['product_id']),
    })
    return render_to_response(
        'prepare_order.html',
        variables
    )
Beispiel #8
0
def order(request):

    cookie_order = unquote(request.COOKIES.get("order", "{}"))
    order_items = json.loads(cookie_order)
    order_products = Product.objects.filter(id__in=order_items.keys())

    if request.method == "POST":
        form = OrderForm(request.POST)
        response = HttpResponseRedirect("/order")
        if form.is_valid():
            try:
                order=form.save(commit=False)
                order.save()
                ocs = []
                total = 0;
                for product in order_products:
                    oc = OrderCount(product=product, order=order, count=int(order_items[u"%d" % product.pk]['order_num'])*product.load)
                    oc.save()
                    oc.summ = order_items[u"%d" % product.pk]['order_summ']
                    total += oc.summ
                    ocs.append(oc)
                message = render_to_string('order_email.txt', {"products": ocs, "order": order, "total": total})
                send_to = [manager[1] for manager in settings.MANAGERS]
                email = EmailMessage(u'Заказ на сайте', message, 'temp <*****@*****.**>', to=send_to)
                email.send()
                messages.success(request, u'Ваша заявка отправлена специалистам компании.')
                response.delete_cookie("order")
            except :
                messages.error(request, u'При отправке заявки произошла ошибка. Пожалуйста, повторите попытку позднее.')

            return response
    else:
        form = OrderForm()

    return {'form':form, "products": order_products, "p": Page.objects.get(url="order")}
Beispiel #9
0
def order(request):
  if request.method == "POST":
    order_form = OrderForm(request.POST, request.FILES)
    if order_form.is_valid():
      body = "Details of the order:"
      body = body + "\nName: " + order_form.cleaned_data['name']
      body = body + "\nCollege: " + order_form.cleaned_data['college']
      body = body + "\nContact No: " + str(order_form.cleaned_data['mobile_no'])
      body = body + "\nE-Mail: " + order_form.cleaned_data['email']
      #body = body + "\nArchive order present: " + order_form.cleaned_data['archive']
      body = body + "\nProduct ID: " + order_form.cleaned_data['pid']
      #body = body + "\nOwn choice present: " + order_form.cleaned_data['choice']
      body = body + "\n End of Order details."
      attachments = []
      if order_form.cleaned_data['choice'] == True:
        f = order_form.cleaned_data.get('f')
        #image = ImageFile(f)
        attachments.append((str(f.name),f.read()))
      mail.send_mail(sender="Order Daemon <*****@*****.**>",
                     to="Imposter <*****@*****.**>",
                     subject="New Order placed",
                     body=body,attachments=attachments)
      return render_to_response("success.html", locals(), context_instance=RequestContext(request))    
  else:
    order_form = OrderForm()
  return render_to_response("order.html", locals(), context_instance=RequestContext(request))
Beispiel #10
0
def new_order(request):
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            meal = data['meal']
            person = data['person']
            email = data['email']
            byn = data['byn']
            byr = data['byr']
            comment = data['comment']
            if byn is None and byr is None:
                return HttpResponse("мы работаем только по предоплате")
            d_now = datetime.datetime.now().time()
            d1 = datetime.time(hour=13)
            d2 = datetime.time(hour=15)
            if d1 <= d_now <= d2:
                mail_admins(u'заказ', u'получен новый заказ')
            Order.objects.create(meal=meal, person=person, email=email, byn=byn, byr=byr, comment=comment)
            return redirect(go_main)
        data = form.errors
        return HttpResponse("{0}".format(data))
    else:
        d_now = datetime.datetime.now().time()
        d1 = datetime.time(hour=15)
        if d1 < d_now:
            context = {'my_form': OrderForm(), 'state':'off'}
        else:
            context = {'my_form':OrderForm()}
        return render(request, 'new_order_page.html', context)
Beispiel #11
0
def	New(request):


    try:
	if CheckAccess(request,'2') != 'OK':
	    return render_to_response("tmc/notaccess/tmc.html")
    except:
	return HttpResponseRedirect('/')





    if request.method == 'POST':
	
	form = OrderForm(request.POST)
	if form.is_valid():
	    tmc = form.cleaned_data['tmc']
	    project = form.cleaned_data['project']
	    executor = form.cleaned_data['executor']
	    r = NewOrder(tmc,project,GetUserKod(request),executor)
	    if r == 'OK':
		return HttpResponseRedirect('/tmcorderlist')
		

    form = OrderForm(None)

    c = RequestContext(request,{'form':form})
    c.update(csrf(request))
    return render_to_response("tmc/ordernew.html",c)
Beispiel #12
0
def new_order(request, pk):
    template = 'pos/new_order.html'
    form = OrderForm(request.POST or None)
    if request.method == 'POST':
        if form.is_valid():
            table_order = Order.objects.filter(table=pk)
            latest = table_order.latest('created')
            if latest.paid == True:
                order = Order()
            else:
                order = latest
            order.number = Order.objects.count() + 1
            order.table = Table.objects.get(number=pk)
            order.paid = False
            order.save()
            orderitem = OrderItem()
            product = form.cleaned_data.get('product')
            orderitem.product = Product.objects.get(title=product)
            orderitem.order = order
            orderitem.table = Table.objects.get(number=pk)
            orderitem.quantity = form.cleaned_data.get('quantity')
            orderitem.total_price = orderitem.quantity * orderitem.product.unit_price
            orderitem.discount = form.cleaned_data.get('discount')
            orderitem.notes = form.cleaned_data.get('notes')
            orderitem.save()
            return redirect('/table/' + pk)
    context = {'form': form}
    return render(request, template, context)
Beispiel #13
0
def api_orders():
    form = OrderForm()
    if form.is_submitted():
        result = request.form
        orders_dict['id'] = result['id']
        orders_dict['order_text'] = result['order_text']
        return redirect(url_for('apiget', action="all"))
    return render_template('orders.html', form=form)
Beispiel #14
0
def create_order(request):

    if request.method == "POST":
        from forms import OrderForm
        form = OrderForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.creator = request.user
            order.save()
Beispiel #15
0
def addorder(request, article_id):
    if request.POST:
        form = OrderForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.order_title=str(datetime.now())
            order.order_article=Article.objects.get(id=article_id)
            form.save()
    return redirect('articles/get/%s/' % article_id)
Beispiel #16
0
def detail(menu_item_name):
    form = OrderForm()
    form.side.choices= [(s.id, s.name) for s in\
                         MenuItems.query.filter_by(category='side').all()]
    menu_item = MenuItems.query.filter_by(name=menu_item_name).first_or_404()
    if form.validate_on_submit():
        add_to_order(menu_item.id)
    return render_template('customer/detail.html', title="Dave's Bread - " + menu_item.name,
                            menu_item=menu_item, form=form, user=current_user)
Beispiel #17
0
def orders(form: OrderForm = None) -> str:
    "Generate general order view"
    if form is None and not current_user.is_anonymous():
        form = OrderForm()
        location_id = request.args.get("location_id")
        form.location_id.default = location_id
        form.process()
        form.populate()
    return render_template("orders.html", orders=get_orders(), form=form)
Beispiel #18
0
def create_order(request):
    form=OrderForm(request.POST or None)
    if form.is_valid():
        order=form.save()
        for item in request.session['cart'].items:
            item.order=order
            item.save()
        clean_cart(request)
    # return store_view(request)
    return render_to_response("create_order.html",locals(),context_instance=RequestContext(request))
Beispiel #19
0
def market(request):
    if request.user.id:
        if request.POST:
            form = OrderForm(request.POST)
            if form.is_valid():
                form.save()
                return redirect('market_success')

        return map(request, template='b2c/market.html')
    else:
        return render(request, 'please_login.html')
Beispiel #20
0
def	NewOrder(request):

    try:
	if CheckAccess(request,'26') != 'OK':
	    return render_to_response("costcontract/notaccess/list.html")
    except:
	return HttpResponseRedirect('/')

    try:
	contract_id = request.session['contract_id']
    except:
	return HttpResponseRedirect('/costcontract')


    if request.method == 'POST':
	form = OrderForm(request.POST)
	if form.is_valid():
	    order = form.cleaned_data['order']
	    cost = form.cleaned_data['cost']
	    start_date = form.cleaned_data['start_date']
	    end_date = form.cleaned_data['end_date']
	    clientorder = form.cleaned_data['clientorder']
	    status = form.cleaned_data['status']
	    try:
		file_size = request.FILES['file_load'].size
		if file_size <= 104857600:
		    file_name = request.FILES['file_load'].name
		    file_data = request.FILES['file_load'].read()
		    file_name = file_name.split('\\')[-1]
		    (path,ext) = os.path.splitext(file_name)
		    file_name = file_name.replace(' ','_')
		    file_base64 = base64.b64encode(file_data)
		else:
		    file_name = ''
	    except:
		file_name = ''
		file_base64 = ''
		ext = ''

	    AddOrder(request,contract_id,order,cost,start_date,end_date,clientorder,status,file_name,file_base64,ext)
	    return HttpResponseRedirect('/costcontractorder')


	
    con = GetContract(contract_id)

    form = OrderForm(None)

    file_link = pickle.loads(con['file_data'])
    

    c = RequestContext(request,{'form':form,'con':con,'file_link':file_link,'legend':'Создание заказа'})
    c.update(csrf(request))
    return render_to_response("costcontract/editorder.html",c)
Beispiel #21
0
def create_order(request):
    form = OrderForm(request.POST or None)
    if form.is_valid():
        order = form.save()
        for item in request.session['cart'].items:
            item.order = order
            item.save()
        clean_cart(request)
    # return store_view(request)
    return render_to_response("create_order.html",
                              locals(),
                              context_instance=RequestContext(request))
Beispiel #22
0
def show_cart():
    form = OrderForm()
    items = session.get("cart", [])
    is_removed = session.get("is_removed", False)
    is_auth = session.get("is_auth", False)

    # show message if item is removed
    session['is_removed'] = False

    # Orders to show
    order: List[dict] = []
    order_sum = 0

    # Getting the meals from db
    meals = [db.session.query(Meal).get(int(item)) for item in items]
    for meal in meals:
        meals_ids = session.get("meals_ids", [])
        d = {'title': meal.title, 'price': meal.price, 'meal_id': meal.id}
        meals_ids.append(meal.id)
        session["meals_ids"] = meals_ids
        order.append(d)
        order_sum += meal.price

    if request.method == 'GET':
        session['order_sum'] = order_sum
        return render_template('cart.html',
                               meals_ids=items,
                               meals=order,
                               order_sum=order_sum,
                               form=form,
                               is_removed=is_removed,
                               is_auth=is_auth)

    if request.method == 'POST':
        if form.validate_on_submit():
            session['email'] = form.email.data
            session['name'] = form.name.data
            session['address'] = form.address.data
            session['phone'] = form.phone.data
            session['order_sum'] = request.form['order_sum']
            user = User.query.filter_by(email=session['email']).first()
            if user:
                return redirect('/login/')
            else:
                return redirect('/register/')
        else:
            return render_template('cart.html',
                                   meals_ids=items,
                                   meals=order,
                                   order_sum=order_sum,
                                   form=form,
                                   is_removed=is_removed,
                                   is_auth=is_auth)
Beispiel #23
0
def cart():
    # Проверяем наличие товаров в корзине
    if not session.get('cart_id'):
        error = "Ваша корзина пуста. Для оформления заказа необхоимо выбрать блюда."
        return render_template('error.html', error=error)

    form = OrderForm()
    # проверяем правильно заполнена ли форма (запрос POST)
    if form.validate_on_submit():
        order = OrderModel()
        user = session.get('user_id')
        # проверяем авторизирован ли пользователь, если нет - добавляем его в базу но без пароля и роль=guest
        if not user:
            user = UserModel(name=form.name.data,
                             email=form.email.data,
                             address=form.address.data,
                             phone=form.phone.data,
                             role='guest')
            db.session.add(user)
            db.session.commit()
        # пользователь авторизирован, можно из базы подгрузить его данные сразу в форму заказа
        else:
            user = db.session.query(UserModel).get(session.get('user_id'))
        # проверяем есть ли выбранные для заказа блюда, если да - делаем заказ
        if session.get('cart_id'):
            order.users = user
            order.summa = sum(list(map(int, session.get('cart_price'))))
            meals = list(map(int, session.get('cart_id')))
            for meal in meals:
                meal = db.session.query(MealModel).get(meal)
                order.meals.append(meal)
            db.session.add(order)
            db.session.commit()
            session['cart_id'] = []
            session['cart_price'] = []
            return redirect('/ordered/')
        else:
            flash('У вас нет блюд в корзине. Дбавьте блюдо и повторите оформление заказа.')
            return redirect('/')

    # Проверяем прошел ли пользователь аутентификацию
    if session.get('user_id'):
        user = db.session.query(UserModel).get(session['user_id'])
        form.name.data = user.name
        form.email.data = user.email
        form.address.data = user.address
        form.phone.data = user.phone
    meals = []
    for meal in session.get('cart_id'):
        meal = db.session.query(MealModel).get(meal)
        meals.append(meal)
    return render_template('cart.html', meals=meals, form=form)
Beispiel #24
0
def order():
    """ Sends user to contact page """
    form = OrderForm()
    session['img_url'] = request.args.get('url')
    if request.method == 'POST':
        if form.validate() == False:
            flash('All fields are required.')
            return render_template('order.html', form=form)
        else:
            return 'Form posted.'

    elif request.method == 'GET':
        return render_template('order.html', form=form, img_url=session['img_url'])
Beispiel #25
0
def add(id):
    qry = db_session.query(Tablets).filter(Tablets.tabletId == id)
    tablet = qry.first()
    if tablet:
        form = OrderForm(formdata=request.form, obj=tablet)
        if request.method == 'POST' and form.validate():
            orderid = save_order(tablet, form)
            return order_details(id, orderid)
        return render_template(
            'add_items.html',
            form=form)  #to display the form to add user details
    else:
        return 'Error loading #{id}'.format(id=tabletId)
Beispiel #26
0
def render_cart():
    is_auth = session.get('is_auth')
    form = OrderForm()
    cart = session.get('cart')
    cart_list = []  # список для страницы корзины
    dish_list = []  # список id для страницы аккаунта
    for dish_id in cart:
        cart_list.append(
            db.session.query(Dish).filter(Dish.id == dish_id).first())  #
    total_count = 0
    total_price = 0
    for i in cart_list:
        total_price += i.price  # считаем общую стоимость и количество товаров в заказе
        total_count += 1
        dish_list.append(i.id)
    if form.validate_on_submit():
        email = form.email.data
        phone = form.phone.data
        address = form.address.data
        dish = Dish.query.all()
        user = db.session.query(User).filter(
            User.email == form.email.data).first()
        if user and is_auth:  # Если пользователь залогинен добавляем заказ в базу
            order = Order(date=date.today(),
                          order_price=total_price,
                          status='ok',
                          email=email,
                          phone=phone,
                          address=address,
                          users_id=user.id)
            db.session.add(order)
            for d in dish:
                if d.id in dish_list:
                    order.dishes.append(d)
            db.session.commit()
            flash('Заказ принят в работу', 'success')
        else:
            return render_template('cart.html',
                                   is_auth=is_auth,
                                   form=form,
                                   count=total_count,
                                   price=total_price,
                                   cart_list=cart_list)
        return redirect(url_for('render_ordered'))
    return render_template('cart.html',
                           form=form,
                           count=total_count,
                           price=total_price,
                           cart_list=cart_list,
                           is_auth=is_auth)
Beispiel #27
0
def order_edit(request, order):
    form = OrderForm(instance=order)
    if request.method == 'POST':
        form = OrderForm(instance=order, data=request.POST)
        if form.is_valid():
            form.save(request=request)
            messages.success(request, "Successfully updated order in {env}".format(
                env=utils.get_environment_data(request).get('label')
            ))
            return http.HttpResponseRedirect(reverse('order_home'))
    context = dict(
        form=form,
    )
    return request_to_response(request, 'order/edit.html', context)
Beispiel #28
0
def mealremove(meal_id):
    form = OrderForm()
    cart = session.get('cart', [])
    cart.remove(meal_id)
    session['cart'] = cart
    status = session.get('auth', [])
    return render_template('cart.html', cart=cart_information(session.get('cart', [])), form=form, status=status)
Beispiel #29
0
def get_order():
    ''' 
    Sandwich order view. Fill out simple form with name,
    pickup location, etc. and then add to DB.
    '''
    form = OrderForm()
    order_id = None
    if form.validate_on_submit():
        order_id = DB.add_order(form.name.data, form.location.data,
                                form.pickup.data, form.bec.data, form.ec.data,
                                form.be.data, form.comments.data,
                                form.recurring.data)
        flash("Thank you for your order! Your order number is {}".format(
            order_id))
        return redirect('/')
    return render_template("order.html", form=form)
Beispiel #30
0
 def post(self, request, *args, **kwargs):
     self.order_form = OrderForm(request.POST)
     basket = Basket(request)
     if "next" in request.POST:
         try:
             basket.put(id=int(request.POST.get("id")), qty=int(request.POST.get("qty", 1)))
         except ValueError:
             pass
         return redirect(request.POST.get("next"))
     else:
         changed = False
         for k, v in DotExpandedDict(request.POST)["variant"].items():
             changed = changed or basket.change(int(k), int(v))
         basket.recalculate()
         basket.save()
         if not changed:
             if self.order_form.is_valid():
                 # process order
                 instance = self.order_form.save()
                 for variant, qty, _ in basket.get_contents():
                     OrderedWare.objects.create(variant=variant, qty=qty, order=instance)
                 basket.reset()
                 instance.status = 1
                 instance.save()
                 return self.render_to_response({"complete": True})
             else:
                 return self.render_to_response({"complete": False})
         return redirect(request.path)
Beispiel #31
0
def pop_from_cart(item):
    is_removed = True
    form = OrderForm()
    items = db.session.query(Dish)
    cart = session.get("cart", [])
    cart.remove(item)
    session["cart"] = cart
    for i in items:
        if i.title == item:
            session["price"] -= i.price
    cart = session.get("cart", [])
    uniq_dish_in_cart = set()
    new_cart = {}
    for item in cart:
        if item not in uniq_dish_in_cart:
            new_cart[item] = 1
            uniq_dish_in_cart.add(item)
        else:
            new_cart[item] += 1
    user = None
    if session.get("user_id"):
        user = User.query.filter(User.id == session.get("user_id")).first()
    session["word"] = correct_word(len(session.get("cart", [])))
    return render_template("cart.html",
                           form=form,
                           is_removed=is_removed,
                           new_cart=new_cart,
                           user=user)
Beispiel #32
0
def order(order_id):
    form = OrderForm(request.form)

    session = Session()
    order = session.query(Order).get(order_id)

    if not order:
        order = Order()
        session.add(order)
        session.commit()
    # Берём список всех продуктов
    products = session.query(Product).all()
    order_products = order.order_products

    # Генерируем динамический селект для бутстреп
    choices = []
    for product in products:
        choices.append((product.id, "{} - ${}".format(product.name,
                                                      product.price)))
    form.products.choices = choices

    if request.method == 'POST':
        product = session.query(Product).get(form.products.data)
        order_product = OrderProduct()
        order_product.product = product
        order_product.order = order
        session.add(order_product)
        session.commit()
        return redirect(url_for('order', order_id=order.id))

    return render_template('order_form.html',
                           form=form,
                           order_products=order_products)
Beispiel #33
0
def order_list(request):
    orders = Order.objects.using(utils.get_environment_db(request)).all()
    form = OrderForm()
    if request.method == 'POST':
        form = OrderForm(data=request.POST)
        if form.is_valid():
            form.save(request=request)
            messages.success(request, "Successfully added order to {env}".format(
                env=utils.get_environment_data(request).get('label')
            ))
            return http.HttpResponseRedirect(reverse('order_home'))
    context = dict(
        form=form,
        orders=orders
    )
    return request_to_response(request, 'order/index.html', context)
Beispiel #34
0
def render_order():
    form = OrderForm()
    if request.method == "POST":
        id_o = len(db.session.query(User).get(session["user_id"])) + 1
        date = datetime.now().date()
        mail = form.mail.data
        name = form.name.data
        address = form.address.data
        user_id = session["user_id"]
        sum_price = session["price"]
        dishes = session.get("cart", [])
        order = Order(id=id_o,
                      date=date,
                      mail=mail,
                      name=name,
                      address=address,
                      user_id=user_id,
                      sum_price=sum_price,
                      dishes=dishes)
        db.session.add(order)
        db.session.commit()
        return render_template("ordered.html")
    else:
        orders = db.session.query(Order).filter(
            Order.user_id == session["user_id"])
        return render_template("cart.html", orders=orders)
Beispiel #35
0
def order_submit():
    paypal_form = PaypalForm()
    order_form = OrderForm()
    credit_card_form = CreditCardForm()
    order = Order(customer_id=1,
                  total_amount=1.99,
                  discount=0.99,
                  order_created=strftime("%c"),
                  order_fulfilled=strftime("%c"))

    order_items = OrderItems(
        order_id=order.id,
        description=
        "{'enviroment': {'nodes': [{'apps': ['jenkins', 'bugzilla', 'fitnesse', 'selenium'], 'memory': '1GB', 'os': 'ubuntu 12.04 LTS', 'name': 'tools', 'description': 'host build automation and test management tools'}, {'memory': '2GB', 'os': 'ubuntu 12.04 LTS', 'name': 'web', 'dependencies': [{'python': '2.7'}, {'mysql': '5.5'}], 'description': 'deploy python webapp for testing'}]}}",
        price=99.99,
        discount=0.00,
        quantity=1)
    db.session.add(order)
    db.session.add(order_items)
    db.session.commit()
    #TODO: save cc form
    if purchase_form.submit.data == True:
        return redirect('https://www.paypal.com/cgi-bin/webscr')
    content = render_template('order.html',
                              paypal_form=paypal_form,
                              credit_card_form=credit_card_form,
                              order_form=order_form)
    return content
Beispiel #36
0
def cart():
    form = OrderForm()
    data = []
    sum = 0
    selected_meals = {}
    user = User.objects.filter(name='guest').first()
    if 'data' in session:
        data = session['data']
        selected_meals = {int(key): int(value) for key, value in data.items() if value != 0 and key != ''}
        meals = Meal.objects(__raw__={"meal_id": {"$in": list(selected_meals.keys())}})
        data = []
        for meal in meals:
            sum += int(meal.price) * int(selected_meals[meal.meal_id])
            data.append({'meal_id': meal.meal_id, 'title': meal.title,
                         'price': meal.price, 'qnt': selected_meals[meal.meal_id]})
    if request.method == "POST":
        if 'logged_in' in session and session['logged_in']:
            form.name.data = session['name']
            form.email.data = session["username"]
            user = User.objects.filter(name=session['name']).first()
        order = Order(date=datetime.now(), sum=sum, status='ordered', user=user,
                      phone=form.phone.data, address=form.address.data)
        order.save()
        user.orders.append(order)
        user.save()
        for key, value in selected_meals.items():
            meal = MealWithCount(meal=Meal.objects.filter(meal_id=key).first(), count=value)
            meal.save()
            order.meals.append(meal)
        order.save()
        return redirect('/order_done/')
    return render_template("cart.html", data=data, form=form)
Beispiel #37
0
def pop_from_cart(item):
    flag = 1
    form = OrderForm()
    items = db.session.query(Dish)
    cart = session.get("cart", [])
    cart.remove(item)
    session["cart"] = cart
    for i in items:
        if i.title == item:
            session["price"] -= i.price
    cart = session.get("cart", [])
    use_it = set()
    new_cart = []
    for item in cart:
        if item not in use_it:
            new_cart.append(item)
            use_it.add(item)
    user = None
    if session.get("user_id"):
        user = User.query.filter(User.id == session.get("user_id")).first()
    session["word"] = correct_word(len(session.get("cart", [])))
    return render_template("cart.html",
                           form=form,
                           flag=flag,
                           new_cart=new_cart,
                           user=user)
Beispiel #38
0
def checkout():
    try:
        form = OrderForm()
        if request.method == "POST":
            if session['logged_in']:
                orders = mongo.db.orders
                card_number = form.card_number.data
                card_holder = form.card_holder.data
                expires = form.expires.data
                cvc = form.cvc.data
                hashed_card_number = bcrypt.hashpw(card_number.encode('utf-8'),
                                                   bcrypt.gensalt())
                hashed_cvc = bcrypt.hashpw(cvc.encode('utf-8'),
                                           bcrypt.gensalt())
                now = datetime.now()
                formatted_date = now.strftime('%Y-%m-%d %H:%M:%S')
                customer = session['email']
                name = form.name.data
                address = form.address.data
                city = form.city.data
                post_code = form.post_code.data
                phone_number = form.phone_number.data
                recipient_email = form.recipient_email.data
                ordered_products = []
                for value in session['cart_item'].items():
                    product_in_cart = {
                        "barcode": value[1]["barcode"],
                        "price": value[1]["price"],
                        "quantity": value[1]["quantity"],
                        "product_name": value[1]["product_name"]
                    }
                    ordered_products.append(product_in_cart)

                orders.insert_one({
                    'card_number': hashed_card_number,
                    'card_holder': card_holder,
                    'cvc': hashed_cvc,
                    'expires': expires,
                    'order_date': formatted_date,
                    'customer': customer,
                    'name': name,
                    'address': address,
                    'city': city,
                    'post_code': post_code,
                    'phone_number': phone_number,
                    'email': recipient_email,
                    'ordered_products': ordered_products
                })
                flash("Order Confirmed! Check your email for details")
                return redirect(url_for('products'))

            else:
                flash("Please login to continue")
                return redirect(url_for('login_customer'))

        return render_template('checkout.html', title='Checkout', form=form)

    except Exception as e:
        return str(e)
Beispiel #39
0
def search_form(request):
    """
    View to display "search.html" i.e. the search interface or form.
    
    First it'll check which type of request is i.e; 'search' request or 
    'generate register' request. On the basis of that, it'll assign code
    to search_type_code which will be used in template.

    It'll raise an exception if anyone give invalid value in 'type'.
    Argument:Http Request
    Return:Render Search
    """
    try:
        if request.GET['type'] == 'search':
            submit_url = reverse('search_result')
            search_type_code = '1'
            client_form = ClientForm()
            order_form = OrderForm()
            request_status = request_notify()
            temp = {
                'client_form': client_form,
                'order_form': order_form,
                'code': search_type_code,
                'url': submit_url,
                'request': request_status
            }
        elif request.GET['type'] == 'register':
            submit_url = reverse('view_register')
            search_type_code = '2'
            client_form = ClientForm()
            order_form = OrderForm()
            add_constraints = AddConstraints()
            request_status = request_notify()
            temp = {
                'client_form': client_form,
                'order_form': order_form,
                'add_constraints': add_constraints,
                'code': search_type_code,
                'url': submit_url,
                'request': request_status
            }
        else:
            return HttpResponse('<h1>Page not found</h1>')
    except:
        return HttpResponse('<h1>Invalid URL</h1>')
    return render(request, 'reports/search.html', temp)
Beispiel #40
0
def render_cart():
    error = ''
    del_item_message = ''
    if session.get('del_item_message'):
        del_item_message = 'Блюдо удалено из корзины'
        session.pop('del_item_message')
    order_form = OrderForm()
    cart = session.get('cart')
    ordered_dishes = Dish.query.filter(Dish.id.in_(cart)).all() if cart else []
    counter = Counter(cart) if cart else {}
    ordered_dishes = [{
        'dish': dish,
        'amount': counter[dish.id]
    } for dish in ordered_dishes]
    if request.method == 'POST' and order_form.validate_on_submit():
        if not cart:
            error = 'Для того чтобы сделать заказ в корзине должен быть хотя бы один товар'
        else:
            dishes_in_order = [
                DishesInOrder(amount=item['amount'], dish=item['dish'])
                for item in ordered_dishes
            ]

            order = Order(date=datetime.datetime.now(),
                          status='accepted',
                          order_sum=session.get('cart_sum'),
                          name=order_form.name.data,
                          email=order_form.email.data,
                          phone=order_form.phone.data,
                          address=order_form.address.data,
                          dishes=dishes_in_order,
                          user_id=session.get('user')['id']
                          if session.get('user') else None)
            db.session.add_all(dishes_in_order)
            db.session.add(order)
            db.session.commit()
            return redirect(url_for('render_ordered'))
    cart_for_template = get_cart_for_template(session)
    return render_template('cart.html',
                           error=error,
                           message=del_item_message,
                           ordered_dishes=ordered_dishes,
                           cart=cart_for_template,
                           form=order_form,
                           session=session)
Beispiel #41
0
def order():
    paypal_form = PaypalForm()
    credit_card_form = CreditCardForm()
    order_form = OrderForm()
    content = render_template('order.html',
                              paypal_form=paypal_form,
                              credit_card_form=credit_card_form,
                              order_form=order_form)
    return content
Beispiel #42
0
def contacts_page():
    data = request.args.get("type")

    if data == "order":
        form = OrderForm()

    else:
        form = ContactForm()

    if request.method == 'POST' and form.validate():
        mail(subject=form.subject.data,
             main=form.main.data,
             name=form.name.data,
             mail=form.mail.data)

        return redirect(url_for("contacts_page"))

    return render_template("contacts.html", form=form)
Beispiel #43
0
def creating_order():
    orders = Order.query.all()
    form = OrderForm(request.form)
    if request.method == "POST":
        name = form.name.data
        unit = form.unit.data
        provider_id = form.provider.data.id
        Order.save(Order(name=name, unit=unit, provider_id=provider_id))
    return render_template('orders.html', orders=orders, form=form)
Beispiel #44
0
def BeginToTrade(request):
    RequestUser = request.user
    RequestGroup = RequestUser.group
    context={
        "form":SearchForm(),
        "sear":True
    }
    if request.method=="POST":
        Post = request.POST.dict()
        if Post.has_key("StockName"):
            StockName=str(Post["StockName"])
        else:
            StockName=""
        if Post.has_key("Volume"):
            Volume=Post["Volume"]
        else:
            Volume=0
        if Post.has_key("TransactionType"):
            TransactionType=Post["TransactionType"]
        else:
            TransactionType=None
        print Post

        context={
            "form":OrderForm(),
            "sear":False
            
            }
        
        stock = Stock.objects.filter(StockName=StockName)
        if len(stock)==0:
            print "123123"
            stock = Stock(StockName=StockName)
            stock.save()
            context["StockData"] = jsonpickle.encode(stock.Get_data())
        else:
             context["StockData"] = jsonpickle.encode(stock[0].Get_data())

        if Volume!="" and TransactionType != None:
            RequestUser.group.UpdateAcount()
            stockprice = stock[0].Get_Price()
            if TransactionType=="buy":
                if RequestUser.group.Cash >= stockprice*float(Volume):
                    RequestGroup.transaction_set.create(TransType = TransactionType,StockOfTrans = stock[0], Volume=Volume, PriceAtTrans=stock[0].Get_Price() )
                    context["mess"] = "Succesfully making transaction"
                else:
                    context["mess"] = "You don't have enough money"
            else:
                asset = RequestUser.group.AllAsset
                if asset[StockName] >= float(Volume):
                    RequestGroup.transaction_set.create(TransType = TransactionType,StockOfTrans = stock[0], Volume=Volume, PriceAtTrans=stock[0].Get_Price() )
                    context["mess"] = "Succesfully making transaction"
                else:
                    context["mess"] = "You don't have enough this stock to sell"
        
    return render(request, "BeginToTrade.html", context)
Beispiel #45
0
def show_form():
    form = OrderForm()

    if form.validate_on_submit():
        bitcoin = bitcoinrpc.connect_to_local()
        order = Order().populate_from_order_form(form)
        order.address = bitcoin.getnewaddress()
        db.session.add(order)
        
        for gb_form in form.group_buys:
            db.session.add(GroupBuy(order = order
                ).populate_from_groupbuy_form(gb_form))
        
        db.session.commit()
        
        return redirect(url_for(".order_completed", address = order.address))
    
    return render_template("index.html",
        form = form, prices = prices, site_name = app.config["SITE_NAME"])
Beispiel #46
0
def order_detail(request, secret):
    order = get_object_or_404(Order, secret=secret)
    form = OrderForm(instance=order)
    products_in_cart = ProductInCart.objects.filter(cart=order.cart)

    return render_to_response('order_item.html', {
        'order': order,
        'form': form,
        'products_in_cart': products_in_cart
    })
Beispiel #47
0
def cart():
    form = OrderForm()
    lst_meals = cart_meals(session.get('cart', []))
    if session.get("user_id"):
        if request.method == "POST":
            if not form.validate_on_submit():
                form.errors.append("Не все поля заполнены корректно!")
                return render_template('cart.html',
                                       form=form,
                                       log=session.get('user_id'),
                                       lst_meals=lst_meals)

# Добавляем заказ в базу данных на основании данных из формы
            user = User.query.get(session.get("user_id"))
            order = Order(
                date=datetime.datetime.today().strftime('%H:%M %d-%m-%Y'),
                sum=form.order_summ.data,
                status='preparing',
                mail=user.mail,
                phone=form.clientPhone.data,
                address=form.clientAddress.data)
            db.session.add(order)

            # Добавляем данные в ассоциативную таблицу orders_meals
            meals = []
            for meal_id in session.get('cart'):
                if meal_id not in meals:
                    meals.append(meal_id)
                    db_meal = Meal.query.get(meal_id)
                    orders_meals = OrdersMeals(
                        meal_amount=session.get('cart').count(meal_id),
                        meal_sum=session.get('cart').count(meal_id) *
                        int(db_meal.price),
                        orders=order,
                        meals=db_meal)
                    db.session.add(orders_meals)

            db.session.commit()
            return redirect(url_for('ordered'))
    return render_template('cart.html',
                           form=form,
                           log=session.get('user_id', []),
                           lst_meals=lst_meals)
Beispiel #48
0
 def get(self, request, *args, **kwargs):
     self.order_form = OrderForm()
     if "id" in request.GET:
         basket = Basket(request)
         try:
             basket.remove(int(request.GET.get("id", 0)))
         except ValueError:
             pass
         return redirect(request.path)
     return super(BasketView, self).get(request, *args, **kwargs)
def order(request):
    """
    Handle order
    :param request:
    :return:
    """
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            if 'name' in form.cleaned_data:
                name = form.cleaned_data['name']
            else:
                name = None
            if 'email' in form.cleaned_data:
                email = form.cleaned_data['email']
            else:
                email = None
            if 'phone' in form.cleaned_data:
                phone = form.cleaned_data['phone']
            else:
                phone = None
            if email == "" and phone == "":
                return JsonResponse({"result": "error"})
            Order.objects.create(
                name=name,
                email=email,
                phone=phone,
                datetime=timezone.now(),
            )
            try:
                send_mail(
                    "New order",
                    'Phone: ' + phone + '\n \nEmail: ' + email,
                    getattr(settings, "EMAIL_HOST_USER", None),
                    [settings.EMAIL_ADDRESS, ],
                    fail_silently=False,
                )
            except:
                pass
            return JsonResponse({"result": "ok"})
        else:
            return JsonResponse({"result": "error"})
Beispiel #50
0
def add_order(request):
	form=OrderForm(request.POST)
	
	if form.is_valid():
		global add
		o=Order(FIO=form.cleaned_data['FIO'], adres=form.cleaned_data['adres'], phone_number=form.cleaned_data['phone_number'],
			email=form.cleaned_data['email'], status=False, time=datetime.datetime.now())
		o.save()
		
		
		
		redirect=HttpResponseRedirect('/order/')
		redirect.set_cookie(key='order',value="ваш заказ учтен",max_age=5)
		
		return redirect
	else:
		
		redirect=HttpResponseRedirect('/order/')
		redirect.set_cookie(key='order',value=form.errors, max_age=5)
		return redirect
def create_order(request):
    """
    Processes an book order from customers
    """
    print request.session.session_key
    print dict(request.session)
    if request.user.has_perm('user.send_tweet'):
        print "Si puede twittear"
    else:
        print "No puede twittear"
    form = OrderForm()
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            # This decrements the number of books in stock
            # for the requested book
            order = form.save()
            return HttpResponseRedirect(reverse('latest_books'))
    return render_to_response(
        'books/create_order.html', 
        {'form': form}
    )
Beispiel #52
0
def change(request):
    if request.method == "POST":
        #этот if проверяет выбор элемента для изменения
        if request.POST.get('change'):
            change_id = request.POST.get('change')
            order = Order.objects.filter(id=change_id).get()
            data = {'meal':order.meal, 'person':order.person, 'email':order.email, 'byn':order.byn,
                    'byr':order.byr, 'comment':order.comment}
            context = {'my_form':OrderForm(data)}
            request.session['change_id'] = change_id
            return render(request, 'change_page.html', context)
        #здесь уже происходит само изменение
        if request.session.has_key('change_id'):
            form = OrderForm(request.POST)
            if form.is_valid():
                data = form.cleaned_data
                order = Order.objects.filter(id=request.session.get('change_id')).get()
                order.meal = data['meal']
                order.person = data['person']
                order.email = data['email']
                order.byn = data['byn']
                order.byr = data['byr']
                order.comment = data['comment']
                order.save()
                admin_mail = User.objects.filter(username='******', is_superuser=True).get().email
                send_mail(u'изменения в заказе', u'{0} {1}'.format(order.meal, order.comment),
                          '{0}'.format(admin_mail), ['{0}'.format(order.email)])
                del request.session['change_id']
                return redirect(show)
            else:
                data = form.errors
                return HttpResponse("{0}".format(data))
        else:
            return HttpResponse('либо вы не выбрали заказ из списка<br>'
                                'либо обратитесь к администратору')
    else:
        context = {'data':Order.objects.filter(), 'step':1}
        return render(request, 'change_page.html', context)
Beispiel #53
0
def show_cart(request, template_name="cart/cart.html"):
    if request.method == 'POST':
        subtotal_class = cart.Subtotal(request)
        cart_items = cart.get_cart_items(request)
#        cart_subtotal = subtotal_class.subtotal()
        discount = subtotal_class.discount
        postdata = request.POST.copy()
        form = OrderForm(request.POST)

        if 'Remove' in postdata:
            cart.remove_from_cart(request)
        if 'Update' in postdata:
            cart.update_cart(request)
        if form.is_valid():
            # Пишу клиента в базу
            cart.save_client(request, form)
            # Удаляю сессию у клиента
            del request.session['cart_id']
            is_order = 1
            # Отправляем админу смс
            if SEND_SMS:
                cart.send_sms(cart_items, form)
            # Отправляем админу email
            if SEND_EMAIL:
                cart.send_admin_email(request, cart_items, form)
                if form.cleaned_data['email']:
                    # Отправляем email клиенту
                    cart.send_client_email(cart_items, form)
    else:
        form = OrderForm()

    cart_items = cart.get_cart_items(request)
#    if cart_items:
#        subtotal_class = cart.Subtotal(request)
#        cart_subtotal = subtotal_class.subtotal()
#        discount = subtotal_class.discount
    page_title = 'Корзина'
    return render_to_response(template_name, locals(), context_instance=RequestContext(request))
Beispiel #54
0
def order_create():
    orderForm = OrderForm()
    orderForm.populate()
    if orderForm.validate_on_submit():
        order = Order()
        orderForm.populate_obj(order)
        db.session.add(order)
        db.session.commit()
        return redirect(url_for('.order', id=order.id))
    return orders(form=orderForm)
Beispiel #55
0
def order(request, id=None):
	try:
		# просмотр ранее завершенного заказа
		order = Order.objects.get(pk=id, user=request.user)
		
	except Order.DoesNotExist:
		# использовать в форме заказа данные из последнего заказа
		try:
			last_order = Order.objects.filter(user=request.user).order_by('-id')[0]
		
		except IndexError:
			last_order = None
		
		form = OrderForm(auto_id='%s', initial={
			'name'   : request.user.first_name+' '+request.user.last_name,
			'email'  : request.user.email,
			'phone'  : request.user.get_profile().phone,
			
			'city'   : last_order and last_order.city,
			'address': last_order and last_order.address,
			'phone'  : last_order and last_order.phone
		})
		
		if not request.session.get('cart'):
			raise Http404
		
		if request.POST:
			form = OrderForm(request.POST, auto_id='%s')
			
			# сохранение заказа
			if form.is_valid():
				order = Order.objects.create(
					user         = request.user,
					name         = form.cleaned_data['name'],
					
					city         = form.cleaned_data['city'],
					address      = form.cleaned_data['address'],
					
					email        = form.cleaned_data['email'],
					phone        = form.cleaned_data['phone'],
					
					sum          = cart_total(request.session['cart']),
					is_confirmed = 1
				)
				
				for id, item in request.session['cart'].iteritems():
					OrderItem.objects.create(
						order        = order,
						product_id   = item.id,
						title        = item.title,
						quantity     = item.quantity,
						comment      = item.comment,
						price        = item.price,
						sum          = item.price * float(item.quantity)
					)
				
				del(request.session['cart'])
				
				mail_managers(u'Новый заказ номер '+str(order.id), unicode(
					'Поступил новый заказ на сумму '+str(order.sum)+' руб. Контактные данные: '+
					order.name+' ('+str(order.phone)+', '+order.email+'). Доставка по адрессу '+order.city+', '+
					order.address
				))
				
				return render_to_response('candy/order-confirmed.html', {'order': order}, context_instance=RequestContext(request))
				
	return render_to_response('candy/order.html', {
		'order': locals().get('order'),
		'form' : locals().get('form'),
		'items': locals().has_key('order') and order.items.all() or [item for id, item in request.session['cart'].iteritems()],
		'total': cart_total(request.session.get('cart') or {}),
	}, context_instance=RequestContext(request))
Beispiel #56
0
def orders(form=None):
    if form is None and not current_user.is_anonymous():
        form = OrderForm()
        form.populate()
    return render_template('orders.html', orders=get_orders(), form=form)
Beispiel #57
0
def order(request):
	product_ids = [int(x) for x in request.POST.getlist('products')]
	quantities = [int(x) for x in request.POST.getlist('quantities')]
	spare_list = Spare.objects.filter(id__in=product_ids)
	is_order = request.POST.has_key('_order')
	order_products = []
	body = []
	total_sum = 0
	no_price = False
	for i, spare in enumerate(spare_list):
		body.append(u'* %s - %s шт.' % (spare.title, quantities[i]))
		if spare.price:
			total_sum += spare.price * quantities[i]
		else:
			no_price = True
		order_products.append({
			'spare': spare,
			'quantity': quantities[i]
		})
	body = '\n'.join(body)

	data = request.POST.copy() if is_order else None
	if data is not None:
		data['body'] = body
		data['total_sum'] = total_sum
		if not request.user.is_anonymous():
			data['user_id'] = request.user.id
	else:
		if is_order:
			pass
			# raise Exception('DATA IS NONE')

	if request.user.is_anonymous():
		form = OrderForm(data)
	else:
		try:
			profile = request.user.profile
			form = OrderForm(data, instance=profile, initial={'email': request.user.email})
		except:
			form = OrderForm(data)

	if is_order and form.is_valid():
		form.body = body.replace('\n', '<br>')
		order = form.save(commit=False)
		order.total_sum = total_sum
		order.status = 0
		order.body = body
		if not request.user.is_anonymous():
			order.user = request.user
		order.save()

		response = render(request, 'spares/success.html', {})
		response.set_cookie('cart_ids', json.dumps([]))
		return response
	else:
		return render(request, 'spares/form.html', {
			'order_products': order_products,
			'form': form,
			'is_order': is_order,
			'total_sum': total_sum,
			'no_price': no_price
		})
Beispiel #58
0
def view_order(request, compete_id=1):
    if compete_id is None:
        compete_id = 1
    school = get_object_or_404(School, user=request.user)
    competition = get_object_or_404(Competition, pk=compete_id)
    groups = set(request.user.groups.all())
    available_competitions = [c for c in Competition.objects.all()
                              if any(g in groups for g in c.available_for.all())]

    parallels_for_competition = CompetitionForParallel.objects.filter(competition=competition)
    parallels_for_competition_dict = dict((pc.parallel, pc) for pc in parallels_for_competition)
    if competition not in available_competitions:
        raise Http404('this competition is unavalilable for you')
    if competition.state == 4:
        return render_to_response('cabinet_order.html', {
            'school': school,
            'competitions':  available_competitions,
            'selected_competition': competition,
            'form': None,
            'message': '',
            'parallels': parallels_for_competition,
        }, context_instance=RequestContext(request))
    else:
        message = ''
        messagestatus = 1
        is_new = True
        order_status = 'не подана'
        blank_status = ''
        try:
            current_order = Order.objects.get(school=school, competition=competition)
            order_status = current_order.get_status_display()
            if competition.state == 3:
                blank_status = current_order.get_blank_status_display()
            is_new = False
        except Order.DoesNotExist:
            current_order = Order()
            current_order.create_time = datetime.now()
            current_order.competition = competition
            current_order.school = school

        if request.method == 'POST':
            form = OrderForm(dict(request.POST.items()), instance=current_order)
            if form.is_valid():
                message = ('Заявка поступила на рассмотрение'
                           if is_new else
                           'Заявка изменена')
                form.save()
            else:
                message='Неправильно указаны поля'
                messagestatus = 0
                if is_new:
                    current_order = None
            #form = OrderForm(instance=current_order)
            #form.errors = src_form.errors
        else:
            form = OrderForm(instance=current_order)
            if is_new:
               current_order = None
        total = 0
        total_cost = 0
        if current_order:
            order_parallels = OrderParallel.objects.filter(order=current_order)
            total = sum(op.count for op in order_parallels)
            total_cost = sum(op.count * parallels_for_competition_dict[op.parallel].cost for op in order_parallels if op.parallel in parallels_for_competition_dict)

        return render_to_response('cabinet_order.html', {
            'total': total,
            'parallels': parallels_for_competition,
            'total_cost': total_cost,
            'competitions':  available_competitions,
            'selected_competition': competition,
            'form': form,
            'message': message,
            'messagestatus': messagestatus,
            'order': current_order,
            'school': school,
        }, context_instance=RequestContext(request))
Beispiel #59
0
def checkout(request):
    if not request.session.has_key("basket"):
        return redirect("category_list")
    elif request.GET.has_key("add_item"):
        item = Item.objects.get(pk=request.GET["add_item"])
        match = 0
        for itm in request.session["basket"]:
            if itm["item"] == item:
                itm["amount"] += 1
                match = 1
        if match == 0:
            request.session["basket"].append({'item': item, 'amount': 1})
        request.session.modified = True
        return redirect("checkout")
    elif request.GET.has_key("remove_item"):
        item = Item.objects.get(pk=request.GET["remove_item"])
        for itm in request.session["basket"]:
            if itm["item"] == item:
                itm["amount"] -= 1
                if itm["amount"] == 0:
                    request.session["basket"].remove(itm)
        if request.session["basket"] == []:
            del request.session["basket"]
        request.session.modified = True
        return redirect("checkout")
        
    basket = request.session["basket"] or []
    total = 0
    itms = []
    for itm in basket:
        itm["price"] = (itm["item"].price * itm["amount"])
        itm["fees"] = []
        itms.append(itm["item"])
        total = total + itm["price"]
        for fee in itm["item"].extra_fees.all():
            d = {
                'fee': fee,
                'price': (fee.price * itm["amount"])
            }
            itm["fees"].append(d)
            total = total + d["price"]
    # Add eventual fees to order
    for orderfee in OrderFee.objects.filter(applies_below__gt=total).order_by('price'):
        avoid = False
        avoid_item = None
        diff = (orderfee.applies_below - total)
        total = total + orderfee.price
        print diff
        if diff < 150 and diff > 0:
            try:
                avoid_item = Item.objects.filter(price__gte=(diff), price__lte=(diff+30))
                if avoid_item.filter(related_items__in=itms).count() > 0:
                    avoid_item = avoid_item.filter(related_items__in=itms)
                avoid_item = avoid_item[random.randrange(0,avoid_item.count())]
                avoid = True
            except:
                pass
        if diff > 0:
            basket.append({
                'price': orderfee.price,
                'amount': 1,
                'name': orderfee.name,
                'avoid': avoid,
                'avoid_fee': diff,
                'avoid_item': avoid_item,
                'item': None,
            })
    if request.POST:
        form = OrderForm(request.POST, instance=Order(site=Site.objects.get_current()))
        if form.is_valid():
            order = form.save()
            for itm in basket:
                if itm["item"]:
                    o = OrderLine(item_id=itm["item"].id, name=itm["item"].name, amount=itm["amount"], price=itm["item"].price, order=order)
                    o.save()
                    i = Item.objects.get(pk=itm["item"].id)
                    i.amount_on_stock -= itm["amount"]
                    i.amount_sold += itm["amount"]
                    i.save()
                    for fee in itm["item"].extra_fees.all():
                        o = OrderLine(fee_id=fee.id, name=fee.name, amount=itm["amount"], price=fee.price, order=order)
                        o.save()
                else:
                    o = OrderLine(name=itm["name"], amount=itm["amount"], price=itm["price"], order=order)
                    o.save()
            msg = render_to_string("catalog/order_confirmation.html", {
                'order': order,
                'site': Site.objects.get_current(),
            })
            OrderMessage(order=order, gateway=default_settings.MSG_GATEWAY_DEFAULT, message=msg).save()
            request.session.flush()
            if request.POST.has_key("remember_my_address"):
                request.session["first_name"] = order.first_name
                request.session["last_name"] = order.last_name
                request.session["address"] = order.address
                request.session["address_2"] = order.address_2
                request.session["postal_code"] = order.postal_code
                request.session["city"] = order.city
                request.session["cellphone"] = order.cellphone
                request.session["email"] = order.email
                request.session["remember_my_address"] = request.POST["remember_my_address"]
            if options.payment == True:
                return redirect("pay", order_id=order.id)
            return redirect(order)
    else:
        
        form = OrderForm(initial=request.session)
    dictionary = {
        'basket': basket,
        'total': total,
        'vat': total * Decimal("0.2"),
        'form': form,
    }
    
    return render_to_response('catalog/checkout.html',
                              dictionary,
                              context_instance=RequestContext(request))
Beispiel #60
0
def order(request, id=None):

    DELIVERIES = {"post": 230, "ems": 550, "pek": 350, "self": 0}

    try:
        # просмотр ранее завершенного заказа
        order = Order.objects.get(pk=id, user=request.user.is_authenticated() and request.user or None)

    except Order.DoesNotExist:

        # если корзина пуста заказа не будет
        if not request.session.get("cart"):
            raise Http404

            # использовать в форме заказа данные из последнего заказа
        try:
            last_order = Order.objects.filter(user=request.user.is_authenticated() and request.user or None).order_by(
                "-id"
            )[0]

        except IndexError:
            last_order = None

        try:
            form = OrderForm(
                auto_id="%s",
                initial={
                    "name": request.user.first_name + " " + request.user.last_name,
                    "email": request.user.email,
                    "phone": request.user.get_profile() and request.user.get_profile().phone or None,
                    "city": last_order and last_order.city,
                    "address": last_order and last_order.address,
                    "phone": last_order and last_order.phone,
                },
            )

        except AttributeError:
            form = OrderForm(auto_id="%s")

        if request.POST:
            form = OrderForm(request.POST, auto_id="%s")

            try:
                user = User.objects.get(email=request.POST["email"])

                # если клиент не авторизован и использует мыльник действительного
                # аккаунта из базы - поругаться и предложить авторизоваться
                if not request.user.is_authenticated():
                    auth_error = True

            except User.DoesNotExist:
                if form.is_valid():
                    user = register_inactive(
                        form.cleaned_data["email"][0 : form.cleaned_data["email"].index("@")],
                        form.cleaned_data["email"],
                    )

                    # такое может быть с пользователя, с пустым email
            except User.MultipleObjectsReturned:
                pass

                # сохранение заказа
            if form.is_valid() and not locals().get("auth_error"):

                for values in [form.cleaned_data]:
                    order = Order.objects.create(
                        user=user,
                        name=values["name"],
                        city=values["city"],
                        address=values["address"],
                        email=values["email"],
                        phone=values["phone"],
                        delivery_by=values["delivery_by"],
                        sum=cart_total(request.session["cart"]) + DELIVERIES[values["delivery_by"]],
                        is_confirmed=1,
                    )

                for id, item in request.session["cart"].iteritems():
                    OrderItem.objects.create(
                        order=order,
                        product_id=item.id,
                        title=item.title,
                        quantity=item.quantity,
                        comment=item.comment,
                        price=item.price,
                        sum=item.price * float(item.quantity),
                    )

                items_str = (", ").join(
                    [
                        u'"%s" x %s (%.2f р. всего)' % (item.title, item.quantity, float(item.quantity) * item.price)
                        for id, item in request.session["cart"].iteritems()
                    ]
                )

                user.get_profile().send_email(
                    u"Заказ номер %i принят к обработке" % order.id,
                    (
                        u"""
					Вы совершили заказ на сумму %(sum).2f рублей. Контактные данные: %(name)s,
					email %(email)s, телефон %(phone)s. Доставка по адресу %(city)s, %(address)s.
					
					Содержимое заказа: %(items)s.
					
					Спасибо, мы свяжемся с вами в ближайшее время!
				"""
                        % {
                            "address": order.address,
                            "phone": order.phone,
                            "email": order.email,
                            "city": order.city,
                            "name": order.name,
                            "sum": order.sum,
                            "items": items_str,
                        }
                    ).encode("utf8"),
                )

                del (request.session["cart"])

                mail_managers(
                    u"Новый заказ номер " + str(order.id),
                    u"Поступил новый заказ на сумму "
                    + str(order.sum)
                    + u" руб. Контактные данные: "
                    + order.name
                    + " ("
                    + str(order.phone)
                    + ", "
                    + order.email
                    + u"). Доставка по адрессу "
                    + order.city
                    + ", "
                    + order.address
                    + u". Способ доставки "
                    + order.delivery_by
                    + u". Содержимое заказа: "
                    + items_str,
                )

                return render_to_response(
                    "candy/order-confirmed.html", {"order": order}, context_instance=RequestContext(request)
                )

    return render_to_response(
        "candy/order.html",
        {
            "order": locals().get("order"),
            "form": locals().get("form"),
            "auth_error": locals().get("auth_error"),
            "total": cart_total(request.session.get("cart") or {}),
            "delivery": DELIVERIES[
                locals().get("order") and order.delivery_by or request.POST.get("delivery_by", "post")
            ],
            "deliveries": DELIVERIES,
            "items": locals().has_key("order")
            and order.items.all()
            or [item for id, item in request.session["cart"].iteritems()],
        },
        context_instance=RequestContext(request),
    )