Files
mostovik-backend/src/apps/parsers/api_v2_urls.py
Aleksandr Meshchriakov 15360a3c8e
All checks were successful
CI/CD Pipeline / Quality Gate (push) Successful in 20s
CI/CD Pipeline / Build and Push Images (push) Successful in 10s
CI/CD Pipeline / Internal Notify (push) Successful in 0s
CI/CD Pipeline / Deploy Dev in Dokploy (push) Successful in 1s
Add v2 registry uploads and source CSV exports
2026-05-07 14:41:01 +02:00

40 lines
1.2 KiB
Python

"""API v2 routes for parser source exports."""
from apps.parsers.models import ParserLoadLog
from apps.parsers.source_registry import PARSER_SOURCES, ParserSourceDescriptor
from apps.parsers.views import SourceResultCsvDownloadView
from django.urls import path
app_name = "parser_sources"
def _download_source_descriptors():
"""Return unique source result routes that support CSV download."""
seen_routes = set()
for descriptor in PARSER_SOURCES.values():
if not descriptor.api_route or descriptor.api_route in seen_routes:
continue
seen_routes.add(descriptor.api_route)
if descriptor.source == ParserLoadLog.Source.FNS_REPORTS:
continue
yield descriptor
def _download_view(descriptor: ParserSourceDescriptor):
class SourceDownloadView(SourceResultCsvDownloadView):
source_key = descriptor.key
return SourceDownloadView.as_view()
urlpatterns = []
for source_descriptor in _download_source_descriptors():
route_name = source_descriptor.api_route.replace("/", "-")
urlpatterns.append(
path(
f"{source_descriptor.api_route}/download/",
_download_view(source_descriptor),
name=f"{route_name}-download",
)
)