cue
2024-04-02 21:32:13 +03:00
3 changed files with 36 additions and 0 deletions
+6
View File
@@ -2,6 +2,7 @@ from django.urls import include, path
from rest_framework import routers from rest_framework import routers
from api.users.views import ( from api.users.views import (
DownloadUsersFromExcelView,
RegisterUsersFromExcelView, RegisterUsersFromExcelView,
UserViewSet, UserViewSet,
) )
@@ -19,4 +20,9 @@ urlpatterns = [
RegisterUsersFromExcelView.as_view(), RegisterUsersFromExcelView.as_view(),
name="excel-upload", name="excel-upload",
), ),
path(
"download/excel/<event_id>/",
DownloadUsersFromExcelView.as_view(),
name="excel-download",
)
] ]
+25
View File
@@ -1,5 +1,8 @@
import io
import pandas as pd import pandas as pd
from django.http import FileResponse
from rest_framework import status from rest_framework import status
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.views import APIView from rest_framework.views import APIView
@@ -55,3 +58,25 @@ 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 DownloadUsersFromExcelView(APIView):
def get(self, _, event_id):
try:
users = Event.objects.get(pk=event_id).users
except Event.DoesNotExist:
return Response(
{"error": "Event does not exist"},
status=status.HTTP_404_NOT_FOUND,
)
serializer = UserSerializer(users, many=True)
data = serializer.data
data = pd.DataFrame(data)
excel_data = io.BytesIO()
data.to_excel(excel_data, index=False)
excel_data.seek(0)
return FileResponse(excel_data, filename="users.xlsx")
+5
View File
@@ -69,6 +69,11 @@
"eslint-plugin-react": "^7.34.1", "eslint-plugin-react": "^7.34.1",
"eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.6", "eslint-plugin-react-refresh": "^0.4.6",
<<<<<<< HEAD
=======
"prettier": "^3.2.5",
"@vitejs/plugin-react": "^4.2.0",
>>>>>>> 8d6323a364a5b30124a1b7ce60c092cb70e50a9e
"postcss": "^8.4.32", "postcss": "^8.4.32",
"prettier": "^3.2.5", "prettier": "^3.2.5",
"tailwindcss": "^3.3.5", "tailwindcss": "^3.3.5",