forked from DGNum/gestioCOF
Merge branch 'dodo/bds_export_csv' into 'master'
Dodo/bds export csv Closes #285 See merge request klub-dev-ens/gestioCOF!481
This commit is contained in:
commit
ba9aa06b4f
4 changed files with 34 additions and 2 deletions
|
@ -29,6 +29,10 @@ adhérents ni des cotisations.
|
||||||
ses places pour pouvoir revendre.
|
ses places pour pouvoir revendre.
|
||||||
- On s'assure que les emails dans les demandes de petits cours sont valides.
|
- On s'assure que les emails dans les demandes de petits cours sont valides.
|
||||||
|
|
||||||
|
### BDS
|
||||||
|
|
||||||
|
- Le buro peut exporter la liste de membres avec email au format CSV depuis la page d'acceuil.
|
||||||
|
|
||||||
### K-Fêt
|
### K-Fêt
|
||||||
|
|
||||||
- On affiche les articles actuellement en vente en premier lors des inventaires
|
- On affiche les articles actuellement en vente en premier lors des inventaires
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<section class="section">
|
<section class="section">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="content has-text-centered">
|
<div class="content has-text-centered">
|
||||||
<h1>{{ member_count }}</h1>
|
<h1>{{ member_count }}</h1>
|
||||||
adhérent·e·s
|
adhérent·e·s
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -34,6 +34,11 @@
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
<a class=button href="{% url 'export.members' %}">Télécharger la liste des membres (CSV)</a>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
Le site est encore en développement.
|
Le site est encore en développement.
|
||||||
<br>
|
<br>
|
||||||
Suivez notre avancement sur
|
Suivez notre avancement sur
|
||||||
|
@ -52,4 +57,4 @@
|
||||||
{% endblock layout %}
|
{% endblock layout %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,4 +14,5 @@ urlpatterns = [
|
||||||
name="user.create.fromclipper",
|
name="user.create.fromclipper",
|
||||||
),
|
),
|
||||||
path("user/delete/<int:pk>", views.UserDeleteView.as_view(), name="user.delete"),
|
path("user/delete/<int:pk>", views.UserDeleteView.as_view(), name="user.delete"),
|
||||||
|
path("members", views.export_members, name="export.members"),
|
||||||
]
|
]
|
||||||
|
|
22
bds/views.py
22
bds/views.py
|
@ -1,5 +1,9 @@
|
||||||
|
import csv
|
||||||
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth import get_user_model
|
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.shortcuts import get_object_or_404
|
||||||
from django.urls import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
@ -128,3 +132,21 @@ class UserDeleteView(StaffRequiredMixin, DeleteView):
|
||||||
messages.success(request, self.success_message)
|
messages.success(request, self.success_message)
|
||||||
|
|
||||||
return super().delete(request, *args, **kwargs)
|
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
|
||||||
|
|
Loading…
Reference in a new issue