Skip to content
Snippets Groups Projects
Unverified Commit 5d602df0 authored by AuStrasser's avatar AuStrasser Committed by GitHub
Browse files

Merge pull request #7 from oser-cs/dev

Dev
parents 68c554c4 4e98aa87
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
from django.contrib import admin from django.contrib import admin
from .models import Document, Address from .models import Document, Address
# Register your models here. # Register your models here.
......
...@@ -3,26 +3,47 @@ ...@@ -3,26 +3,47 @@
from django.contrib import admin from django.contrib import admin
from .models import Student, Tutor 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: class ProfileAdminMixin:
"""Common functionalities for profile admin panels.""" """Common functionalities for profile admin panels."""
search_fields = ('user__email', 'user__first_name', 'user__last_name',) search_fields = ('user__email', 'user__first_name', 'user__last_name',)
actions = ["export_as_csv"]
@admin.register(Tutor) @admin.register(Tutor)
class TutorAdmin(ProfileAdminMixin, admin.ModelAdmin): class TutorAdmin(ProfileAdminMixin, admin.ModelAdmin,ExportCsvMixin):
"""Tutor admin panel.""" """Tutor admin panel."""
autocomplete_fields = ('address',) autocomplete_fields = ('address',)
class Meta: # noqa class Meta: # noqa
model = Tutor model = Tutor
actions = ["export_as_csv"]
@admin.register(Student) @admin.register(Student)
class StudentAdmin(ProfileAdminMixin, admin.ModelAdmin): class StudentAdmin(ProfileAdminMixin, admin.ModelAdmin,ExportCsvMixin):
"""Student admin panel.""" """Student admin panel."""
class Meta: # noqa class Meta: # noqa
model = Student model = Student
actions = ["export_as_csv"]
\ No newline at end of file
...@@ -80,17 +80,6 @@ class EditionFormAdmin(admin.ModelAdmin): ...@@ -80,17 +80,6 @@ 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']
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) @admin.register(Participation)
class ParticipationAdmin(admin.ModelAdmin): class ParticipationAdmin(admin.ModelAdmin):
......
...@@ -7,7 +7,8 @@ from django.utils.translation import ugettext_lazy as _ ...@@ -7,7 +7,8 @@ from django.utils.translation import ugettext_lazy as _
from visits.admin import ParticipationInline from visits.admin import ParticipationInline
from .models import User from .models import User
from django.http import HttpResponse
import csv
class UserParticipationInline(ParticipationInline): class UserParticipationInline(ParticipationInline):
"""Inline for Participation on the User admin panel. """Inline for Participation on the User admin panel.
...@@ -55,5 +56,21 @@ class CustomUserAdmin(UserAdmin): ...@@ -55,5 +56,21 @@ class CustomUserAdmin(UserAdmin):
'fields': ('email', 'password1', 'password2')} 'fields': ('email', 'password1', 'password2')}
), ),
) )
inlines = (UserParticipationInline, ) 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"
...@@ -5,7 +5,8 @@ from django.contrib import admin, messages ...@@ -5,7 +5,8 @@ from django.contrib import admin, messages
from django.template.defaultfilters import pluralize from django.template.defaultfilters import pluralize
from django.urls import reverse from django.urls import reverse
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.http import HttpResponse
import csv
from .models import Participation, Place, Visit from .models import Participation, Place, Visit
# Register your models here. # Register your models here.
...@@ -125,6 +126,23 @@ class ParticipationAdmin(admin.ModelAdmin): ...@@ -125,6 +126,23 @@ class ParticipationAdmin(admin.ModelAdmin):
user_link.short_description = 'Utilisateur' 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) @admin.register(Visit.organizers.through)
class VisitOrganizersAdmin(admin.ModelAdmin): class VisitOrganizersAdmin(admin.ModelAdmin):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment