コード例 #1
0
    def get(self, request, *args, **kwargs):
        carrito = get_create_carrito(request)
        orden = get_or_create_orden(carrito, request)
        tarjeta = orden.metodo_pago
        metodo_pago = Tarjeta.objects.get(pk=tarjeta.pk)
        metodo_pago.actualizar_saldo(-orden.get_total())
        libros = carrito.libros_relacionados()

        if request.user.id != orden.usuario_id:
            return redirect('carrito:miCarrito')

        for item in libros:
            libro = Libro.objects.get(pk=item.libro.pk)
            libro.actualizar_existencias(-item.cantidad)

        orden.completar()

        hilo = threading.Thread(target=Mail.send_orden_completada,
                                args=(orden, request.user))

        hilo.start()

        destruir_carrito(request)
        destruir_orden(request)

        messages.success(request, 'Orden de compra completada exitosamente...')
        return redirect('inicio')
コード例 #2
0
    def get(self, request, *args, **kwargs):
        carrito = get_create_carrito(request)
        orden = get_or_create_orden(carrito, request)

        direccionEnvio = orden.direccion_envio
        if direccionEnvio is None:
            return redirect('ordenes:direccion ')

        tarjeta = orden.metodo_pago
        if tarjeta is None:
            return redirect('ordenes:pago ')
        saldo = tarjeta.saldo.compare(orden.get_total())
        if saldo.is_signed():
            messages.error(
                request,
                'Saldo insuficiente en metodo de pago seleccionado...')
            return redirect('ordenes:pago')

        context = {
            'carrito': carrito,
            'orden': orden,
            'direccion': direccionEnvio,
            'tarjeta': tarjeta,
            'breadcrumb': breadcrumb(direccion=True,
                                     pago=True,
                                     confirmacion=True),
        }

        return render(request, self.template_name, context)
コード例 #3
0
ファイル: views.py プロジェクト: ZeldrisG/LUMAYO
    def next(self):
        if self.request.GET['next'] == reverse('ordenes:direccion'):
            carrito = get_create_carrito(self.request)
            orden = get_or_create_orden(carrito, self.request)

            orden.update_direccion_envio(self.object)
            self.success_url = reverse_lazy('ordenes:direccion')
コード例 #4
0
ファイル: views.py プロジェクト: erivera23/market
def create(request):
    form = DireccionForm(request.POST or None)

    if request.method == 'POST' and form.is_valid():
        direccion = form.save(commit=False)
        direccion.user = request.user
        direccion.default = not request.user.has_direccion_envio()

        direccion.save()

        if request.GET.get('next'):
            if request.GET['next'] == reverse('ordenes:address'):
                carrito = get_or_create_carrito(request)
                orden = get_or_create_orden(carrito, request)
                orden.update_direccion_envio(direccion)

                return HttpResponseRedirect(request.GET['next'])
                
        messages.success(request, 'Dirección creada exitosamente')

        return redirect('direcciones_envio:direcciones')

    return render(request, 'direcciones_envio/create.html', {
        'form': form
    })
コード例 #5
0
 def get(self, request, *args, **kwargs):
     carrito = get_create_carrito(request)
     orden = get_or_create_orden(carrito, request)
     context = {
         'carrito': carrito,
         'orden': orden,
         'breadcrumb': breadcrumb()
     }
     return render(request, self.template_name, context)
コード例 #6
0
    def get(self, request, *args, **kwargs):
        carrito = get_create_carrito(request)
        orden = get_or_create_orden(carrito, request)
        direccionEnvio = get_object_or_404(DireccionEnvio, pk=kwargs['pk'])

        if request.user.id != direccionEnvio.usuario_id:
            return redirect('carrito:miCarrito')

        orden.update_direccion_envio(direccionEnvio)
        return redirect('ordenes:direccion')
コード例 #7
0
    def get(self, request, *args, **kwargs):
        carrito = get_create_carrito(request)
        orden = get_or_create_orden(carrito, request)
        tarjeta = get_object_or_404(Tarjeta, pk=kwargs['pk'])

        if request.user.id != tarjeta.usuario_id:
            return redirect('carrito:miCarrito')

        orden.update_metodo_pago(tarjeta)
        return redirect('ordenes:pago')
コード例 #8
0
 def get(self, request, *args, **kwargs):
     carrito = get_create_carrito(request)
     orden = get_or_create_orden(carrito, request)
     direccion = orden.get_or_set_direccion_envio()
     puede_elegir_direccion = DireccionEnvio.objects.filter(
         usuario=self.request.user).count() > 1
     context = {
         'carrito': carrito,
         'orden': orden,
         'breadcrumb': breadcrumb(direccion=True),
         'direccion': direccion,
         'puede_elegir_direccion': puede_elegir_direccion
     }
     return render(request, self.template_name, context)
コード例 #9
0
    def get(self, request, *args, **kwargs):
        carrito = get_create_carrito(request)
        orden = get_or_create_orden(carrito, request)

        if request.user.id != orden.usuario_id:
            return redirect('carrito:miCarrito')

        orden.cancelar()

        destruir_carrito(request)
        destruir_orden(request)

        messages.error(request, 'Orden de compra cancelada...')
        return redirect('inicio')
コード例 #10
0
def validate(request):
    carrito = get_or_create_carrito(request)
    orden = get_or_create_orden(carrito, request)

    codigo = request.GET.get('code')
    promo = CodigoPromocional.objects.get_valid(codigo)

    if promo is None:
        return JsonResponse({
            'status': False
        }, status=404)
    orden.aplicar_codigo_promocion(promo)

    return JsonResponse({
        'status': True,
        'codigo': promo.codigo,
        'descuento': promo.descuento,
        'total': orden.total
    })
コード例 #11
0
    def get(self, request, *args, **kwargs):
        carrito = get_create_carrito(request)
        orden = get_or_create_orden(carrito, request)
        metodo_pago = orden.get_or_set_metodo_pago()
        puede_elegir_tarjeta = Tarjeta.objects.filter(
            usuario=self.request.user).count() > 1
        direccionEnvio = orden.direccion_envio
        if direccionEnvio is None:
            return redirect('ordenes:direccion ')

        context = {
            'carrito': carrito,
            'orden': orden,
            'direccion': direccionEnvio,
            'tarjeta': metodo_pago,
            'breadcrumb': breadcrumb(direccion=True, pago=True),
            'puede_elegir_tarjeta': puede_elegir_tarjeta
        }

        return render(request, self.template_name, context)
コード例 #12
0
ファイル: views.py プロジェクト: erivera23/market
def complete(request, carrito, orden):
    carrito = get_or_create_carrito(request)
    orden = get_or_create_orden(carrito, request)

    if request.user.id != orden.user_id:
        return redirect('carritos:carrito')
    
    cargo = Cargo.objects.create_cargo(orden)
    if cargo:
        with transaction.atomic():
            orden.complete()

            thread = threading.Thread(target=Mail.send_complete_orden, args=(
                orden, request.user
            ))
            thread.start()
            
            destruir_carrito(request)
            destruir_orden(request)

            messages.success(request, 'Compra completada exitosamente')
    return redirect('index')
コード例 #13
0
ファイル: decorators.py プロジェクト: ZeldrisG/LUMAYO
 def wrap(request, *args, **kwargs):
     carrito = get_create_carrito(request)
     orden = get_or_create_orden(carrito, request)
     return fuction(request, carrito, orden, *args, **kwargs)