admin-panel-backend/apps/reports/views.py
Ali Asadi 1376ead48a Revert reports app to standalone single-report generation
Restore the original report_type-driven endpoint (users/tickets picked
individually via serializer + orchestrator) that was replaced by the
bundled zip export in b293509, on top of current master.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 17:13:53 +03:30

36 lines
1.2 KiB
Python

from django.http import HttpResponse
from rest_framework import status
from rest_framework.views import APIView
from apps.reports.serializers import ReportGenerateSerializer
from apps.reports.services.excel import build_report_workbook
from apps.reports.services.orchestrator import ReportOrchestrator
class GenerateReportView(APIView):
authentication_classes = []
permission_classes = []
def post(self, request):
serializer = ReportGenerateSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
orchestrator = ReportOrchestrator()
report_data = orchestrator.generate(serializer.validated_data)
workbook = build_report_workbook(
title=report_data["title"],
columns=report_data["columns"],
rows=report_data["rows"],
)
response = HttpResponse(
workbook,
content_type=(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
),
status=status.HTTP_200_OK,
)
response["Content-Disposition"] = (
f'attachment; filename="{report_data["filename"]}"'
)
return response