[feat] excel download

This commit is contained in:
Data-Name-ID
2024-04-02 19:59:24 +03:00
parent 4c6a5ff723
commit e5faea0df4
+43
View File
@@ -8,6 +8,10 @@ from rest_framework.viewsets import ModelViewSet
from api.events.models import Event from api.events.models import Event
from api.users.models import User from api.users.models import User
from api.users.serializers import UserSerializer from api.users.serializers import UserSerializer
from django.http import HttpResponse
from rest_framework.views import APIView
from rest_framework.response import Response
import pandas as pd
class UserViewSet(ModelViewSet): class UserViewSet(ModelViewSet):
@@ -55,3 +59,42 @@ class RegisterUsersFromExcelView(APIView):
return Response( return Response(
{"error": str(e)}, status=status.HTTP_400_BAD_REQUEST {"error": str(e)}, status=status.HTTP_400_BAD_REQUEST
) )
class ExportUsersExcel(APIView):
def get(self, request, event_id):
event = Event.objects.get(id=event_id)
users = event.users.all()
users_data = {
"First Name": [user.first_name for user in users],
"Last Name": [user.last_name for user in users],
"Email": [user.email for user in users],
"Birth Date": [
user.birth_date.strftime("%Y-%m-%d") for user in users
],
"Bio": [user.bio for user in users],
}
df = pd.DataFrame(users_data)
excel_file = pd.ExcelWriter("event_users.xlsx", engine="xlsxwriter")
df.to_excel(excel_file, index=False, sheet_name="Users")
excel_file.save()
with open("event_users.xlsx", "rb") as excel:
content = excel.read()
# Удаляем созданный временный файл
import os
os.remove("event_users.xlsx")
# Отправляем Excel файл как HttpResponse
response = HttpResponse(
content, content_type="application/vnd.ms-excel"
)
response[
"Content-Disposition"
] = 'attachment; filename="event_users.xlsx"'
return response