Рефакторинг: отделение Delivery от Order, обязательные поля доставки, исправление доменов
- Отделена модель Delivery от Order (OneToOne связь) - Добавлены обязательные поля delivery_date, time_from, time_to в Delivery - Delivery обязательна при создании заказа (кроме черновиков) - Добавлены методы calculate_total() и reset_delivery_cost() в Order - Добавлена валидация полей доставки в OrderForm - Исправлено создание доменов - убран порт из домена в БД - Исправлен редирект после установки пароля (правильный формат URL) - Исправлена ошибка NoReverseMatch в navbar для public схемы - Удалены все старые миграции (база создается с нуля) - Обновлены views для работы с новой моделью Delivery
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django.contrib import admin
|
||||
from django.utils.html import format_html
|
||||
from .models import Order, OrderItem, Transaction, PaymentMethod, Address, OrderStatus, Recipient
|
||||
from .models import Order, OrderItem, Transaction, PaymentMethod, Address, OrderStatus, Recipient, Delivery
|
||||
|
||||
|
||||
class TransactionInline(admin.TabularInline):
|
||||
@@ -31,6 +31,18 @@ class OrderItemInline(admin.TabularInline):
|
||||
return []
|
||||
|
||||
|
||||
class DeliveryInline(admin.StackedInline):
|
||||
"""
|
||||
Inline для управления доставкой заказа.
|
||||
"""
|
||||
model = Delivery
|
||||
extra = 0
|
||||
max_num = 1
|
||||
fields = ['delivery_type', 'address', 'pickup_warehouse', 'cost']
|
||||
verbose_name = 'Доставка'
|
||||
verbose_name_plural = 'Доставка'
|
||||
|
||||
|
||||
@admin.register(Order)
|
||||
class OrderAdmin(admin.ModelAdmin):
|
||||
"""
|
||||
@@ -39,8 +51,6 @@ class OrderAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
'order_number',
|
||||
'customer',
|
||||
'is_delivery',
|
||||
'delivery_date',
|
||||
'status',
|
||||
'total_amount',
|
||||
'payment_status',
|
||||
@@ -50,9 +60,7 @@ class OrderAdmin(admin.ModelAdmin):
|
||||
|
||||
list_filter = [
|
||||
'status',
|
||||
'is_delivery',
|
||||
'payment_status',
|
||||
'delivery_date',
|
||||
'created_at',
|
||||
]
|
||||
|
||||
@@ -62,15 +70,12 @@ class OrderAdmin(admin.ModelAdmin):
|
||||
'customer__phone',
|
||||
'customer__email',
|
||||
'recipient__name',
|
||||
'delivery_address__street',
|
||||
]
|
||||
|
||||
readonly_fields = [
|
||||
'order_number',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'delivery_info',
|
||||
'delivery_time_window',
|
||||
'amount_due',
|
||||
'payment_status',
|
||||
]
|
||||
@@ -79,18 +84,10 @@ class OrderAdmin(admin.ModelAdmin):
|
||||
('Основная информация', {
|
||||
'fields': ('order_number', 'customer', 'status')
|
||||
}),
|
||||
('Доставка', {
|
||||
('Получатель', {
|
||||
'fields': (
|
||||
'is_delivery',
|
||||
'customer_is_recipient',
|
||||
'delivery_address',
|
||||
'pickup_warehouse',
|
||||
'delivery_date',
|
||||
'delivery_time_start',
|
||||
'delivery_time_end',
|
||||
'delivery_cost',
|
||||
'delivery_info',
|
||||
'delivery_time_window',
|
||||
'recipient',
|
||||
)
|
||||
}),
|
||||
('Оплата', {
|
||||
@@ -111,7 +108,7 @@ class OrderAdmin(admin.ModelAdmin):
|
||||
}),
|
||||
)
|
||||
|
||||
inlines = [OrderItemInline, TransactionInline]
|
||||
inlines = [OrderItemInline, DeliveryInline, TransactionInline]
|
||||
|
||||
actions = [
|
||||
'mark_as_confirmed',
|
||||
|
||||
Reference in New Issue
Block a user