diff --git a/core/admin.py b/core/admin.py index 6fdc096608eecce62d4f0fdc9e540f4d41b8a29d..65d11365a77c2a098fcee2cd2b16ce30fc7741ca 100644 --- a/core/admin.py +++ b/core/admin.py @@ -2,7 +2,6 @@ from django.contrib import admin from .models import Document, Address - # Register your models here. diff --git a/projects/admin.py b/projects/admin.py index 2cdb4266757018f0fb6555f001160b373f76d267..5a65a46fdfe9f65c4e90bd4f5293542db2ec39bb 100644 --- a/projects/admin.py +++ b/projects/admin.py @@ -80,17 +80,6 @@ class EditionFormAdmin(admin.ModelAdmin): list_display = ('form', 'deadline', 'recipient',) list_filter = ('edition', 'deadline',) - actions = ['download_csv'] - - def download_csv(self, request, queryset): - """Download entries of selected edition forms under a ZIP file.""" - form_ids = queryset.values_list('form__id', flat=True) - forms = Form.objects.filter(id__in=form_ids) - return download_multiple_forms_entries(request, forms=forms) - - download_csv.short_description = ( - 'Télécharger les résponses des formulaires sélectionnés') - @admin.register(Participation) class ParticipationAdmin(admin.ModelAdmin): diff --git a/users/admin.py b/users/admin.py index 986f9a7096a9c893503b6912dae93d9d1e36836b..aa7448e1e334df64de7766d61e983677d798ee02 100644 --- a/users/admin.py +++ b/users/admin.py @@ -7,6 +7,8 @@ from django.utils.translation import ugettext_lazy as _ from visits.admin import ParticipationInline from .models import User +from django.http import HttpResponse +import csv class UserParticipationInline(ParticipationInline): """Inline for Participation on the User admin panel. @@ -55,3 +57,20 @@ class CustomUserAdmin(UserAdmin): ), ) inlines = (UserParticipationInline, ) + + actions = ["export_as_csv"] + + def export_as_csv(self, request, queryset): + meta = self.model._meta + field_names = [field.name for field in meta.fields] + + response = HttpResponse(content_type='text/csv') + response['Content-Disposition'] = 'attachment; filename={}.csv'.format( + meta) + writer = csv.writer(response) + writer.writerow(field_names) + for obj in queryset: + row = writer.writerow([getattr(obj, field) + for field in field_names]) + return response + export_as_csv.short_description = "Exporter au format CSV" diff --git a/visits/admin.py b/visits/admin.py index 2b0fcb53bb779b69d1484f2de4c6979adc735a79..ee2f13677629d8edd9f0007ba38b4a8450b6e851 100644 --- a/visits/admin.py +++ b/visits/admin.py @@ -5,7 +5,8 @@ from django.contrib import admin, messages from django.template.defaultfilters import pluralize from django.urls import reverse from django.utils.safestring import mark_safe - +from django.http import HttpResponse +import csv from .models import Participation, Place, Visit # Register your models here. @@ -117,12 +118,30 @@ class ParticipationAdmin(admin.ModelAdmin): 'accepted', 'present') list_filter = ('submitted', 'accepted', 'present') actions = [accept_selected_participations, reject_selected_participations] - def user_link (self,book): - url=reverse("admin:users_user_change", args=[book.user.id]) + + def user_link(self, book): + url = reverse("admin:users_user_change", args=[book.user.id]) link = '<a href="%s">%s</a>' % (url, book.user.email) return mark_safe(link) user_link.short_description = 'Utilisateur' + actions = ["export_as_csv"] + + def export_as_csv(self, request, queryset): + meta = self.model._meta + field_names = [field.name for field in meta.fields] + + response = HttpResponse(content_type='text/csv') + response['Content-Disposition'] = 'attachment; filename={}.csv'.format( + meta) + writer = csv.writer(response) + writer.writerow(field_names) + for obj in queryset: + row = writer.writerow([getattr(obj, field) + for field in field_names]) + return response + export_as_csv.short_description = "Exporter au format CSV" + @admin.register(Visit.organizers.through) class VisitOrganizersAdmin(admin.ModelAdmin):