From 8c6406269c34d083860ea2dd4f25ee270e7bf112 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 13 Feb 2026 20:35:13 +0300 Subject: [PATCH] full --- backend/apps/notifications/tasks.py | 290 +++++++++++++++--- backend/apps/users/geo_data/cities_ru.json | 49 +-- backend/apps/users/management/__init__.py | 0 .../users/management/commands/__init__.py | 0 backend/apps/users/profile_views.py | 30 +- backend/apps/users/templates/emails/base.html | 64 ++++ .../templates/emails/mentor_invitation.html | 206 ++++++++++--- .../templates/emails/mentor_invitation.txt | 28 +- .../templates/emails/password_reset.html | 171 +++++++++-- .../users/templates/emails/password_reset.txt | 28 +- .../templates/emails/student_welcome.html | 181 +++++++++-- .../templates/emails/student_welcome.txt | 30 +- .../users/templates/emails/verification.html | 152 +++++++-- .../users/templates/emails/verification.txt | 26 +- .../apps/users/templates/emails/welcome.html | 148 +++++++-- .../apps/users/templates/emails/welcome.txt | 24 +- backend/config/settings.py | 4 +- 17 files changed, 1138 insertions(+), 293 deletions(-) create mode 100644 backend/apps/users/management/__init__.py create mode 100644 backend/apps/users/management/commands/__init__.py create mode 100644 backend/apps/users/templates/emails/base.html diff --git a/backend/apps/notifications/tasks.py b/backend/apps/notifications/tasks.py index b78ee95..a7563dc 100644 --- a/backend/apps/notifications/tasks.py +++ b/backend/apps/notifications/tasks.py @@ -107,56 +107,274 @@ def send_email_notification(notification): # Если шаблон не содержит body, используем дефолтный if not email_body: + action_button = '' + if notification.action_url: + action_url = f"{settings.FRONTEND_URL}{notification.action_url}" + action_button = f''' + + + + + + +
+ + Перейти + +
+ + + ''' + email_body = f""" - - -
-

{notification.title}

-
-

{notification.message}

-
- {f'Перейти' if notification.action_url else ''} -

- Это автоматическое уведомление от образовательной платформы. -

-
- + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ + + + + + + + {action_button} +
+

{notification.title}

+
+

{notification.message}

+
+
+ + + + +
+

С уважением,
Команда Uchill

+

+ © 2026 Uchill. Все права защищены. +

+
+
+
+ """ else: # Если есть шаблон, оборачиваем его в базовую HTML структуру, если нужно if not email_body.strip().startswith(' + + + + + +
+ + Перейти + +
+ + + ''' + email_body = f""" - - -
- {email_body} - {f'Перейти' if notification.action_url else ''} -

- Это автоматическое уведомление от образовательной платформы. -

-
- + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ + + + + {action_button} +
+ {email_body} +
+
+ + + + +
+

С уважением,
Команда Uchill

+

+ © 2026 Uchill. Все права защищены. +

+
+
+
+ """ except NotificationTemplate.DoesNotExist: # Если шаблона нет, используем дефолтный email_subject = notification.title + + action_button = '' + if notification.action_url: + action_url = f"{settings.FRONTEND_URL}{notification.action_url}" + action_button = f''' + + + + + + +
+ + Перейти + +
+ + + ''' + email_body = f""" - - -
-

{notification.title}

-
-

{notification.message}

-
- {f'Перейти' if notification.action_url else ''} -

- Это автоматическое уведомление от образовательной платформы. -

-
- + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ + + + + + + + {action_button} +
+

{notification.title}

+
+

{notification.message}

+
+
+ + + + +
+

С уважением,
Команда Uchill

+

+ © 2026 Uchill. Все права защищены. +

+
+
+
+ """ diff --git a/backend/apps/users/geo_data/cities_ru.json b/backend/apps/users/geo_data/cities_ru.json index 74dfd70..9b98fa3 100644 --- a/backend/apps/users/geo_data/cities_ru.json +++ b/backend/apps/users/geo_data/cities_ru.json @@ -1,24 +1,25 @@ -[ - { "country_code": "RU", "country_name": "Россия", "city": "Москва", "timezone": "Europe/Moscow" }, - { "country_code": "RU", "country_name": "Россия", "city": "Санкт-Петербург", "timezone": "Europe/Moscow" }, - { "country_code": "RU", "country_name": "Россия", "city": "Новосибирск", "timezone": "Asia/Novosibirsk" }, - { "country_code": "RU", "country_name": "Россия", "city": "Екатеринбург", "timezone": "Asia/Yekaterinburg" }, - { "country_code": "RU", "country_name": "Россия", "city": "Казань", "timezone": "Europe/Moscow" }, - { "country_code": "RU", "country_name": "Россия", "city": "Нижний Новгород", "timezone": "Europe/Moscow" }, - { "country_code": "RU", "country_name": "Россия", "city": "Самара", "timezone": "Europe/Samara" }, - { "country_code": "RU", "country_name": "Россия", "city": "Омск", "timezone": "Asia/Omsk" }, - { "country_code": "RU", "country_name": "Россия", "city": "Челябинск", "timezone": "Asia/Yekaterinburg" }, - { "country_code": "RU", "country_name": "Россия", "city": "Ростов-на-Дону", "timezone": "Europe/Moscow" }, - { "country_code": "RU", "country_name": "Россия", "city": "Уфа", "timezone": "Asia/Yekaterinburg" }, - { "country_code": "RU", "country_name": "Россия", "city": "Красноярск", "timezone": "Asia/Krasnoyarsk" }, - { "country_code": "RU", "country_name": "Россия", "city": "Воронеж", "timezone": "Europe/Moscow" }, - { "country_code": "RU", "country_name": "Россия", "city": "Пермь", "timezone": "Asia/Yekaterinburg" }, - { "country_code": "RU", "country_name": "Россия", "city": "Волгоград", "timezone": "Europe/Moscow" }, - { "country_code": "RU", "country_name": "Россия", "city": "Краснодар", "timezone": "Europe/Moscow" }, - { "country_code": "RU", "country_name": "Россия", "city": "Саратов", "timezone": "Europe/Saratov" }, - { "country_code": "RU", "country_name": "Россия", "city": "Тюмень", "timezone": "Asia/Yekaterinburg" }, - { "country_code": "RU", "country_name": "Россия", "city": "Иркутск", "timezone": "Asia/Irkutsk" }, - { "country_code": "RU", "country_name": "Россия", "city": "Владивосток", "timezone": "Asia/Vladivostok" } -] - - +[ + { "country_code": "RU", "country_name": "Россия", "city": "Москва", "timezone": "Europe/Moscow" }, + { "country_code": "RU", "country_name": "Россия", "city": "Санкт-Петербург", "timezone": "Europe/Moscow" }, + { "country_code": "RU", "country_name": "Россия", "city": "Новосибирск", "timezone": "Asia/Novosibirsk" }, + { "country_code": "RU", "country_name": "Россия", "city": "Екатеринбург", "timezone": "Asia/Yekaterinburg" }, + { "country_code": "RU", "country_name": "Россия", "city": "Казань", "timezone": "Europe/Moscow" }, + { "country_code": "RU", "country_name": "Россия", "city": "Нижний Новгород", "timezone": "Europe/Moscow" }, + { "country_code": "RU", "country_name": "Россия", "city": "Самара", "timezone": "Europe/Samara" }, + { "country_code": "RU", "country_name": "Россия", "city": "Омск", "timezone": "Asia/Omsk" }, + { "country_code": "RU", "country_name": "Россия", "city": "Челябинск", "timezone": "Asia/Yekaterinburg" }, + { "country_code": "RU", "country_name": "Россия", "city": "Ростов-на-Дону", "timezone": "Europe/Moscow" }, + { "country_code": "RU", "country_name": "Россия", "city": "Уфа", "timezone": "Asia/Yekaterinburg" }, + { "country_code": "RU", "country_name": "Россия", "city": "Красноярск", "timezone": "Asia/Krasnoyarsk" }, + { "country_code": "RU", "country_name": "Россия", "city": "Воронеж", "timezone": "Europe/Moscow" }, + { "country_code": "RU", "country_name": "Россия", "city": "Пермь", "timezone": "Asia/Yekaterinburg" }, + { "country_code": "RU", "country_name": "Россия", "city": "Волгоград", "timezone": "Europe/Moscow" }, + { "country_code": "RU", "country_name": "Россия", "city": "Краснодар", "timezone": "Europe/Moscow" }, + { "country_code": "RU", "country_name": "Россия", "city": "Саратов", "timezone": "Europe/Saratov" }, + { "country_code": "RU", "country_name": "Россия", "city": "Тюмень", "timezone": "Asia/Yekaterinburg" }, + { "country_code": "RU", "country_name": "Россия", "city": "Иркутск", "timezone": "Asia/Irkutsk" }, + { "country_code": "RU", "country_name": "Россия", "city": "Владивосток", "timezone": "Asia/Vladivostok" }, + { "country_code": "RU", "country_name": "Россия", "city": "Ульяновск", "timezone": "Europe/Samara" } +] + + diff --git a/backend/apps/users/management/__init__.py b/backend/apps/users/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/users/management/commands/__init__.py b/backend/apps/users/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/users/profile_views.py b/backend/apps/users/profile_views.py index 6b353f6..784de7e 100644 --- a/backend/apps/users/profile_views.py +++ b/backend/apps/users/profile_views.py @@ -922,11 +922,37 @@ class ClientManagementViewSet(viewsets.ViewSet): # Раньше ClientSerializer считал статистику занятий через 3 отдельных запроса на каждого клиента (N+1). # Здесь заранее аннотируем эти значения одним SQL-запросом. from django.db.models import Count, Q - + + # Получаем ID студентов из принятых связей (MentorStudentConnection) + # Это нужно для случаев, когда связь создана, но ментор ещё не добавлен в client.mentors + accepted_connections = MentorStudentConnection.objects.filter( + mentor=user, + status=MentorStudentConnection.STATUS_ACCEPTED + ).values_list('student_id', flat=True) + + # Получаем ID клиентов, у которых ментор уже добавлен в client.mentors + clients_with_mentor = Client.objects.filter(mentors=user).values_list('id', flat=True) + + # Получаем ID клиентов из принятых связей, у которых ментор ещё не добавлен + clients_to_sync = Client.objects.filter( + user_id__in=accepted_connections + ).exclude(id__in=clients_with_mentor).values_list('id', flat=True) + + # Синхронизация: добавляем ментора в client.mentors для клиентов с принятыми связями + # Используем bulk операцию для эффективности + if clients_to_sync: + clients_to_update = Client.objects.filter(id__in=clients_to_sync) + for client in clients_to_update: + client.mentors.add(user) + + # Фильтруем клиентов: либо ментор в client.mentors, либо есть принятая связь clients = ( - Client.objects.filter(mentors=user) + Client.objects.filter( + Q(mentors=user) | Q(user_id__in=accepted_connections) + ) .select_related('user') .prefetch_related('mentors') + .distinct() .annotate( # Поля с суффиксом _annotated читает ClientSerializer (если присутствуют) scheduled_lessons_annotated=Count( diff --git a/backend/apps/users/templates/emails/base.html b/backend/apps/users/templates/emails/base.html new file mode 100644 index 0000000..828c588 --- /dev/null +++ b/backend/apps/users/templates/emails/base.html @@ -0,0 +1,64 @@ + + + + + + + {% block title %}Uchill{% endblock %} + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ {% block content %}{% endblock %} +
+ + + + +
+

С уважением,
Команда Uchill

+

+ © {% now "Y" %} Uchill. Все права защищены. +

+
+
+
+ + diff --git a/backend/apps/users/templates/emails/mentor_invitation.html b/backend/apps/users/templates/emails/mentor_invitation.html index 936bde8..e9c2cc2 100644 --- a/backend/apps/users/templates/emails/mentor_invitation.html +++ b/backend/apps/users/templates/emails/mentor_invitation.html @@ -1,36 +1,170 @@ - - - - - - - -
-
-

Приглашение от ментора

-
- -

Здравствуйте!

- -

{{ mentor_name }} приглашает вас в качестве ученика на платформу.

- - {% if set_password_url %} -

Для начала работы установите пароль и подтвердите приглашение.

-
- Установить пароль и подтвердить -
-

{{ set_password_url }}

- {% elif confirm_url %} -

Подтвердите приглашение, чтобы начать занятия с ментором.

-
- Подтвердить приглашение -
-

{{ confirm_url }}

- {% endif %} - -
-

С уважением,
Команда платформы

-
-
- - + + + + + + + Приглашение от ментора - Uchill + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ + + + + + + + + + + + + + + + + {% if set_password_url %} + + + + + + + + + + + + + + + + {% elif confirm_url %} + + + + + + + + + + + + + + + {% endif %} +
+

Приглашение от ментора

+
+

+ Здравствуйте! +

+
+

+ {{ mentor_name }} приглашает вас в качестве ученика на платформу Uchill. +

+
+

+ Для начала работы установите пароль и подтвердите приглашение. +

+
+ + + + +
+ + Установить пароль и подтвердить + +
+
+ + + + +
+

+ {{ set_password_url }} +

+
+
+

+ Подтвердите приглашение, чтобы начать занятия с ментором. +

+
+ + + + +
+ + Подтвердить приглашение + +
+
+ + + + +
+

+ {{ confirm_url }} +

+
+
+
+ + + + +
+

С уважением,
Команда Uchill

+

+ © 2026 Uchill. Все права защищены. +

+
+
+
+ + diff --git a/backend/apps/users/templates/emails/mentor_invitation.txt b/backend/apps/users/templates/emails/mentor_invitation.txt index 53bc610..847cef6 100644 --- a/backend/apps/users/templates/emails/mentor_invitation.txt +++ b/backend/apps/users/templates/emails/mentor_invitation.txt @@ -1,14 +1,14 @@ -Здравствуйте! - -{{ mentor_name }} приглашает вас в качестве ученика на платформу. - -{% if set_password_url %} -Установите пароль и подтвердите приглашение по ссылке: -{{ set_password_url }} -{% elif confirm_url %} -Подтвердите приглашение по ссылке: -{{ confirm_url }} -{% endif %} - -С уважением, -Команда платформы +Здравствуйте! + +{{ mentor_name }} приглашает вас в качестве ученика на платформу Uchill. + +{% if set_password_url %} +Установите пароль и подтвердите приглашение по ссылке: +{{ set_password_url }} +{% elif confirm_url %} +Подтвердите приглашение по ссылке: +{{ confirm_url }} +{% endif %} + +С уважением, +Команда Uchill diff --git a/backend/apps/users/templates/emails/password_reset.html b/backend/apps/users/templates/emails/password_reset.html index bf18942..8f27f95 100644 --- a/backend/apps/users/templates/emails/password_reset.html +++ b/backend/apps/users/templates/emails/password_reset.html @@ -1,39 +1,146 @@ - + + + Восстановление пароля - Uchill + - -
-
-

Восстановление пароля

-
- -

Здравствуйте, {{ user_full_name }}!

- -

Вы запросили восстановление пароля для вашего аккаунта. Нажмите на кнопку ниже, чтобы установить новый пароль.

- -
- Восстановить пароль -
- -

Или скопируйте и вставьте эту ссылку в браузер:

-

{{ reset_url }}

- -
-

⚠️ Важно: Ссылка действительна в течение 24 часов.

-
- -
-

Если вы не запрашивали восстановление пароля, просто проигнорируйте это письмо. Ваш пароль останется без изменений.

-
- -
-

С уважением,
Команда Lessoni

-
-
+ + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Восстановление пароля

+
+

+ Здравствуйте, {{ user_full_name }}! +

+
+

+ Вы запросили восстановление пароля для вашего аккаунта. Нажмите на кнопку ниже, чтобы установить новый пароль. +

+
+ + + + +
+ + Восстановить пароль + +
+
+

+ Или скопируйте и вставьте эту ссылку в браузер: +

+ + + + +
+

+ {{ reset_url }} +

+
+
+ + + + +
+

+ ⚠️ Важно: Ссылка действительна в течение 24 часов. +

+
+
+

+ Если вы не запрашивали восстановление пароля, просто проигнорируйте это письмо. Ваш пароль останется без изменений. +

+
+
+ + + + +
+

С уважением,
Команда Uchill

+

+ © 2026 Uchill. Все права защищены. +

+
+
+
- - diff --git a/backend/apps/users/templates/emails/password_reset.txt b/backend/apps/users/templates/emails/password_reset.txt index 477df58..dbd08b7 100644 --- a/backend/apps/users/templates/emails/password_reset.txt +++ b/backend/apps/users/templates/emails/password_reset.txt @@ -1,16 +1,12 @@ -Здравствуйте, {{ user_full_name }}! - -Вы запросили восстановление пароля для вашего аккаунта. Перейдите по ссылке для установки нового пароля: - -{{ reset_url }} - -Важно: Ссылка действительна в течение 24 часов. - -Если вы не запрашивали восстановление пароля, просто проигнорируйте это письмо. Ваш пароль останется без изменений. - -С уважением, -Команда платформы - - - - +Здравствуйте, {{ user_full_name }}! + +Вы запросили восстановление пароля для вашего аккаунта. Перейдите по ссылке для установки нового пароля: + +{{ reset_url }} + +Важно: Ссылка действительна в течение 24 часов. + +Если вы не запрашивали восстановление пароля, просто проигнорируйте это письмо. Ваш пароль останется без изменений. + +С уважением, +Команда Uchill diff --git a/backend/apps/users/templates/emails/student_welcome.html b/backend/apps/users/templates/emails/student_welcome.html index 74166e1..0014089 100644 --- a/backend/apps/users/templates/emails/student_welcome.html +++ b/backend/apps/users/templates/emails/student_welcome.html @@ -1,40 +1,155 @@ - + + + Добро пожаловать на Uchill + - -
-
-

Добро пожаловать!

-
- -

Здравствуйте, {{ user_full_name }}!

- -

Вас добавили на Lessoni. Для начала работы необходимо установить пароль для вашего аккаунта.

- -
-

Ваш email для входа:

-

{{ user_email }}

-
- -
- Установить пароль -
- -

Или скопируйте и вставьте эту ссылку в браузер:

-

{{ set_password_url }}

- -
-

⚠️ Важно: Ссылка действительна в течение 7 дней.

-
- -
-

С уважением,
Команда Lessoni

-
-
+ + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Добро пожаловать!

+
+

+ Здравствуйте, {{ user_full_name }}! +

+
+

+ Вас добавили на Uchill. Для начала работы необходимо установить пароль для вашего аккаунта. +

+
+ + + + +
+

+ Ваш email для входа: +

+

+ {{ user_email }} +

+
+
+ + + + +
+ + Установить пароль + +
+
+

+ Или скопируйте и вставьте эту ссылку в браузер: +

+ + + + +
+

+ {{ set_password_url }} +

+
+
+ + + + +
+

+ ⚠️ Важно: Ссылка действительна в течение 7 дней. +

+
+
+
+ + + + +
+

С уважением,
Команда Uchill

+

+ © 2026 Uchill. Все права защищены. +

+
+
+
- - diff --git a/backend/apps/users/templates/emails/student_welcome.txt b/backend/apps/users/templates/emails/student_welcome.txt index 6f3ee3a..cf95b34 100644 --- a/backend/apps/users/templates/emails/student_welcome.txt +++ b/backend/apps/users/templates/emails/student_welcome.txt @@ -1,17 +1,13 @@ -Здравствуйте, {{ user_full_name }}! - -Вас добавили на образовательную платформу. Для начала работы необходимо установить пароль для вашего аккаунта. - -Ваш email для входа: {{ user_email }} - -Перейдите по ссылке для установки пароля: -{{ set_password_url }} - -Важно: Ссылка действительна в течение 7 дней. - -С уважением, -Команда платформы - - - - +Здравствуйте, {{ user_full_name }}! + +Вас добавили на Uchill. Для начала работы необходимо установить пароль для вашего аккаунта. + +Ваш email для входа: {{ user_email }} + +Перейдите по ссылке для установки пароля: +{{ set_password_url }} + +Важно: Ссылка действительна в течение 7 дней. + +С уважением, +Команда Uchill diff --git a/backend/apps/users/templates/emails/verification.html b/backend/apps/users/templates/emails/verification.html index 283f2df..1f2fa90 100644 --- a/backend/apps/users/templates/emails/verification.html +++ b/backend/apps/users/templates/emails/verification.html @@ -1,35 +1,131 @@ - + + + Подтверждение email - Uchill + - -
-
-

Подтверждение email

-
- -

Здравствуйте, {{ user_full_name }}!

- -

Спасибо за регистрацию на Lessoni. Для завершения регистрации необходимо подтвердить ваш email адрес.

- -
- Подтвердить email -
- -

Или скопируйте и вставьте эту ссылку в браузер:

-

{{ verification_url }}

- -
-

Если вы не регистрировались на нашей платформе, просто проигнорируйте это письмо.

-
- -
-

С уважением,
Команда Lessoni

-
-
+ + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Подтверждение email

+
+

+ Здравствуйте, {{ user_full_name }}! +

+
+

+ Спасибо за регистрацию на Uchill. Для завершения регистрации необходимо подтвердить ваш email адрес. +

+
+ + + + +
+ + Подтвердить email + +
+
+

+ Или скопируйте и вставьте эту ссылку в браузер: +

+ + + + +
+

+ {{ verification_url }} +

+
+
+

+ Если вы не регистрировались на нашей платформе, просто проигнорируйте это письмо. +

+
+
+ + + + +
+

С уважением,
Команда Uchill

+

+ © 2026 Uchill. Все права защищены. +

+
+
+
- - diff --git a/backend/apps/users/templates/emails/verification.txt b/backend/apps/users/templates/emails/verification.txt index f797e4a..52ba6e8 100644 --- a/backend/apps/users/templates/emails/verification.txt +++ b/backend/apps/users/templates/emails/verification.txt @@ -1,15 +1,11 @@ -Здравствуйте, {{ user_full_name }}! - -Спасибо за регистрацию на нашей образовательной платформе. Для завершения регистрации необходимо подтвердить ваш email адрес. - -Перейдите по ссылке для подтверждения: -{{ verification_url }} - -Если вы не регистрировались на нашей платформе, просто проигнорируйте это письмо. - -С уважением, -Команда платформы - - - - +Здравствуйте, {{ user_full_name }}! + +Спасибо за регистрацию на Uchill. Для завершения регистрации необходимо подтвердить ваш email адрес. + +Перейдите по ссылке для подтверждения: +{{ verification_url }} + +Если вы не регистрировались на нашей платформе, просто проигнорируйте это письмо. + +С уважением, +Команда Uchill diff --git a/backend/apps/users/templates/emails/welcome.html b/backend/apps/users/templates/emails/welcome.html index bfc81a7..75eb27a 100644 --- a/backend/apps/users/templates/emails/welcome.html +++ b/backend/apps/users/templates/emails/welcome.html @@ -1,31 +1,131 @@ - + + + Добро пожаловать на Uchill + - -
-
-

Добро пожаловать!

-
- -

Здравствуйте, {{ user_full_name }}!

- -

Добро пожаловать на Lessoni! Ваш аккаунт успешно создан.

- -
-

Ваш email для входа:

-

{{ user_email }}

-
- -

Теперь вы можете войти в систему и начать пользоваться всеми возможностями платформы.

- -
-

С уважением,
Команда Lessoni

-
-
+ + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + +
+ + uchill + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Добро пожаловать!

+
+

+ Здравствуйте, {{ user_full_name }}! +

+
+

+ Добро пожаловать на Uchill! Ваш аккаунт успешно создан. +

+
+ + + + +
+

+ Ваш email для входа: +

+

+ {{ user_email }} +

+
+
+

+ Теперь вы можете войти в систему и начать пользоваться всеми возможностями платформы. +

+
+ + + + +
+ + Войти в систему + +
+
+
+ + + + +
+

С уважением,
Команда Uchill

+

+ © 2026 Uchill. Все права защищены. +

+
+
+
- - diff --git a/backend/apps/users/templates/emails/welcome.txt b/backend/apps/users/templates/emails/welcome.txt index b36e433..d103ec8 100644 --- a/backend/apps/users/templates/emails/welcome.txt +++ b/backend/apps/users/templates/emails/welcome.txt @@ -1,14 +1,10 @@ -Здравствуйте, {{ user_full_name }}! - -Добро пожаловать на нашу образовательную платформу. Ваш аккаунт успешно создан. - -Ваш email для входа: {{ user_email }} - -Теперь вы можете войти в систему и начать пользоваться всеми возможностями платформы. - -С уважением, -Команда платформы - - - - +Здравствуйте, {{ user_full_name }}! + +Добро пожаловать на Uchill! Ваш аккаунт успешно создан. + +Ваш email для входа: {{ user_email }} + +Теперь вы можете войти в систему и начать пользоваться всеми возможностями платформы. + +С уважением, +Команда Uchill diff --git a/backend/config/settings.py b/backend/config/settings.py index cfc422f..09ce960 100644 --- a/backend/config/settings.py +++ b/backend/config/settings.py @@ -1,5 +1,5 @@ """ -Django settings для Lessoni - образовательной платформы. +Django settings для Uchill - образовательной платформы. """ import os @@ -46,7 +46,7 @@ if os.getenv('SENTRY_DSN') and os.getenv('DEBUG', 'True') == 'False': environment=os.getenv('SENTRY_ENVIRONMENT', 'production'), # Релиз (версия приложения) - release=os.getenv('SENTRY_RELEASE', 'lessoni@1.0.0'), + release=os.getenv('SENTRY_RELEASE', 'uchill@1.0.0'), # Игнорировать определенные ошибки ignore_errors=[