Ejemplo n.º 1
0
def complete(request, cart, order):
    # cart = get_or_create_cart(request)
    # order = get_or_create_order(cart, request)

    if request.user.id != order.user_id:
        return redirect('carts:cart')

    charge = Charge.objects.create_charge(order)
    if charge:
        with transaction.atomic():
            '''Ejecutando un with con atomic(), ejecutará como una transacción,
            o se ejecuta todo, o no se ejecutará nada...'''
            order.complete()

            # Envíar correo de forma asíncrona
            thread = threading.Thread(target=Mail.send_complete_order,
                                      args=(order, request.user))
            thread.start()

            # Mail.send_complete_order(order, request.user)

            destroy_cart(request)
            destroy_order(request)

            messages.success(request, 'Compra completada exitosamente')

    return redirect('forms:index')
Ejemplo n.º 2
0
def cancel(request, cart, order):
    if request.user.id != order.user_id:
        return redirect('carts:cart')
    order.cancel()
    destroy_cart(request)
    destroy_order(request)
    messages.error(request, 'Orden cancelada')
    return redirect('index')
Ejemplo n.º 3
0
def cancel(request, cart, order):
    order.cancel()
    cart.close()

    destroy_cart(request)
    destroy_order(request)

    messages.error(request, 'Orden cancelada')
    return redirect('carts:cart')
Ejemplo n.º 4
0
def cancel(request):
    cart = get_or_create_cart(request)
    order = get_or_create_order(cart, request)
    if request.user.id != order.user_id:
        return redirect('carts:cart')
    order.cancel()
    destroy_cart(request)
    destroy_order(request)
    messages.error(request, 'Orden Cancelada')
    return redirect('index')
Ejemplo n.º 5
0
def complete(request):
    cart = get_or_create_cart(request)
    order = get_or_create_order(cart, request)
    if request.user.id != order.user_id:
        return redirect('carts:cart')
    order.complete()
    Mail.send_complete_order(order, request.user)
    destroy_cart(request)
    destroy_order(request)
    messages.success(request, 'Compra completada exitosamente')
    return redirect('index')
Ejemplo n.º 6
0
def complete(request, cart, order):
    if request.user.id != order.user_id:
        return redirect('carts:cart')
    order.complete()
    thread = threading.Thread(target=Mail.send_complete_order,
                              args=(cart, order, request.user))
    thread.start()
    destroy_cart(request)
    destroy_order(request)
    messages.success(request, 'Compra completada exitosamente')
    return redirect('index')
Ejemplo n.º 7
0
def cancel(request, cart, order):

    if request.user.id != order.user_id:
        return redirect("carts:cart")

    order.cancel()

    destroy_cart(request)
    destroy_order(request)

    messages.error(request, "ordern cancelada")
    return redirect("index")
Ejemplo n.º 8
0
def complete(request, cart, order):
    charge = Charge.create_charge_by_order(order)
    if charge:
        with transaction.atomic():
            cart.complete()
            order.complete()
            Mail.send_complete_order_mail(order, request.user)

            destroy_cart(request)
            destroy_order(request)

    messages.success(request, 'Compra completada exitosamente.')
    return redirect('carts:cart')
Ejemplo n.º 9
0
def cancel(request, cart, order):
    #Función para poder cancelar una orden.

    if request.user.id != order.user_id:
        return redirect('carts:cart')

    order.cancel()

    destroy_cart(request)
    destroy_order(request)

    messages.error(request, 'Order canceled')
    return redirect('index')
Ejemplo n.º 10
0
def cancel(request):
    cart = get_or_create_cart(request)
    order = get_or_create_order(cart, request)

    if request.user.id != order.user_id:
        return redirect('carts:cart')

    order.cancel()

    destroy_cart(request)
    destroy_order(request)

    return redirect ('product')
Ejemplo n.º 11
0
def cancel(request, cart, order):
    # cart = get_or_create_cart(request)
    # order = get_or_create_order(cart, request)

    if request.user.id != order.user_id:
        return redirect('carts:cart')

    order.cancel()

    destroy_cart(request)
    destroy_order(request)

    messages.error(request, 'Pedido cancelado')
    return redirect('forms:index')
Ejemplo n.º 12
0
def complete(request, cart, order):
    if charge:
        order.complete()

        thread = threading.Thread(target=Mail.send_complete_order,
                                  args=(order, request.user))
        thread.start()

        destroy_cart(request)
        destroy_order(request)

        messages.success(request, 'Compra Completada Exitosamente')

    return redirect('index')
Ejemplo n.º 13
0
def cancel(request, cart, order):
  if request.user.id != order.user_id: # Si no es el mismo usuario quien creo la orden y quien la quiere cancelar.
    return redirect('carts:cart') # Retorna 'http://127.0.0.1:8000/carrito/'
  
  # Este metodo se crea en 'orders/models'
  order.cancel()  # Modifica su estatus a CANCELLED

  # Destruir sessiones del carrito de compra y orden
  # carts/utils.py
  destroy_cart(request) # Elimina la sessión cart
  # orders/utils.py   funciones
  destroy_order(request)  # Eliminar la sessión order

  messages.error(request, 'Orden cancelada')
  return redirect('index')
Ejemplo n.º 14
0
def complete(request, cart, order):

    if request.user.id != order.user_id:
        return redirect("carts:cart")

    charge = Charge.objects.create_charge(order)
    if charge:
        order.complete()
        thread = threading.Thread(
            target=Mail.send_complete_order, args=(order, request.user)
        )  #target = metodo que se va ejecutar en segundo plano, args = argumentos del metodo
        thread.start()  #iniciar el thread
        destroy_cart(request)
        destroy_order(request)

        messages.success(request, "compra completada exitosamente")

    return redirect("index")
Ejemplo n.º 15
0
def complete(request, cart, order):

  if request.user.id != order.user_id: # Si no es el mismo usuario quien creo la orden y quien la quiere cancelar.
    return redirect('carts:cart') # Retorna 'http://127.0.0.1:8000/carrito/'
  
  # Este metodo se crea en 'orders/models'
  order.complete()  # Modifica su estatus a COMPLETE

  thread = threading.Thread(target=Mail.send_complete_order, args=(
    order, request.user
  )) #En target se indica el motodo o función que queremos ejecutar en segundo plano
  thread.start()

  destroy_cart(request) # Elimina la sessión cart
  destroy_order(request)  # Eliminar la sessión order

  messages.success(request, 'Compra completada exitosamente')
  return redirect('index')
Ejemplo n.º 16
0
def complete(request, cart, order):
    if request.user.id != order.user_id:
        return redirect('carts:cart')

    charge = Charge.objects.create_charge(order)
    if charge:
        with transaction.atomic():
            order.complete()
            thread = threading.Thread(target=Mail.send_complete_order,
                                      args=(order, request.user))
            thread.start()

            destroy_cart(request)
            destroy_order(request)

            messages.success(request, 'Compra completada exitosamente')

    return redirect('index')
Ejemplo n.º 17
0
def complete(request, cart, order):
    #Función para poder completar una orden.
    if request.user.id != order.user_id:
        return redirect('carts:cart')    

    charge = Charge.objects.create_charge(order)
    if charge:
        with transaction.atomic():
            order.complete()

            thread = threading.Thread(target=Mail.send_complete_order, args=(
                order, request.user
            ))
            thread.start()

            destroy_cart(request)
            destroy_order(request)

            messages.success(request, 'Order completed successfully')
    return redirect('index')