|
|
|
@ -1,6 +1,13 @@
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
|
|
from django.contrib import admin
|
|
|
|
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
|
|
|
|
from .models import Group, Termin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import xlsxwriter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GroupAdmin(admin.ModelAdmin):
|
|
|
|
class GroupAdmin(admin.ModelAdmin):
|
|
|
|
list_display = ('name',)
|
|
|
|
list_display = ('name',)
|
|
|
|
@ -8,7 +15,37 @@ class GroupAdmin(admin.ModelAdmin):
|
|
|
|
|
|
|
|
|
|
|
|
class TerminAdmin(admin.ModelAdmin):
|
|
|
|
class TerminAdmin(admin.ModelAdmin):
|
|
|
|
list_display = ('title','start_date', 'end_date', 'group')
|
|
|
|
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.
|
|
|
|
# Register your models here.
|
|
|
|
admin.site.register(Group, GroupAdmin)
|
|
|
|
admin.site.register(Group, GroupAdmin)
|
|
|
|
admin.site.register(Termin, TerminAdmin)
|
|
|
|
admin.site.register(Termin, TerminAdmin)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def media_path(fp):
|
|
|
|
|
|
|
|
return os.path.join(os.path.join(settings.MEDIA_MEMBERLISTS, "memberlists"), fp)
|
|
|
|
|