From e5faea0df4d875c9a6a50be70affd5046b9af0a1 Mon Sep 17 00:00:00 2001 From: Data-Name-ID Date: Tue, 2 Apr 2024 19:59:24 +0300 Subject: [PATCH] [feat] excel download --- backend/project/api/users/views.py | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/backend/project/api/users/views.py b/backend/project/api/users/views.py index ac4053f..86a63a9 100644 --- a/backend/project/api/users/views.py +++ b/backend/project/api/users/views.py @@ -8,6 +8,10 @@ from rest_framework.viewsets import ModelViewSet from api.events.models import Event from api.users.models import User 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): @@ -55,3 +59,42 @@ class RegisterUsersFromExcelView(APIView): return Response( {"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