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): 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',) list_filter = ('group',)
ordering = ('start_date','end_date') ordering = ('start_date','end_date')
actions = ['make_overview'] actions = ['make_overview']
@ -21,22 +21,48 @@ class TerminAdmin(admin.ModelAdmin):
bold = workbook.add_format({'bold': True}) bold = workbook.add_format({'bold': True})
worksheet = workbook.add_worksheet() worksheet = workbook.add_worksheet()
worksheet.write(0, 0, "Titel", bold) worksheet.write(0, 0, "Titel", bold)
worksheet.write(0, 1, "Von", bold) worksheet.write(0, 1, "Untertitel", bold)
worksheet.write(0, 2, "Bis", bold) worksheet.write(0, 2, "Von", bold)
worksheet.write(0, 3, "Gruppe", bold) worksheet.write(0, 3, "Bis", bold)
worksheet.write(0, 4, "Organisator", bold) worksheet.write(0, 4, "Gruppe", bold)
worksheet.write(0, 5, "Telefonnummer", bold) worksheet.write(0, 5, "Kategorie", bold)
worksheet.write(0, 6, "Emailadresse", bold) worksheet.write(0, 6, "Technik", bold)
worksheet.write(0, 7, "Tourenbeschreibung/Anforderung", 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): for row, termin in enumerate(queryset):
worksheet.write(row+2, 0, termin.title) worksheet.write(row+2, 0, termin.title)
worksheet.write(row+2, 1, termin.start_date.strftime('%d.%m.%Y')) worksheet.write(row+2, 1, termin.subtitle)
worksheet.write(row+2, 2, termin.end_date.strftime('%d.%m.%Y')) worksheet.write(row+2, 2, termin.start_date.strftime('%d.%m.%Y'))
worksheet.write(row+2, 3, termin.group) worksheet.write(row+2, 3, termin.end_date.strftime('%d.%m.%Y'))
worksheet.write(row+2, 4, termin.responsible) worksheet.write(row+2, 4, termin.group)
worksheet.write(row+2, 5, termin.phone) worksheet.write(row+2, 5, termin.category)
worksheet.write(row+2, 6, termin.email) worksheet.write(row+2, 6, termin.technik)
worksheet.write(row+2, 7, termin.description) 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() workbook.close()
with open(media_path(filename), 'rb') as xls: with open(media_path(filename), 'rb') as xls:
response = HttpResponse(FileWrapper(xls)) response = HttpResponse(FileWrapper(xls))

@ -1,16 +1,117 @@
from django.db import models 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. # Create your models here.
class Termin(models.Model): class Termin(models.Model):
title = models.CharField('Titel', max_length=100) title = models.CharField('Titel', max_length=100)
subtitle = models.CharField('Untertitel', max_length=100, blank=True)
start_date = models.DateField('Von') start_date = models.DateField('Von')
end_date = models.DateField('Bis') end_date = models.DateField('Bis')
group = models.CharField(verbose_name='Gruppe', max_length=100, default="", blank=True) group = models.CharField('Gruppe',
responsible = models.CharField('Organisator', max_length=100, blank=True) 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) phone = models.CharField(max_length=20, verbose_name='Telefonnumer', blank=True)
email = models.EmailField(max_length=100, verbose_name='Email', blank=True) email = models.EmailField(max_length=100, verbose_name='Email', blank=False)
description = models.TextField('Tourenbeschreibung/Anforderung', blank=True) 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): def __str__(self):
return "{} {}".format(self.title, str(self.group)) return "{} {}".format(self.title, str(self.group))

@ -2,28 +2,65 @@ from django.shortcuts import render
from django import forms from django import forms
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.contrib.admin import widgets 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'}) datepicker = forms.TextInput(attrs={'class': 'datepicker'})
class TerminForm(forms.Form): class TerminForm(forms.Form):
title = forms.CharField(label='Titel') title = forms.CharField(label='Titel')
subtitle = forms.CharField(label='Untertitel')
start_date = forms.DateField(label='Von', start_date = forms.DateField(label='Von',
widget=datepicker) widget=datepicker)
end_date = forms.DateField(label='Bis', end_date = forms.DateField(label='Bis',
widget=datepicker) widget=datepicker)
group = forms.CharField(label='Gruppe', group = forms.ChoiceField(label='Gruppe',
required=False) 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, responsible = forms.CharField(label='Organisator', max_length=100,
required=False) required=False)
phone = forms.CharField(max_length=20, label='Telefonnumer', phone = forms.CharField(max_length=20, label='Telefonnumer',
required=False) required=False)
email = forms.EmailField(max_length=100, label='Email', email = forms.EmailField(max_length=100, label='Email',
required=False) required=False)
description = forms.CharField(label='Tourenbeschreibung/Anforderung',
widget=forms.Textarea,
required=False)
# Create your views here. # Create your views here.
@ -32,12 +69,25 @@ def index(request):
form = TerminForm(request.POST) form = TerminForm(request.POST)
if form.is_valid(): if form.is_valid():
termin = Termin(title=form.cleaned_data["title"], termin = Termin(title=form.cleaned_data["title"],
subtitle=form.cleaned_data["subtitle"],
start_date=form.cleaned_data["start_date"], start_date=form.cleaned_data["start_date"],
end_date=form.cleaned_data["end_date"], end_date=form.cleaned_data["end_date"],
group=form.cleaned_data["group"], group=form.cleaned_data["group"],
responsible=form.cleaned_data["responsible"], responsible=form.cleaned_data["responsible"],
phone=form.cleaned_data["phone"], phone=form.cleaned_data["phone"],
email=form.cleaned_data["email"], 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"]) description=form.cleaned_data["description"])
termin.save() termin.save()
return published(request) return published(request)

Loading…
Cancel
Save