From 830aba984e145ba30e78365e141f9c7e0b721f1c Mon Sep 17 00:00:00 2001 From: Dorian Lesbre Date: Thu, 21 Jan 2021 20:32:36 +0100 Subject: [PATCH] Added bds/members to export members list as CSV --- bds/urls.py | 1 + bds/views.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/bds/urls.py b/bds/urls.py index f0877e3f..93c60b0d 100644 --- a/bds/urls.py +++ b/bds/urls.py @@ -14,4 +14,5 @@ urlpatterns = [ name="user.create.fromclipper", ), path("user/delete/", views.UserDeleteView.as_view(), name="user.delete"), + path("members", views.export_members, name="export.members"), ] diff --git a/bds/views.py b/bds/views.py index 0318d1e6..540865b1 100644 --- a/bds/views.py +++ b/bds/views.py @@ -1,5 +1,9 @@ +import csv + from django.contrib import messages from django.contrib.auth import get_user_model +from django.contrib.auth.decorators import permission_required +from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.urls import reverse, reverse_lazy from django.utils.translation import gettext_lazy as _ @@ -128,3 +132,21 @@ class UserDeleteView(StaffRequiredMixin, DeleteView): messages.success(request, self.success_message) return super().delete(request, *args, **kwargs) + + +@permission_required("bds.is_team") +def export_members(request): + response = HttpResponse(content_type="text/csv") + response["Content-Disposition"] = "attachment; filename=membres_bds.csv" + + writer = csv.writer(response) + for profile in BDSProfile.objects.filter(is_member=True).all(): + user = profile.user + bits = [ + user.username, + user.get_full_name(), + user.email, + ] + writer.writerow([str(bit) for bit in bits]) + + return response