From 304fb169af4cc3e6dada5b2c7a92282046ef1bf6 Mon Sep 17 00:00:00 2001 From: Mario <mario.michelessa@student-cs.fr> Date: Fri, 7 Dec 2018 02:37:18 +0100 Subject: [PATCH] test --- profiles/admin.py | 29 +++++++++++++++++++++++++---- users/admin.py | 2 -- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/profiles/admin.py b/profiles/admin.py index 82207b0..4f00aa1 100644 --- a/profiles/admin.py +++ b/profiles/admin.py @@ -3,26 +3,47 @@ from django.contrib import admin from .models import Student, Tutor +import csv +from django.http import HttpResponse +class ExportCsvMixin: + 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 = "Export Selected" + class ProfileAdminMixin: """Common functionalities for profile admin panels.""" search_fields = ('user__email', 'user__first_name', 'user__last_name',) - + actions = ["export_as_csv"] @admin.register(Tutor) -class TutorAdmin(ProfileAdminMixin, admin.ModelAdmin): +class TutorAdmin(ProfileAdminMixin, admin.ModelAdmin,ExportCsvMixin): """Tutor admin panel.""" autocomplete_fields = ('address',) class Meta: # noqa model = Tutor - + actions = ["export_as_csv"] @admin.register(Student) -class StudentAdmin(ProfileAdminMixin, admin.ModelAdmin): +class StudentAdmin(ProfileAdminMixin, admin.ModelAdmin,ExportCsvMixin): """Student admin panel.""" class Meta: # noqa model = Student + actions = ["export_as_csv"] \ No newline at end of file diff --git a/users/admin.py b/users/admin.py index 5131546..986f9a7 100644 --- a/users/admin.py +++ b/users/admin.py @@ -8,7 +8,6 @@ from visits.admin import ParticipationInline from .models import User - class UserParticipationInline(ParticipationInline): """Inline for Participation on the User admin panel. @@ -55,5 +54,4 @@ class CustomUserAdmin(UserAdmin): 'fields': ('email', 'password1', 'password2')} ), ) - inlines = (UserParticipationInline, ) -- GitLab