refactor(db): консолидация миграций и рефакторинг кода

Объединены изменения из промежуточных миграций в начальные миграции для упрощения истории базы данных.
Удалены миграции: accounts/0002, discounts/0002, orders/0003-0004, products/0002-0005, user_roles/0002, system_settings/0001-0002, integrations/0001-0002.
Добавлена автоматическая creation пользователя при установке пароля.
Обновлен UI страницы установки пароля с кастомным стилем.
Добавлен conditional rendering для кнопки синхронизации Recommerce.
Исправлены редиректы с 'index' на '/' в accounts views.
Добавлена проверка request.tenant в navbar и authenticate метод в auth backend.
This commit is contained in:
2026-01-14 16:30:28 +03:00
parent e7672588c6
commit caeb3f80bd
31 changed files with 238 additions and 558 deletions

View File

@@ -61,7 +61,7 @@ def login_view(request):
def logout_view(request):
logout(request)
return redirect('index')
return redirect('/')
@login_required
@@ -142,7 +142,7 @@ def password_reset_confirm(request, token):
user = CustomUser.objects.get(password_reset_token=token)
except CustomUser.DoesNotExist:
messages.error(request, 'Ссылка для восстановления пароля недействительна.')
return redirect('index')
return redirect('/')
if request.method == 'POST':
password1 = request.POST.get('password1')
@@ -178,7 +178,7 @@ def password_setup_confirm(request, token):
)
except TenantRegistration.DoesNotExist:
messages.error(request, 'Ссылка для настройки пароля недействительна.')
return redirect('index')
return redirect('/')
# Проверить истечение токена (7 дней)
if registration.password_setup_token_created_at:
@@ -188,24 +188,30 @@ def password_setup_confirm(request, token):
request,
'Ссылка для настройки пароля истекла. Пожалуйста, свяжитесь с поддержкой.'
)
return redirect('index')
return redirect('/')
# Получить тенант и пользователя-владельца
from django.db import connection
tenant = registration.tenant
if not tenant:
messages.error(request, 'Тенант не найден.')
return redirect('index')
return redirect('/')
# Переключиться на схему тенанта чтобы найти владельца
connection.set_tenant(tenant)
User = get_user_model()
try:
owner = User.objects.get(email=registration.owner_email)
except User.DoesNotExist:
connection.set_schema_to_public()
messages.error(request, 'Пользователь не найден.')
return redirect('index')
from accounts.models import CustomUser
# Создаём пользователя если он не существует (для случаев когда активация прошла без создания пользователя)
owner, created = CustomUser.objects.get_or_create(
email=registration.owner_email,
defaults={
'name': registration.owner_name,
'is_active': False,
}
)
if created:
owner.is_email_confirmed = True
owner.save()
# Обработать POST - установить пароль
if request.method == 'POST':