Add v2 registry uploads and source CSV exports
This commit is contained in:
39
src/apps/parsers/api_v2_urls.py
Normal file
39
src/apps/parsers/api_v2_urls.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""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",
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user