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
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)
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!')
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)
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}))
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}))
def render(self, context, instance, placeholder): request = context['request'] context['order'] = get_order(request) return context