add excel export option

v1-0-stable
Christian Merten 6 years ago
parent 541f7cc080
commit fa50517e88

@ -1,6 +1,13 @@
import os
from django.contrib import admin
from wsgiref.util import FileWrapper
from django.http import HttpResponse
from django.conf import settings
from .models import Group, Termin
import xlsxwriter
class GroupAdmin(admin.ModelAdmin):
list_display = ('name',)
@ -8,7 +15,37 @@ class GroupAdmin(admin.ModelAdmin):
class TerminAdmin(admin.ModelAdmin):
list_display = ('title','start_date', 'end_date', 'group')
list_filter = ('group',)
ordering = ('start_date','end_date')
actions = ['make_overview']
def make_overview(self, request, queryset):
filename = 'termine.xlsx'
workbook = xlsxwriter.Workbook(media_path(filename))
bold = workbook.add_format({'bold': True})
worksheet = workbook.add_worksheet()
worksheet.write(0, 0, "Titel", bold)
worksheet.write(0, 1, "Von", bold)
worksheet.write(0, 2, "Bis", bold)
worksheet.write(0, 3, "Gruppe", bold)
for row, termin in enumerate(queryset):
worksheet.write(row+2, 0, termin.title)
worksheet.write(row+2, 1, termin.start_date.strftime('%d.%m.%Y'))
worksheet.write(row+2, 2, termin.end_date.strftime('%d.%m.%Y'))
worksheet.write(row+2, 3, str(termin.group))
workbook.close()
with open(media_path(filename), 'rb') as xls:
response = HttpResponse(FileWrapper(xls))
response['Content-Type'] = 'application/xlsx'
response['Content-Disposition'] = 'attachment; filename='+filename
return response
make_overview.short_description = "Termine in Excel Liste überführen"
# Register your models here.
admin.site.register(Group, GroupAdmin)
admin.site.register(Termin, TerminAdmin)
def media_path(fp):
return os.path.join(os.path.join(settings.MEDIA_MEMBERLISTS, "memberlists"), fp)

Loading…
Cancel
Save