from django.shortcuts import render, redirect, get_object_or_404 from .models import OrderItem, Order from .forms import OrderCreateForm from cart.cart import Cart from main.views import get_user_id_from_session from users.views import keycloak_login from .utils import send_invoice_via_email def order_create(request): # Проверяем, авторизован ли пользователь user_id = get_user_id_from_session(request) if not user_id: # Если пользователь не авторизован, перенаправляем на авторизацию через Keycloak return keycloak_login(request) cart = Cart(request) if request.method == 'POST': form = OrderCreateForm(request.POST) if form.is_valid(): order = form.save(commit=False) order.user_id = user_id order.save() for item in cart: OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity']) cart.clear() # Генерация и отправка PDF счета-фактуры send_invoice_via_email(order.email, order) 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) return render(request, 'orders/order/created.html', {'order': order})