Skip to content
Snippets Groups Projects
Commit c81ed792 authored by chiahetcho's avatar chiahetcho :speech_balloon:
Browse files

added some exportation possibilities for CSV

parent 4147b626
No related branches found
No related tags found
2 merge requests!6Export bdd,!7Dev
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
from django.contrib import admin from django.contrib import admin
from .models import Document, Address from .models import Document, Address
from django.http import HttpResponse
import csv
# Register your models here. # Register your models here.
...@@ -16,6 +17,23 @@ class DocumentAdmin(admin.ModelAdmin): ...@@ -16,6 +17,23 @@ class DocumentAdmin(admin.ModelAdmin):
# reorganize fields # reorganize fields
fields = ('title', 'slug', 'content',) fields = ('title', 'slug', 'content',)
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(Address) @admin.register(Address)
class AddressAdmin(admin.ModelAdmin): class AddressAdmin(admin.ModelAdmin):
......
...@@ -5,6 +5,8 @@ from django.contrib import admin ...@@ -5,6 +5,8 @@ from django.contrib import admin
from dynamicforms.views import download_multiple_forms_entries from dynamicforms.views import download_multiple_forms_entries
from dynamicforms.models import Form from dynamicforms.models import Form
from .models import Edition, Participation, Project, EditionForm from .models import Edition, Participation, Project, EditionForm
from django.http import HttpResponse
import csv
@admin.register(Project) @admin.register(Project)
...@@ -29,6 +31,23 @@ class ProjectAdmin(admin.ModelAdmin): ...@@ -29,6 +31,23 @@ class ProjectAdmin(admin.ModelAdmin):
return obj.total_participations(state=Participation.STATE_ACCEPTED) return obj.total_participations(state=Participation.STATE_ACCEPTED)
total_accepted_participations.short_description = 'Participations totales' total_accepted_participations.short_description = 'Participations totales'
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"
class OrganizersInline(admin.TabularInline): class OrganizersInline(admin.TabularInline):
"""Inline for edition organizers.""" """Inline for edition organizers."""
...@@ -72,6 +91,23 @@ class EditionAdmin(admin.ModelAdmin): ...@@ -72,6 +91,23 @@ class EditionAdmin(admin.ModelAdmin):
return obj.participations.cancelled().count() return obj.participations.cancelled().count()
num_cancelled.short_description = 'Annulés' num_cancelled.short_description = 'Annulés'
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(EditionForm) @admin.register(EditionForm)
class EditionFormAdmin(admin.ModelAdmin): class EditionFormAdmin(admin.ModelAdmin):
...@@ -80,16 +116,22 @@ class EditionFormAdmin(admin.ModelAdmin): ...@@ -80,16 +116,22 @@ class EditionFormAdmin(admin.ModelAdmin):
list_display = ('form', 'deadline', 'recipient',) list_display = ('form', 'deadline', 'recipient',)
list_filter = ('edition', 'deadline',) list_filter = ('edition', 'deadline',)
actions = ['download_csv'] actions = ["export_as_csv"]
def download_csv(self, request, queryset): def export_as_csv(self, request, queryset):
"""Download entries of selected edition forms under a ZIP file.""" meta = self.model._meta
form_ids = queryset.values_list('form__id', flat=True) field_names = [field.name for field in meta.fields]
forms = Form.objects.filter(id__in=form_ids)
return download_multiple_forms_entries(request, forms=forms)
download_csv.short_description = ( response = HttpResponse(content_type='text/csv')
'Télécharger les résponses des formulaires sélectionnés') 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(Participation) @admin.register(Participation)
...@@ -100,3 +142,20 @@ class ParticipationAdmin(admin.ModelAdmin): ...@@ -100,3 +142,20 @@ class ParticipationAdmin(admin.ModelAdmin):
list_filter = ('edition', 'submitted', 'state',) list_filter = ('edition', 'submitted', 'state',)
readonly_fields = ('submitted',) readonly_fields = ('submitted',)
search_fields = ('user__first_name', 'user__last_name', 'user__email',) search_fields = ('user__first_name', 'user__last_name', 'user__email',)
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"
...@@ -8,6 +8,12 @@ from visits.admin import ParticipationInline ...@@ -8,6 +8,12 @@ from visits.admin import ParticipationInline
from .models import User from .models import User
actions = ["export_as_csv"]
def export_as_csv(self, request, queryset):
pass
export_as_csv.short_description = "Export Selected"
class UserParticipationInline(ParticipationInline): class UserParticipationInline(ParticipationInline):
"""Inline for Participation on the User admin panel. """Inline for Participation on the User admin panel.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment