From 479b0426be877953244ce77870e8a5157fa53eb0 Mon Sep 17 00:00:00 2001 From: Aleksandr Meshchriakov Date: Mon, 23 Mar 2026 10:52:52 +0100 Subject: [PATCH] refactor(parsers): remove proxy api endpoints --- src/apps/parsers/serializers.py | 26 ------------------- src/apps/parsers/urls.py | 2 -- src/apps/parsers/views.py | 44 -------------------------------- tests/apps/parsers/test_views.py | 12 +-------- 4 files changed, 1 insertion(+), 83 deletions(-) diff --git a/src/apps/parsers/serializers.py b/src/apps/parsers/serializers.py index afe2d90..7b8bd7e 100644 --- a/src/apps/parsers/serializers.py +++ b/src/apps/parsers/serializers.py @@ -15,7 +15,6 @@ from apps.parsers.models import ( ParserLoadLog, ParsingSettings, ProcurementRecord, - Proxy, ) from rest_framework import serializers @@ -429,31 +428,6 @@ class ParserLoadLogListSerializer(serializers.Serializer): created_at = serializers.DateTimeField(read_only=True) updated_at = serializers.DateTimeField(read_only=True) - -class ProxySerializer(serializers.ModelSerializer): - """ - Прокси-сервер для парсеров. - - Используется для обхода блокировок при парсинге. - """ - - class Meta: - model = Proxy - fields = [ - "id", - "address", - "is_active", - "country_code", - "source", - "last_used_at", - "fail_count", - "description", - "created_at", - "updated_at", - ] - read_only_fields = fields - - class SourceCardRefreshParamSerializer(serializers.Serializer): """Описание параметра ручного обновления карточки источника.""" diff --git a/src/apps/parsers/urls.py b/src/apps/parsers/urls.py index a20946c..e0e84b5 100644 --- a/src/apps/parsers/urls.py +++ b/src/apps/parsers/urls.py @@ -15,7 +15,6 @@ from apps.parsers.views import ( ParserLoadLogViewSet, ParsingSettingsView, ProcurementViewSet, - ProxyViewSet, SourceCardDetailView, SourceCardListView, SourceCardRefreshView, @@ -108,7 +107,6 @@ sources_urlpatterns = [ system_router = DefaultRouter() system_router.register(r"logs", ParserLoadLogViewSet, basename="parser-logs") -system_router.register(r"proxies", ProxyViewSet, basename="proxies") system_urlpatterns = [ path("logs/export/", ParserLoadLogExportView.as_view(), name="parser-logs-export"), diff --git a/src/apps/parsers/views.py b/src/apps/parsers/views.py index e62687f..56f2183 100644 --- a/src/apps/parsers/views.py +++ b/src/apps/parsers/views.py @@ -19,7 +19,6 @@ from apps.parsers.models import ( ParserLoadLog, ParsingSettings, ProcurementRecord, - Proxy, ) from apps.parsers.serializers import ( FinancialReportDetailSerializer, @@ -33,7 +32,6 @@ from apps.parsers.serializers import ( ParserLoadLogSerializer, ParsingSettingsSerializer, ProcurementSerializer, - ProxySerializer, SourceCardDetailSerializer, SourceCardRefreshRequestSerializer, SourceCardRefreshResponseSerializer, @@ -1091,45 +1089,3 @@ class ParserLoadLogExportView(APIView): ) return response - - -class ProxyViewSet(ReadOnlyModelViewSet): - """ - API для просмотра списка прокси-серверов. - - Используется для отладки и мониторинга парсеров. - Только для администраторов. - """ - - queryset = Proxy.objects.all().order_by("-last_used_at") - serializer_class = ProxySerializer - permission_classes = [IsAdminUser] - filterset_fields = ["is_active"] - - @swagger_auto_schema( - tags=[SYSTEM_TAG], - operation_summary="Список прокси", - operation_description=( - "Возвращает список прокси-серверов для парсеров.\n" - "Доступно только администраторам.\n" - "Поддерживает фильтрацию по: is_active." - ), - responses={ - 200: ProxySerializer(many=True), - **ErrorResponses.ADMIN, - }, - ) - def list(self, request, *args, **kwargs): - return super().list(request, *args, **kwargs) - - @swagger_auto_schema( - tags=[SYSTEM_TAG], - operation_summary="Детали прокси", - operation_description="Возвращает информацию о конкретном прокси.", - responses={ - 200: ProxySerializer, - **ErrorResponses.ADMIN_NOT_FOUND, - }, - ) - def retrieve(self, request, *args, **kwargs): - return super().retrieve(request, *args, **kwargs) diff --git a/tests/apps/parsers/test_views.py b/tests/apps/parsers/test_views.py index 7843da4..6e245f8 100644 --- a/tests/apps/parsers/test_views.py +++ b/tests/apps/parsers/test_views.py @@ -19,7 +19,6 @@ from tests.apps.parsers.factories import ( InspectionRecordFactory, ManufacturerRecordFactory, ParserLoadLogFactory, - ProxyFactory, ) from tests.apps.user.factories import UserFactory from tests.utils.fixtures import fake @@ -151,11 +150,9 @@ class ParsersViewSetTest(APITestCase): self.assertEqual(detail.status_code, status.HTTP_200_OK) self.assertIn("lines", detail.data) - def test_system_logs_and_proxies_admin_only(self): + def test_system_logs_admin_only(self): log = ParserLoadLogFactory() - proxy = ProxyFactory() url_logs = reverse("api_v1:system:parser-logs-list") - url_proxy = reverse("api_v1:system:proxies-list") response = self.client.get(url_logs) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @@ -172,13 +169,6 @@ class ParsersViewSetTest(APITestCase): ) self.assertEqual(detail.status_code, status.HTTP_200_OK) - proxy_response = self.client.get(url_proxy) - self.assertEqual(proxy_response.status_code, status.HTTP_200_OK) - proxy_detail = self.client.get( - reverse("api_v1:system:proxies-detail", args=[proxy.id]) - ) - self.assertEqual(proxy_detail.status_code, status.HTTP_200_OK) - def test_system_logs_support_search_and_organizations_count(self): first_log = ParserLoadLogFactory( source="manufactures",