Рефакторинг: отделение 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:
@@ -213,7 +213,37 @@ def password_setup_confirm(request, token):
|
||||
)
|
||||
|
||||
# Перенаправить на домен тенанта
|
||||
tenant_url = f'http://{tenant.schema_name}.localhost:8000/'
|
||||
# Получаем домен из базы (без порта, порт добавляется в URL только для localhost)
|
||||
from tenants.models import Domain
|
||||
from django.conf import settings
|
||||
connection.set_schema_to_public()
|
||||
try:
|
||||
domain_obj = Domain.objects.filter(tenant=tenant, is_primary=True).first()
|
||||
if domain_obj:
|
||||
domain_name = domain_obj.domain
|
||||
# Убираем порт из домена если он есть (для совместимости со старыми записями)
|
||||
if ':' in domain_name:
|
||||
domain_name = domain_name.split(':')[0]
|
||||
else:
|
||||
# Fallback если домен не найден
|
||||
domain_base = settings.TENANT_DOMAIN_BASE
|
||||
if ':' in domain_base:
|
||||
domain_base = domain_base.split(':')[0]
|
||||
domain_name = f"{tenant.schema_name}.{domain_base}"
|
||||
except:
|
||||
domain_base = settings.TENANT_DOMAIN_BASE
|
||||
if ':' in domain_base:
|
||||
domain_base = domain_base.split(':')[0]
|
||||
domain_name = f"{tenant.schema_name}.{domain_base}"
|
||||
|
||||
# Формируем URL с правильным протоколом и портом
|
||||
protocol = 'https' if settings.USE_HTTPS else 'http'
|
||||
# Добавляем порт только для localhost
|
||||
if 'localhost' in domain_name:
|
||||
tenant_url = f'{protocol}://{domain_name}:8000/'
|
||||
else:
|
||||
tenant_url = f'{protocol}://{domain_name}/'
|
||||
|
||||
return redirect(tenant_url)
|
||||
else:
|
||||
messages.error(request, 'Пароли не совпадают.')
|
||||
|
||||
Reference in New Issue
Block a user