Newer
Older
from django.http import HttpResponse
from home.models import InterludesActivity, InterludesParticipant, ActivityList
admin.site.site_header = "Administration site interludes"
# Tag html <title>
admin.site.site_title = "Admin Interludes"
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
56
57
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