Newer
Older
from django.http import HttpResponse
from home.models import InterludesActivity, InterludesParticipant, ActivityList
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Titre de la vue (objet <h1> dans le html)
admin.site.site_header = "Administration site interludes"
class ExportCsvMixin:
"""class abstraite pour permettre l'export CSV rapide d'un modele"""
def export_as_csv(self, request, queryset):
"""renvoie un fichier CSV contenant l'information du 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:
writer.writerow([getattr(obj, field) for field in field_names])
return response
export_as_csv.short_description = "Exporter au format CSV"
actions = ["export_as_csv"]
@admin.register(InterludesActivity)
class InterludesActivityAdmin(admin.ModelAdmin, ExportCsvMixin):
"""option d'affichage des activités dans la vue django admin"""
list_display = ("title", "host_name", "display", "must_subscribe",)
list_filter = ("display", "must_subscribe",)
ordering = ("title", "host_name",)
list_editable = ("display",)
list_per_page = 100
@admin.register(InterludesParticipant)
class InterludesParticipantAdmin(admin.ModelAdmin, ExportCsvMixin):
"""option d'affichage des participant dans la vue django admin"""
list_display = ("name", "school",)
list_filter = ("school",)
ordering = ("name",)
list_per_page = 200
@admin.register(ActivityList)
class ActivityListAdmin(admin.ModelAdmin, ExportCsvMixin):
"""option d'affichage des choix d'activités dans la vue django admin"""
list_display = ("participant", "priority", "activity",)
list_filter = ("activity", "participant",)
ordering = ("participant", "priority",)
list_per_page = 200