add a bunch of new fields for LBAlpin termine

v1-0-stable
Christian Merten 3 years ago
parent d8d42d9693
commit 461f7bbdc1
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -10,7 +10,7 @@ import xlsxwriter
class TerminAdmin(admin.ModelAdmin):
list_display = ('title','start_date', 'end_date', 'group', 'responsible')
list_display = ('title','start_date', 'end_date', 'group', 'category', 'responsible')
list_filter = ('group',)
ordering = ('start_date','end_date')
actions = ['make_overview']
@ -21,22 +21,48 @@ class TerminAdmin(admin.ModelAdmin):
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)
worksheet.write(0, 4, "Organisator", bold)
worksheet.write(0, 5, "Telefonnummer", bold)
worksheet.write(0, 6, "Emailadresse", bold)
worksheet.write(0, 7, "Tourenbeschreibung/Anforderung", 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.start_date.strftime('%d.%m.%Y'))
worksheet.write(row+2, 2, termin.end_date.strftime('%d.%m.%Y'))
worksheet.write(row+2, 3, termin.group)
worksheet.write(row+2, 4, termin.responsible)
worksheet.write(row+2, 5, termin.phone)
worksheet.write(row+2, 6, termin.email)
worksheet.write(row+2, 7, termin.description)
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()
with open(media_path(filename), 'rb') as xls:
response = HttpResponse(FileWrapper(xls))

@ -1,16 +1,117 @@
from django.db import models
from django.core.validators import MinValueValidator
GRUPPE = [
('ASG', 'Alpinsportgruppe'),
('OGB', 'Ortsgruppe Bietigheim'),
('OGV', 'Ortsgruppe Vaihingen'),
('JUG', 'Jugend'),
('FAM', 'Familen'),
('Ü30', 'Ü30'),
('MTB', 'Mountainbike'),
('RA', 'RegioAktiv'),
('SEK', 'Sektion'),
]
KATEGORIE = [
('WAN', 'Wandern'),
('BW', 'Bergwandern'),
('KST', 'Klettersteig'),
('KL', 'Klettern'),
('SKI', 'Piste, Loipe'),
('SCH', 'Schneeschuhgehen'),
('ST', 'Skitour'),
('STH', 'Skihochtour'),
('HT', 'Hochtour'),
('MTB', 'Montainbike'),
('AUS', 'Ausbildung'),
('SON', 'Sonstiges z.B. Treffen')
]
KONDITION = [
('gering', 'gering'),
('mittel', 'mittel'),
('groß', 'groß'),
('sehr groß', 'sehr groß'),
]
TECHNIK = [
('leicht', 'leicht'),
('mittel', 'mittel'),
('schwer', 'schwer'),
('sehr schwer', 'sehr schwer'),
]
SAISON = [
('ganzjährig','ganzjährig'),
('Indoor', 'Indoor'),
('Sommer', 'Sommer'),
('Winter', 'Winter'),
]
EVENTART = [
('Einzeltermin', 'Einzeltermin',),
('Mehrtagesevent', 'Mehrtagesevent',),
('Regelmäßiges Event/Training', 'Regelmäßiges Event/Training',),
('Tagesevent', 'Tagesevent',),
('Wochenendevent', 'Wochenendevent',),
]
KLASSIFIZIERUNG = [
('Gemeinschaftstour', 'Gemeinschaftstour'),
('Ausbildung', 'Ausbildung'),
]
# Create your models here.
class Termin(models.Model):
title = models.CharField('Titel', max_length=100)
subtitle = models.CharField('Untertitel', max_length=100, blank=True)
start_date = models.DateField('Von')
end_date = models.DateField('Bis')
group = models.CharField(verbose_name='Gruppe', max_length=100, default="", blank=True)
responsible = models.CharField('Organisator', max_length=100, blank=True)
group = models.CharField('Gruppe',
choices=GRUPPE,
max_length=100)
responsible = models.CharField('Organisator', max_length=100, blank=False)
phone = models.CharField(max_length=20, verbose_name='Telefonnumer', blank=True)
email = models.EmailField(max_length=100, verbose_name='Email', blank=True)
description = models.TextField('Tourenbeschreibung/Anforderung', blank=True)
email = models.EmailField(max_length=100, verbose_name='Email', blank=False)
category = models.CharField('Kategorie', blank=False, choices=KATEGORIE, max_length=100,
default='SON')
condition = models.CharField('Kondition', blank=False, choices=KONDITION, max_length=100,
default='mittel')
technik = models.CharField('Technik', blank=False, choices=TECHNIK, max_length=100,
default='mittel')
saison = models.CharField('Saison', blank=False, choices=SAISON, max_length=100,
default='ganzjährig')
eventart = models.CharField('Eventart', blank=False, choices=EVENTART, max_length=100,
default='Einzeltermin')
klassifizierung = models.CharField('Klassifizierung', blank=False, choices=KLASSIFIZIERUNG,
max_length=100,
default='Gemeinschaftstour')
equipment = models.TextField('Ausrüstung',
blank=True)
voraussetzungen = models.TextField('Voraussetzungen',
blank=True)
description = models.TextField('Beschreibung',
blank=True)
max_participants = models.IntegerField('Max. Teilnehmerzahl',
blank=False,
validators=[
MinValueValidator(1)
],
default=10)
anforderung_hoehe = models.IntegerField('Höhenmeter in Meter',
blank=True,
validators=[
MinValueValidator(0)
],
default=0)
anforderung_strecke = models.IntegerField('Strecke in Kilometer',
blank=True,
validators=[
MinValueValidator(0)
],
default=0)
anforderung_dauer = models.IntegerField('Etappendauer in Stunden',
blank=True,
validators=[
MinValueValidator(0)
],
default=0)
def __str__(self):
return "{} {}".format(self.title, str(self.group))

@ -2,28 +2,65 @@ from django.shortcuts import render
from django import forms
from django.http import HttpResponseRedirect
from django.contrib.admin import widgets
from .models import Termin
from django.core.validators import MinValueValidator
from .models import Termin, GRUPPE, KATEGORIE, KONDITION, TECHNIK, SAISON, EVENTART, KLASSIFIZIERUNG
datepicker = forms.TextInput(attrs={'class': 'datepicker'})
class TerminForm(forms.Form):
title = forms.CharField(label='Titel')
subtitle = forms.CharField(label='Untertitel')
start_date = forms.DateField(label='Von',
widget=datepicker)
end_date = forms.DateField(label='Bis',
widget=datepicker)
group = forms.CharField(label='Gruppe',
group = forms.ChoiceField(label='Gruppe',
required=True,
choices=GRUPPE)
category = forms.ChoiceField(label='Kategorie', required=True, choices=KATEGORIE)
condition = forms.ChoiceField(label='Kondition', required=True, choices=KONDITION)
technik = forms.ChoiceField(label='Technik', required=True, choices=TECHNIK)
saison = forms.ChoiceField(label='Saison', required=True, choices=SAISON)
eventart = forms.ChoiceField(label='Eventart', required=True, choices=EVENTART)
klassifizierung = forms.ChoiceField(label='Klassifizierung', required=True, choices=KLASSIFIZIERUNG)
anforderung_hoehe = forms.IntegerField(label='Höhenmeter in Meter',
required=True,
validators=[
MinValueValidator(0)
])
anforderung_strecke = forms.IntegerField(label='Strecke in Kilometer',
required=True,
validators=[
MinValueValidator(0)
])
anforderung_dauer = forms.IntegerField(label='Etappendauer in Stunden',
required=True,
validators=[
MinValueValidator(0)
])
equipment = forms.CharField(label='Ausrüstung',
widget=forms.Textarea,
required=False)
voraussetzungen = forms.CharField(label='Voraussetzungen',
widget=forms.Textarea,
required=False)
description = forms.CharField(label='Beschreibung',
widget=forms.Textarea,
required=False)
max_participants = forms.IntegerField(label='Max. Teilnehmerzahl',
required=True,
validators=[
MinValueValidator(1)
])
responsible = forms.CharField(label='Organisator', max_length=100,
required=False)
phone = forms.CharField(max_length=20, label='Telefonnumer',
required=False)
email = forms.EmailField(max_length=100, label='Email',
required=False)
description = forms.CharField(label='Tourenbeschreibung/Anforderung',
widget=forms.Textarea,
required=False)
# Create your views here.
@ -32,12 +69,25 @@ def index(request):
form = TerminForm(request.POST)
if form.is_valid():
termin = Termin(title=form.cleaned_data["title"],
subtitle=form.cleaned_data["subtitle"],
start_date=form.cleaned_data["start_date"],
end_date=form.cleaned_data["end_date"],
group=form.cleaned_data["group"],
responsible=form.cleaned_data["responsible"],
phone=form.cleaned_data["phone"],
email=form.cleaned_data["email"],
category=form.cleaned_data["category"],
condition=form.cleaned_data["condition"],
technik=form.cleaned_data["technik"],
saison=form.cleaned_data["saison"],
eventart=form.cleaned_data["eventart"],
klassifizierung=form.cleaned_data["klassifizierung"],
equipment=form.cleaned_data["equipment"],
voraussetzungen=form.cleaned_data["voraussetzungen"],
max_participants=form.cleaned_data["max_participants"],
anforderung_hoehe=form.cleaned_data["anforderung_hoehe"],
anforderung_strecke=form.cleaned_data["anforderung_strecke"],
anforderung_dauer=form.cleaned_data["anforderung_dauer"],
description=form.cleaned_data["description"])
termin.save()
return published(request)

Loading…
Cancel
Save