Harmony/orders/views.py

41 lines
1.5 KiB
Python
Raw Normal View History

2024-02-19 05:43:38 +00:00
from django.shortcuts import render, redirect, get_object_or_404
from .models import OrderItem, Order
from .forms import OrderCreateForm
from cart.cart import Cart
2024-03-20 10:19:34 +00:00
from main.views import get_user_id_from_session
from users.views import keycloak_login
2024-02-19 05:43:38 +00:00
from .utils import send_invoice_via_email
def order_create(request):
2024-03-20 10:19:34 +00:00
# Проверяем, авторизован ли пользователь
user_id = get_user_id_from_session(request)
if not user_id:
# Если пользователь не авторизован, перенаправляем на авторизацию через Keycloak
return keycloak_login(request)
2024-02-19 05:43:38 +00:00
cart = Cart(request)
if request.method == 'POST':
form = OrderCreateForm(request.POST)
if form.is_valid():
2024-03-20 10:19:34 +00:00
order = form.save(commit=False)
order.user_id = user_id
2024-02-19 05:43:38 +00:00
order.save()
for item in cart:
OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity'])
cart.clear()
# Генерация и отправка PDF счета-фактуры
2024-03-20 10:19:34 +00:00
send_invoice_via_email(order.email, order)
2024-02-19 05:43:38 +00:00
return redirect('orders:order_created', order_id=order.id)
else:
form = OrderCreateForm()
return render(request, 'orders/order/create.html', {'cart': cart, 'form': form})
def order_created(request, order_id):
order = get_object_or_404(Order, id=order_id)
2024-02-24 06:59:47 +00:00
return render(request, 'orders/order/created.html', {'order': order})