Skip to content

Commit e3915d6

Browse files
committed
Add export csv file with event attendees
1 parent 797a2d6 commit e3915d6

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

lego/apps/events/views.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import csv
2+
from django.http import HttpResponse
13
from django.db import transaction
24
from django.db.models import Count, Prefetch, Q
35
from django.http import Http404
@@ -203,6 +205,30 @@ def perform_update(self, serializer):
203205
"""
204206
serializer.save(is_ready=False)
205207

208+
@decorators.action(detail=True, methods=["GET"])
209+
def csv(self, *args, **kwargs):
210+
event = Event.objects.get(pk=kwargs["pk"])
211+
response = HttpResponse(content_type="text/csv")
212+
response["Content-Disposition"] = (
213+
f'attachment; filename="{event.title.replace(" ", "_") + "_attendees"}.csv"'
214+
)
215+
216+
writer = csv.writer(response)
217+
writer.writerow(["full_name", "username", "email", "phone", "grade"])
218+
for pool in event.pools.all():
219+
for participant in pool.registrations.all():
220+
writer.writerow(
221+
[
222+
participant.user.get_full_name(),
223+
participant.user.username,
224+
participant.user.email,
225+
participant.user.phone_number,
226+
participant.user.grade,
227+
]
228+
)
229+
230+
return response
231+
206232
@decorators.action(detail=True, methods=["GET"])
207233
def administrate(self, request, *args, **kwargs):
208234
event_id = self.kwargs.get("pk", None)
@@ -334,6 +360,7 @@ def cover_image_gallery(self, request):
334360
)
335361
serializer = self.get_serializer(queryset, many=True)
336362
return Response(serializer.data)
363+
337364

338365

339366
class PoolViewSet(

0 commit comments

Comments
 (0)