Рефакторинг моделей заказов и добавление методов оплаты
This commit is contained in:
@@ -8,7 +8,7 @@ from django.contrib.auth.decorators import login_required
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
from .models import Order, OrderItem, Address, OrderStatus
|
||||
from .forms import OrderForm, OrderItemFormSet, OrderStatusForm
|
||||
from .forms import OrderForm, OrderItemFormSet, OrderStatusForm, PaymentFormSet
|
||||
from .filters import OrderFilter
|
||||
from .services import DraftOrderService
|
||||
from .services.address_service import AddressService
|
||||
@@ -65,8 +65,9 @@ def order_create(request):
|
||||
if request.method == 'POST':
|
||||
form = OrderForm(request.POST)
|
||||
formset = OrderItemFormSet(request.POST)
|
||||
payment_formset = PaymentFormSet(request.POST)
|
||||
|
||||
if form.is_valid() and formset.is_valid():
|
||||
if form.is_valid() and formset.is_valid() and payment_formset.is_valid():
|
||||
order = form.save(commit=False)
|
||||
|
||||
# Обрабатываем адрес доставки
|
||||
@@ -90,6 +91,10 @@ def order_create(request):
|
||||
formset.instance = order
|
||||
formset.save()
|
||||
|
||||
# Сохраняем платежи
|
||||
payment_formset.instance = order
|
||||
payment_formset.save()
|
||||
|
||||
# Пересчитываем итоговую сумму
|
||||
order.calculate_total()
|
||||
order.save()
|
||||
@@ -104,10 +109,12 @@ def order_create(request):
|
||||
else:
|
||||
form = OrderForm()
|
||||
formset = OrderItemFormSet()
|
||||
payment_formset = PaymentFormSet()
|
||||
|
||||
context = {
|
||||
'form': form,
|
||||
'formset': formset,
|
||||
'payment_formset': payment_formset,
|
||||
'title': 'Создание заказа',
|
||||
'button_text': 'Создать заказ',
|
||||
}
|
||||
@@ -122,8 +129,9 @@ def order_update(request, pk):
|
||||
if request.method == 'POST':
|
||||
form = OrderForm(request.POST, instance=order)
|
||||
formset = OrderItemFormSet(request.POST, instance=order)
|
||||
payment_formset = PaymentFormSet(request.POST, instance=order)
|
||||
|
||||
if form.is_valid() and formset.is_valid():
|
||||
if form.is_valid() and formset.is_valid() and payment_formset.is_valid():
|
||||
order = form.save(commit=False)
|
||||
|
||||
# Если черновик финализируется
|
||||
@@ -136,6 +144,7 @@ def order_update(request, pk):
|
||||
messages.error(request, f'Ошибка финализации: {str(e)}')
|
||||
form = OrderForm(instance=order)
|
||||
formset = OrderItemFormSet(instance=order)
|
||||
payment_formset = PaymentFormSet(instance=order)
|
||||
else:
|
||||
# Обрабатываем адрес доставки
|
||||
if order.is_delivery:
|
||||
@@ -166,6 +175,9 @@ def order_update(request, pk):
|
||||
order.save()
|
||||
formset.save()
|
||||
|
||||
# Сохраняем платежи
|
||||
payment_formset.save()
|
||||
|
||||
# Пересчитываем итоговую сумму
|
||||
order.calculate_total()
|
||||
order.save()
|
||||
@@ -180,10 +192,12 @@ def order_update(request, pk):
|
||||
else:
|
||||
form = OrderForm(instance=order)
|
||||
formset = OrderItemFormSet(instance=order)
|
||||
payment_formset = PaymentFormSet(instance=order)
|
||||
|
||||
context = {
|
||||
'form': form,
|
||||
'formset': formset,
|
||||
'payment_formset': payment_formset,
|
||||
'order': order,
|
||||
'title': f'Редактирование {"черновика" if order.is_draft() else "заказа"} #{order.order_number}',
|
||||
'button_text': 'Сохранить изменения',
|
||||
|
||||
Reference in New Issue
Block a user