Files
octopus/myproject/orders/migrations/0002_initial.py
Andrey Smakotin 94fe363cb1 Рефакторинг: отделение 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
2025-12-23 23:52:59 +03:00

281 lines
15 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Generated by Django 5.0.10 on 2025-12-23 20:38
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('customers', '0002_initial'),
('inventory', '0002_initial'),
('orders', '0001_initial'),
('products', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
model_name='historicalorderitem',
name='product',
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='products.product', verbose_name='Товар'),
),
migrations.AddField(
model_name='historicalorderitem',
name='product_kit',
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='products.productkit', verbose_name='Комплект товаров'),
),
migrations.AddField(
model_name='historicalorderitem',
name='showcase',
field=models.ForeignKey(blank=True, db_constraint=False, help_text='Витрина, с которой был продан товар', null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='inventory.showcase', verbose_name='Витрина'),
),
migrations.AddField(
model_name='kititemsnapshot',
name='original_product',
field=models.ForeignKey(blank=True, help_text='Ссылка на товар для резервирования на складе', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='kit_item_snapshots', to='products.product', verbose_name='Оригинальный товар'),
),
migrations.AddField(
model_name='kitsnapshot',
name='original_kit',
field=models.ForeignKey(blank=True, help_text='Ссылка на комплект, с которого создан снимок', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='snapshots', to='products.productkit', verbose_name='Оригинальный комплект'),
),
migrations.AddField(
model_name='kititemsnapshot',
name='kit_snapshot',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='orders.kitsnapshot', verbose_name='Снимок комплекта'),
),
migrations.AddField(
model_name='historicalorderitem',
name='kit_snapshot',
field=models.ForeignKey(blank=True, db_constraint=False, help_text='Хранит состав комплекта на момент оформления заказа', null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='orders.kitsnapshot', verbose_name='Снимок комплекта'),
),
migrations.AddField(
model_name='order',
name='customer',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='orders', to='customers.customer', verbose_name='Клиент'),
),
migrations.AddField(
model_name='order',
name='modified_by',
field=models.ForeignKey(blank=True, help_text='Последний пользователь, изменивший заказ', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='modified_orders', to=settings.AUTH_USER_MODEL, verbose_name='Изменен пользователем'),
),
migrations.AddField(
model_name='historicalorderitem',
name='order',
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='orders.order', verbose_name='Заказ'),
),
migrations.AddField(
model_name='delivery',
name='order',
field=models.OneToOneField(help_text='Заказ, к которому относится доставка', on_delete=django.db.models.deletion.CASCADE, related_name='delivery', to='orders.order', verbose_name='Заказ'),
),
migrations.AddField(
model_name='orderitem',
name='kit_snapshot',
field=models.ForeignKey(blank=True, help_text='Хранит состав комплекта на момент оформления заказа', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='order_items', to='orders.kitsnapshot', verbose_name='Снимок комплекта'),
),
migrations.AddField(
model_name='orderitem',
name='order',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='orders.order', verbose_name='Заказ'),
),
migrations.AddField(
model_name='orderitem',
name='product',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='order_items', to='products.product', verbose_name='Товар'),
),
migrations.AddField(
model_name='orderitem',
name='product_kit',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='order_items', to='products.productkit', verbose_name='Комплект товаров'),
),
migrations.AddField(
model_name='orderitem',
name='showcase',
field=models.ForeignKey(blank=True, help_text='Витрина, с которой был продан товар', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='order_items', to='inventory.showcase', verbose_name='Витрина'),
),
migrations.AddField(
model_name='orderstatus',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_order_statuses', to=settings.AUTH_USER_MODEL, verbose_name='Создано'),
),
migrations.AddField(
model_name='orderstatus',
name='updated_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='updated_order_statuses', to=settings.AUTH_USER_MODEL, verbose_name='Последнее изменение'),
),
migrations.AddField(
model_name='order',
name='status',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='orders', to='orders.orderstatus', verbose_name='Статус заказа'),
),
migrations.AddField(
model_name='historicalorder',
name='status',
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='orders.orderstatus', verbose_name='Статус заказа'),
),
migrations.AddField(
model_name='paymentmethod',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_payment_methods', to=settings.AUTH_USER_MODEL, verbose_name='Создано'),
),
migrations.AddIndex(
model_name='recipient',
index=models.Index(fields=['phone'], name='orders_reci_phone_735356_idx'),
),
migrations.AddIndex(
model_name='recipient',
index=models.Index(fields=['name'], name='orders_reci_name_e52d5b_idx'),
),
migrations.AddIndex(
model_name='recipient',
index=models.Index(fields=['created_at'], name='orders_reci_created_34a391_idx'),
),
migrations.AddField(
model_name='order',
name='recipient',
field=models.ForeignKey(blank=True, help_text='Заполняется, если покупатель не является получателем', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='orders', to='orders.recipient', verbose_name='Получатель'),
),
migrations.AddField(
model_name='historicalorder',
name='recipient',
field=models.ForeignKey(blank=True, db_constraint=False, help_text='Заполняется, если покупатель не является получателем', null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='orders.recipient', verbose_name='Получатель'),
),
migrations.AddField(
model_name='transaction',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='transactions_created', to=settings.AUTH_USER_MODEL, verbose_name='Создал'),
),
migrations.AddField(
model_name='transaction',
name='order',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transactions', to='orders.order', verbose_name='Заказ'),
),
migrations.AddField(
model_name='transaction',
name='payment_method',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='transactions', to='orders.paymentmethod', verbose_name='Способ оплаты/возврата'),
),
migrations.AddField(
model_name='transaction',
name='related_payment',
field=models.ForeignKey(blank=True, help_text='Для возвратов - на какой платёж ссылается этот возврат', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='refunds', to='orders.transaction', verbose_name='Связанный платёж'),
),
migrations.AddIndex(
model_name='kitsnapshot',
index=models.Index(fields=['original_kit'], name='orders_kits_origina_f8d311_idx'),
),
migrations.AddIndex(
model_name='kitsnapshot',
index=models.Index(fields=['created_at'], name='orders_kits_created_70de88_idx'),
),
migrations.AddIndex(
model_name='kititemsnapshot',
index=models.Index(fields=['kit_snapshot'], name='orders_kiti_kit_sna_bf307e_idx'),
),
migrations.AddIndex(
model_name='delivery',
index=models.Index(fields=['delivery_type'], name='orders_deli_deliver_ac3dc8_idx'),
),
migrations.AddIndex(
model_name='delivery',
index=models.Index(fields=['created_at'], name='orders_deli_created_1a3ff3_idx'),
),
migrations.AddIndex(
model_name='delivery',
index=models.Index(fields=['delivery_date'], name='orders_deli_deliver_e898e4_idx'),
),
migrations.AddIndex(
model_name='delivery',
index=models.Index(fields=['time_from'], name='orders_deli_time_fr_916f57_idx'),
),
migrations.AddIndex(
model_name='delivery',
index=models.Index(fields=['time_to'], name='orders_deli_time_to_7f2573_idx'),
),
migrations.AddIndex(
model_name='orderitem',
index=models.Index(fields=['order'], name='orders_orde_order_i_5d347b_idx'),
),
migrations.AddIndex(
model_name='orderitem',
index=models.Index(fields=['product'], name='orders_orde_product_32ff41_idx'),
),
migrations.AddIndex(
model_name='orderitem',
index=models.Index(fields=['product_kit'], name='orders_orde_product_925b51_idx'),
),
migrations.AddIndex(
model_name='orderitem',
index=models.Index(fields=['is_from_showcase'], name='orders_orde_is_from_32d8f7_idx'),
),
migrations.AddIndex(
model_name='orderitem',
index=models.Index(fields=['showcase'], name='orders_orde_showcas_aa97bd_idx'),
),
migrations.AddIndex(
model_name='orderstatus',
index=models.Index(fields=['code'], name='orders_orde_code_5e1ef7_idx'),
),
migrations.AddIndex(
model_name='orderstatus',
index=models.Index(fields=['is_system'], name='orders_orde_is_syst_2f5b85_idx'),
),
migrations.AddIndex(
model_name='orderstatus',
index=models.Index(fields=['order'], name='orders_orde_order_2e2930_idx'),
),
migrations.AddIndex(
model_name='paymentmethod',
index=models.Index(fields=['code'], name='orders_paym_code_f40d7e_idx'),
),
migrations.AddIndex(
model_name='paymentmethod',
index=models.Index(fields=['is_active'], name='orders_paym_is_acti_e2be69_idx'),
),
migrations.AddIndex(
model_name='paymentmethod',
index=models.Index(fields=['order'], name='orders_paym_order_94e282_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['customer'], name='orders_orde_custome_59b6fb_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['status'], name='orders_orde_status__eb4f00_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['payment_status'], name='orders_orde_payment_bc131d_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['created_at'], name='orders_orde_created_0e92de_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['order_number'], name='orders_orde_order_n_f3ada5_idx'),
),
migrations.AddIndex(
model_name='transaction',
index=models.Index(fields=['order', '-transaction_date'], name='orders_tran_order_i_dc90ee_idx'),
),
migrations.AddIndex(
model_name='transaction',
index=models.Index(fields=['transaction_type'], name='orders_tran_transac_3d971d_idx'),
),
migrations.AddIndex(
model_name='transaction',
index=models.Index(fields=['payment_method'], name='orders_tran_payment_7e354c_idx'),
),
migrations.AddIndex(
model_name='transaction',
index=models.Index(fields=['transaction_date'], name='orders_tran_transac_1bae48_idx'),
),
]