You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/ludwigsburgalpin/admin.py

73 lines
3.3 KiB
Python

import xlsxwriter
from contrib.media import ensure_media_dir
from contrib.media import media_path
from contrib.media import serve_media
from django.contrib import admin
from .models import Termin
class TerminAdmin(admin.ModelAdmin):
list_display = ("title", "start_date", "end_date", "group", "category", "responsible")
list_filter = ("group",)
ordering = ("start_date", "end_date")
actions = ["make_overview"]
def make_overview(self, request, queryset):
ensure_media_dir()
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, "Untertitel", bold)
worksheet.write(0, 2, "Von", bold)
worksheet.write(0, 3, "Bis", bold)
worksheet.write(0, 4, "Gruppe", bold)
worksheet.write(0, 5, "Kategorie", bold)
worksheet.write(0, 6, "Technik", bold)
worksheet.write(0, 7, "Kondition", bold)
worksheet.write(0, 8, "Saison", bold)
worksheet.write(0, 9, "Eventart", bold)
worksheet.write(0, 10, "Klassifizierung", bold)
worksheet.write(0, 11, "Höhenmeter (Meter)", bold)
worksheet.write(0, 12, "Strecke (Kilometer)", bold)
worksheet.write(0, 13, "Etappendauer (Stunden)", bold)
worksheet.write(0, 14, "Voraussetzungen", bold)
worksheet.write(0, 15, "Beschreibung", bold)
worksheet.write(0, 16, "Ausrüstung", bold)
worksheet.write(0, 17, "Max. Teilnehmerzahl", bold)
worksheet.write(0, 18, "Organisator", bold)
worksheet.write(0, 19, "Telefonnummer", bold)
worksheet.write(0, 20, "Emailadresse", bold)
for row, termin in enumerate(queryset):
worksheet.write(row + 2, 0, termin.title)
worksheet.write(row + 2, 1, termin.subtitle)
worksheet.write(row + 2, 2, termin.start_date.strftime("%d.%m.%Y"))
worksheet.write(row + 2, 3, termin.end_date.strftime("%d.%m.%Y"))
worksheet.write(row + 2, 4, termin.group)
worksheet.write(row + 2, 5, termin.category)
worksheet.write(row + 2, 6, termin.technik)
worksheet.write(row + 2, 7, termin.condition)
worksheet.write(row + 2, 8, termin.saison)
worksheet.write(row + 2, 9, termin.eventart)
worksheet.write(row + 2, 10, termin.klassifizierung)
worksheet.write(row + 2, 11, termin.anforderung_hoehe)
worksheet.write(row + 2, 12, termin.anforderung_strecke)
worksheet.write(row + 2, 13, termin.anforderung_dauer)
worksheet.write(row + 2, 14, termin.voraussetzungen)
worksheet.write(row + 2, 15, termin.description)
worksheet.write(row + 2, 16, termin.equipment)
worksheet.write(row + 2, 17, termin.max_participants)
worksheet.write(row + 2, 18, termin.responsible)
worksheet.write(row + 2, 19, termin.phone)
worksheet.write(row + 2, 20, termin.email)
workbook.close()
return serve_media(filename, "application/xlsx")
make_overview.short_description = "Termine in Excel Liste überführen"
# Register your models here.
admin.site.register(Termin, TerminAdmin)