Exemplo n.º 1
0
def create_order(request):
    if request.POST:
        post = request.POST.copy()
        order_num = request.session.get('order_num', None)
        if order_num:  # если есть номер заказа в сессии
            order_obj = get_order(request, draft=True)  # получаем черновой заказ
            post.update({
                'number': order_obj.number,
                'status': 'waiting_for_payment' if post.get('payment_type') == 'online' else 'waiting_to_be_sent'
            })
            order_form = OrderForm(data=post)
            print  order_form.initial
            if order_form.is_valid():
                _order_new = order_form.save()
                for magnet in order_obj.magnets.all():
                    _order_new.magnets.add(magnet)
                order_obj.delete()
                request.session['order_num'] = None
            else:
                return HttpResponse(content=simplejson.dumps(list(order_form.errors.viewitems())),
                                    mimetype='application/json')
            resp = {'redirect_to': reverse('get_order', kwargs={'order_num': order_num})}
            return HttpResponse(simplejson.dumps(resp), mimetype='application/json')
        else:
            return redirect(reverse('main_page'))
    else:
        raise Http404
Exemplo n.º 2
0
def order(request, order_num=None):
    """

    """
    custom_context = {'editable': False, 'uc_form': MagnetForm()}
    if order_num is not None:
        custom_context.update({'order_num': order_num})
        order_obj = get_object_or_404(Order, number=order_num)
        if order_obj.status == 'new':
            raise Http404
        custom_context['pay_form'] = RobokassaForm(initial={
               'OutSum': order_obj.get_total_sum_with_delivery(),
               'InvId': order_obj.pk,
               'Desc': order_obj.fio,
               'Email': order_obj.email,
               #'IncCurrLabel': 'UAH',
               'Culture': 'ru'
           })
    else:
        custom_context['editable'] = True
        order_obj = get_order(request, draft=True)
    form = OrderForm(instance=order_obj)
    custom_context.update({'order': order_obj})
    custom_context.update({'form': form})
    return render(request, 'order.html', custom_context)
Exemplo n.º 3
0
def save(request):
    if request.POST and request.is_ajax():
        magnet = Magnet()
        magnet.image = request.POST.get('previewUrl', '')
        magnet.save()
        order = get_order(request, draft=True)
        order.save()
        order.magnets.add(magnet)
        data = serializers.serialize("json", [order])
        return HttpResponse(content=data, content_type='application/json')
    return HttpResponse('access denied!')
Exemplo n.º 4
0
def order_handle():
    order_no = request.args.get('order_no')
    status = request.args.get('status', 1, int)
    if status in [2, 3, 4, 5] and order_no:
        # 现阶段不进行处理,后面可以扩展推送消息等功能
        order = get_order(order_no)
        return render_template('admin/order_details.html', order=order)
    msg = {}
    try:
        order_handle_model(order_no, status, msg)
    except Exception as e:
        logging.exception('order_admin order_handle [Exception]:%s', e)
    if msg:
        return msg
    return redirect(request.referrer)
Exemplo n.º 5
0
def payment_fail(request):
    data = request.POST if USE_POST else request.GET
    form = FailRedirectForm(data)
    messages.error(request, 'При оплате произошла ошибка')
    if form.is_valid():
        order_id, order_sum = form.cleaned_data['InvId'], form.cleaned_data['OutSum']

        # дополнительные действия с заказом (например, смену его статуса для
        # разблокировки товара на складе) можно осуществить в обработчике
        # сигнала robokassa.signals.fail_page_visited
        fail_page_visited.send(sender = form, InvId = order_id, OutSum = order_sum,
                               extra = form.extra_params())

        order_obj = get_object_or_404(Order, pk=order_id)
        return redirect(to=reverse('get_order', kwargs={'order_num': order_obj.number}))
    order_obj = get_order(request, False)
    return redirect(to=reverse('get_order', kwargs={'order_num': order_obj.number}))
Exemplo n.º 6
0
def payment_success(request):
    data = request.POST if USE_POST else request.GET
    form = SuccessRedirectForm(data)
    #context = {'InvId': data.get('InvId'), 'OutSum': data.get('OutSum'), 'form': form}
    #return render(request, template_name, context)
    if form.is_valid():
        order_id, order_sum = form.cleaned_data['InvId'], form.cleaned_data['OutSum']

        # в случае, когда не используется строгая проверка, действия с заказом
        # можно осуществлять в обработчике сигнала robokassa.signals.success_page_visited
        success_page_visited.send(sender = form, InvId = order_id, OutSum = order_sum,
                                  extra = form.extra_params())

        messages.success(request, 'Оплата прошла успешно')
        # context = {'InvId': order_id, 'OutSum': order_sum, 'form': form}
        # context.update(form.extra_params())
        # context.update(extra_context or {})
        #return render(request, template_name, context)
        order_obj = get_object_or_404(Order, pk=order_id)
        return redirect(to=reverse('get_order', kwargs={'order_num': order_obj.number}))

    messages.error(request, 'При оплате произошла ошибка')
    order_obj = get_order(request)
    return redirect(to=reverse('get_order', kwargs={'order_num': order_obj.number}))
Exemplo n.º 7
0
 def render(self, context, instance, placeholder):
     request = context['request']
     context['order'] = get_order(request)
     return context