feat: обновления парсеров, тестов и миграций
Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 37s
CI/CD Pipeline / Code Quality Checks (push) Failing after 43s
CI/CD Pipeline / Build & Push Images (push) Has been skipped
CI/CD Pipeline / Deploy (dev) (push) Has been skipped
CI/CD Pipeline / Deploy (prod) (push) Has been skipped
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 0s
CI/CD Pipeline / Run Tests (pull_request) Failing after 0s
CI/CD Pipeline / Build & Push Images (pull_request) Has been skipped
CI/CD Pipeline / Deploy (dev) (pull_request) Has been skipped
CI/CD Pipeline / Deploy (prod) (pull_request) Has been skipped

- Обновлены клиенты парсеров (checko, fns, minpromtorg, proverki, zakupki)
- Добавлены новые миграции для моделей
- Расширено покрытие тестами
- Обновлены конфигурации и настройки проекта
- Добавлены утилиты для тестирования

Co-Authored-By: Warp <agent@warp.dev>
This commit is contained in:
2026-02-10 10:17:47 +01:00
parent 975d019ba5
commit ee95628a0a
59 changed files with 7292 additions and 2876 deletions

View File

@@ -0,0 +1,19 @@
# Generated by Django 3.2.25 on 2026-02-05 11:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('user', '0002_remove_firstname_lastname'),
]
operations = [
migrations.AlterField(
model_name='user',
name='groups',
field=models.ManyToManyField(blank=True, help_text='', related_name='custom_user_set', related_query_name='custom_user', to='auth.Group', verbose_name='groups'),
),
]

View File

@@ -99,7 +99,7 @@ class LogoutView(APIView):
"""
Выход пользователя.
Добавляет refresh токен в черный список (при наличии).
Логаут на JWT означает удаление токенов на клиенте.
"""
permission_classes = [IsAuthenticated]
@@ -107,20 +107,13 @@ class LogoutView(APIView):
@swagger_auto_schema(
tags=[AUTH_TAG],
operation_summary="Выход",
operation_description="Инвалидация refresh токена.",
operation_description="Выход из системы (удаление токенов на клиенте).",
responses={200: "Успешный выход"},
)
def post(self, request):
try:
refresh_token = request.data.get("refresh")
if refresh_token:
token = RefreshToken(refresh_token)
token.blacklist()
return Response({"message": "Успешный выход"}, status=status.HTTP_200_OK)
except Exception:
return Response(
{"error": "Неверный токен"}, status=status.HTTP_400_BAD_REQUEST
)
# Для JWT логаут означает удаление токенов на клиенте.
# Сервер не хранит сессию и ничего не инвалидирует.
return Response({"message": "Успешный выход"}, status=status.HTTP_200_OK)
class CurrentUserView(APIView):