Split ApproachForm, full featured display of transport/journey settings.

This commit is contained in:
2018-02-27 15:59:12 +01:00
parent b97869d690
commit 5d8faa615e
13 changed files with 404 additions and 223 deletions

View File

@@ -1,5 +1,3 @@
- Anzeige Bahnfahrt
- ApproachForm aufteilen
- Save as Draft
- Copy Event
- Tourenreferent managed Gruppen der Subreferenten

View File

@@ -14,6 +14,7 @@ TRAINER_NAME_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
PHONE_NUMBER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
LOCATION_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
TRANSPORT_OTHER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
DEPARTURE_RIDE_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
MEETING_POINT_OTHER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
BASECAMP_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
ACCOMMODATION_OTHER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
@@ -43,9 +44,10 @@ class FieldInitial(object):
'mode': session_data.get('mode', None),
'sport': session_data.get('sport', None),
'level': session_data.get('level', None),
'overnight': str(bool(session_data.get('last_day', None))),
'country': session_data.get('country', None),
'terrain': session_data.get('terrain', None),
'overnight': str(bool(session_data.get('last_day', None))),
'transport': session_data.get('transport', None),
}
for tuple in self._tuples:
constraint, result = tuple

View File

@@ -49,19 +49,13 @@ FORM_INITIALS = {
'submountains',
),
},
'ApproachForm': {
'transport': FieldInitial(
'sport==M,country==DE,terrain==submountains',
'public',
'sport==W,country==DE,terrain==submountains',
'public',
),
'JourneyForm': {
'meeting_point': FieldInitial(
'sport==M,country==DE,terrain==submountains',
'hbf',
'sport==W,country==DE,terrain==submountains',
'transport==public',
'hbf',
),
},
'AccommodationForm': {
'accommodation': FieldInitial('terrain==alpine', 'hut'),
'meals': FieldInitial('NONE'),
},

View File

@@ -217,12 +217,6 @@ class ModeForm(EventCreateForm):
},
bootstrap_version=3))
@property
def next_form_name(self):
if self.cleaned_data.get('mode') == 'training':
return 'TrainingForm'
return super(ModeForm, self).next_form_name
def clean(self):
cleaned_data = super(ModeForm, self).clean()
last_day = cleaned_data.get('last_day', None)
@@ -234,52 +228,9 @@ class ModeForm(EventCreateForm):
return cleaned_data
class TrainingForm(EventCreateForm):
_form_title = _(u'Kursinhalte / Kursziele')
_next_form_name = 'LocationForm'
course_topic_1 = forms.CharField(required=True,
label=u'%s - %s 1' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.Textarea(attrs={'rows': 2}))
course_topic_2 = forms.CharField(required=False,
label=u'%s - %s 2' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_topic_3 = forms.CharField(required=False,
label=u'%s - %s 3' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_topic_4 = forms.CharField(required=False,
label=u'%s - %s 4' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_topic_5 = forms.CharField(required=False,
label=u'%s - %s 5' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_topic_6 = forms.CharField(required=False,
label=u'%s - %s 6' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_1 = forms.CharField(required=True,
label=u'%s - %s 1' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.Textarea(attrs={'rows': 2}))
course_goal_2 = forms.CharField(required=False,
label=u'%s - %s 2' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_3 = forms.CharField(required=False,
label=u'%s - %s 3' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_4 = forms.CharField(required=False,
label=u'%s - %s 4' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_5 = forms.CharField(required=False,
label=u'%s - %s 5' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_6 = forms.CharField(required=False,
label=u'%s - %s 6' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
class LocationForm(EventCreateForm):
_form_title = _(u'Ort')
_next_form_name = 'ApproachForm'
_next_form_name = 'JourneyForm'
country = LazyTypedChoiceField(choices=choices.COUNTRY_CHOICES,
label=_(u'Land'))
@@ -305,6 +256,14 @@ class LocationForm(EventCreateForm):
attrs={'placeholder': _(u'Kann in Ausnahmefällen frei gelassen werden')}
))
transport = forms.ChoiceField(choices=choices.TRANSPORT_CHOICES,
label=_(u'Verkehrsmittel zur An- und Abreise'),
)
transport_other = forms.CharField(required=False,
max_length=config.TRANSPORT_OTHER_MAX_LENGTH,
label=_(u'Anderes Verkehrsmittel zur An- und Abreise'),
)
def _proceed_session_data(self, session_data):
super(LocationForm, self)._proceed_session_data(session_data)
@@ -325,19 +284,13 @@ class LocationForm(EventCreateForm):
elif sport == 'W':
self.fields['location'].widget.attrs['placeholder'] = u'z.B. Maikammer, Pfalz'
self.fields['transport_other'].widget.attrs['placeholder'] = _(u'Nebenstehendes Feld beachten')
class ApproachForm(EventCreateForm):
_form_title = _(u'An- und Abreise / Unterkunft')
class JourneyForm(EventCreateForm):
_form_title = _(u'An- und Abreise - Teil 2')
_next_form_name = 'RequirementsForm'
transport = forms.ChoiceField(choices=choices.TRANSPORT_CHOICES,
label=_(u'Verkehrsmittel'),
)
transport_other = forms.CharField(required=False,
max_length=config.TRANSPORT_OTHER_MAX_LENGTH,
label=_(u'Anderes Verkehrsmittel'),
)
meeting_point = forms.ChoiceField(choices=choices.MEETING_POINT_CHOICES,
label=_(u'Treffpunkt'),
)
@@ -362,6 +315,63 @@ class ApproachForm(EventCreateForm):
},
bootstrap_version=3))
departure_time = forms.TimeField(required=False,
label=_(u'Uhrzeit Abfahrt'),
help_text=u'%s - %s' % (
_(u'Format: hh:mm'),
_(u'Kann freigelassen werden'),
),
widget=TimeWidget(attrs={'id': 'id_departure_time_widget',
'placeholder': _(u'Kann freigelassen werden'),
},
# usel10n=True,
options={
'format': 'hh:ii',
'pickerPosition': 'bottom-left',
},
bootstrap_version=3))
departure_ride = forms.CharField(required=False,
max_length=config.MEETING_POINT_OTHER_MAX_LENGTH,
label=_(u'Bahn- / Bus-Linie / evtl. Haltestelle'),
help_text=u'%s - %s' % (
_(u'Wo sollen die Teilnehmer einsteigen, wenn kein Treffpunkt ausgemacht ist'
u', oder jemand später zusteigen will'),
_(u'Kann freigelassen werden'),),
)
return_departure_time = forms.TimeField(required=False,
label=_(u'Uhrzeit Rückfahrt (Abfahrt am Tourenort)'),
help_text=u'%s - %s' % (
_(u'Format: hh:mm'),
_(u'Kann freigelassen werden'),
),
widget=TimeWidget(attrs={'id': 'id_return_departure_time_widget',
'placeholder': _(u'Kann freigelassen werden'),
},
# usel10n=True,
options={
'format': 'hh:ii',
'pickerPosition': 'bottom-left',
},
bootstrap_version=3))
return_arrival_time = forms.TimeField(required=False,
label=_(u'oder: Uhrzeit Rückkunft (Ankunft in Karlsruhe)'),
help_text=u'%s - %s' % (
_(u'Format: hh:mm'),
_(u'Kann freigelassen werden'),
),
widget=TimeWidget(attrs={'id': 'id_return_arrival_time_widget',
'placeholder': _(u'Kann freigelassen werden'),
},
# usel10n=True,
options={
'format': 'hh:ii',
'pickerPosition': 'bottom-left',
},
bootstrap_version=3))
arrival_previous_day = forms.BooleanField(required=False,
label=_(u'Anreise des Kurs-/Tourenleiters am Vortag'),
help_text=u'%s %s' % (
@@ -370,21 +380,41 @@ class ApproachForm(EventCreateForm):
),
)
return_time = forms.TimeField(required=False,
label=_(u'Uhrzeit Rückkunft'),
help_text=u'%s - %s' % (
_(u'Format: hh:mm'),
_(u'Kann freigelassen werden'),
),
widget=TimeWidget(attrs={'id': 'id_back_time_widget',
'placeholder': _(u'Kann freigelassen werden'),
},
# usel10n=True,
options={
'format': 'hh:ii',
'pickerPosition': 'bottom-left',
},
bootstrap_version=3))
@property
def next_form_name(self):
if bool(self._session_data.get('last_day', None)):
return 'AccommodationForm'
return super(JourneyForm, self).next_form_name
def _proceed_session_data(self, session_data):
super(JourneyForm, self)._proceed_session_data(session_data)
first_day = session_data.get('first_day', None)
last_day = session_data.get('last_day', None)
transport = session_data.get('transport', None)
self.fields['meeting_point_other'].widget.attrs['placeholder'] = _(u'Nebenstehendes Feld beachten')
self.fields['departure_ride'].widget.attrs['placeholder'] = _(u'z.B. Linie S81 nach Freudenstadt, Gleis 9')
self.fields['meeting_time'].widget.options['startDate'] = first_day.strftime('%Y-%m-%d 00:00:00')
self.fields['meeting_time'].widget.options['endDate'] = first_day.strftime('%Y-%m-%d 23:59:59')
self.fields['departure_time'].widget.options['startDate'] = first_day.strftime('%Y-%m-%d 00:00:00')
self.fields['departure_time'].widget.options['endDate'] = first_day.strftime('%Y-%m-%d 23:59:59')
return_day = last_day or first_day
self.fields['return_departure_time'].widget.options['startDate'] = return_day.strftime('%Y-%m-%d 00:00:00')
self.fields['return_departure_time'].widget.options['endDate'] = return_day.strftime('%Y-%m-%d 23:59:59')
self.fields['return_arrival_time'].widget.options['startDate'] = return_day.strftime('%Y-%m-%d 00:00:00')
self.fields['return_arrival_time'].widget.options['endDate'] = return_day.strftime('%Y-%m-%d 23:59:59')
if transport != 'public':
self.fields['departure_time'].widget = forms.HiddenInput()
self.fields['departure_ride'].widget = forms.HiddenInput()
class AccommodationForm(EventCreateForm):
_form_title = _(u'Unterkunft')
_next_form_name = 'RequirementsForm'
basecamp = forms.CharField(required=False,
max_length=config.BASECAMP_MAX_LENGTH,
@@ -409,34 +439,15 @@ class ApproachForm(EventCreateForm):
)
def _proceed_session_data(self, session_data):
super(ApproachForm, self)._proceed_session_data(session_data)
first_day = session_data.get('first_day', None)
last_day = session_data.get('last_day', None)
self.fields['transport_other'].widget.attrs['placeholder'] = _(u'Nebenstehendes Feld beachten')
self.fields['meeting_point_other'].widget.attrs['placeholder'] = _(u'Nebenstehendes Feld beachten')
super(AccommodationForm, self)._proceed_session_data(session_data)
self.fields['basecamp'].widget.attrs['placeholder'] = _(u'Kann freigelassen werden')
self.fields['accommodation_other'].widget.attrs['placeholder'] = _(u'Nebenstehendes Feld beachten')
self.fields['meals_other'].widget.attrs['placeholder'] = _(u'Nebenstehendes Feld beachten')
self.fields['meeting_time'].widget.options['startDate'] = first_day.strftime('%Y-%m-%d 00:00:00')
self.fields['meeting_time'].widget.options['endDate'] = first_day.strftime('%Y-%m-%d 23:59:59')
return_day = last_day or first_day
self.fields['return_time'].widget.options['startDate'] = return_day.strftime('%Y-%m-%d 00:00:00')
self.fields['return_time'].widget.options['endDate'] = return_day.strftime('%Y-%m-%d 23:59:59')
if not last_day:
self.fields['basecamp'].widget = forms.HiddenInput()
self.fields['accommodation'].widget = forms.HiddenInput()
self.fields['accommodation'].initial = 'NONE'
self.fields['accommodation_other'].widget = forms.HiddenInput()
class RequirementsForm(EventCreateForm):
_form_title = _(u'Voraussetzungen / Vorbedingungen')
_next_form_name = 'DescriptionForm'
_next_form_name = 'TrainerForm'
requirements = forms.CharField(required=False,
label=_(u'Anforderungen / Voraussetzungen'),
@@ -492,53 +503,6 @@ class RequirementsForm(EventCreateForm):
bootstrap_version=3))
class DescriptionForm(EventCreateForm):
_form_title = _(u'Titel / Beschreibung')
_next_form_name = 'TrainerForm'
title = forms.CharField(max_length=config.TITLE_MAX_LENGTH,
label=_(u'Name bzw. Titel der Veranstaltung'),
)
description = forms.CharField(label=_(u'Beschreibung'),
widget=forms.Textarea(attrs={'rows': 5}))
def get_initial_for_field(self, field, field_name):
value = super(DescriptionForm, self).get_initial_for_field(field, field_name)
if field_name == 'title' and value is None:
mode = self._session_data.get('mode', None)
sport = self._session_data.get('sport', None)
level = self._session_data.get('level', None)
terrain = self._session_data.get('terrain', None)
last_day = self._session_data.get('last_day', None)
value = u''
if mode == 'training':
if level == 'beginner':
value += u'%s ' % ugettext(u'Grundkurs')
else:
value += u'%s ' % ugettext(u'Aufbaukurs')
if sport == 'B':
value += u'%s' % ugettext(u'Alpin')
elif sport == 'K':
if terrain == 'gym':
value += ugettext(u'Indoorklettern')
elif terrain == 'crag':
value += ugettext(u'Fels')
elif terrain == 'alpine':
value += ugettext(u'Alpinklettern')
value += u': ...'
elif sport == 'W' and not last_day:
value += u'%s ...' % ugettext(u'Tageswanderung')
if app_config.settings.forms_development_init:
if not value:
value = u'%s' % choices.SPORT_CHOICES.get_label(sport)
return value
class TrainerForm(EventCreateForm):
_form_title = _(u'Tourenleitung')
_next_form_name = 'RegistrationForm'
@@ -701,7 +665,7 @@ class RegistrationForm(EventCreateForm):
class ChargesForm(EventCreateForm):
_form_title = _(u'Kosten')
_next_form_name = 'SummaryForm'
_next_form_name = 'DescriptionForm'
charge_key = forms.CharField(disabled=True,
label=_(u'Kostenschlüssel'),
@@ -735,6 +699,12 @@ class ChargesForm(EventCreateForm):
help_text=_(u'Kann freigelassen werden'),
)
@property
def next_form_name(self):
if self._session_data.get('mode') == 'training':
return 'TrainingForm'
return super(ChargesForm, self).next_form_name
def _proceed_session_data(self, session_data):
super(ChargesForm, self)._proceed_session_data(session_data)
@@ -816,6 +786,96 @@ class ChargesForm(EventCreateForm):
self.fields['additional_costs'].initial = additional_costs_text
class TrainingForm(EventCreateForm):
_form_title = _(u'Kursinhalte / Kursziele')
_next_form_name = 'DescriptionForm'
course_topic_1 = forms.CharField(required=True,
label=u'%s - %s 1' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.Textarea(attrs={'rows': 2}))
course_topic_2 = forms.CharField(required=False,
label=u'%s - %s 2' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_topic_3 = forms.CharField(required=False,
label=u'%s - %s 3' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_topic_4 = forms.CharField(required=False,
label=u'%s - %s 4' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_topic_5 = forms.CharField(required=False,
label=u'%s - %s 5' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_topic_6 = forms.CharField(required=False,
label=u'%s - %s 6' % (_(u'Kursinhalt'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_1 = forms.CharField(required=True,
label=u'%s - %s 1' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.Textarea(attrs={'rows': 2}))
course_goal_2 = forms.CharField(required=False,
label=u'%s - %s 2' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_3 = forms.CharField(required=False,
label=u'%s - %s 3' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_4 = forms.CharField(required=False,
label=u'%s - %s 4' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_5 = forms.CharField(required=False,
label=u'%s - %s 5' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
course_goal_6 = forms.CharField(required=False,
label=u'%s - %s 6' % (_(u'Kursziel'), _(u'Absatz')),
widget=forms.TextInput(attrs={'placeholder': _(u'Kann frei gelassen werden')}))
class DescriptionForm(EventCreateForm):
_form_title = _(u'Titel / Beschreibung')
_next_form_name = 'SummaryForm'
title = forms.CharField(max_length=config.TITLE_MAX_LENGTH,
label=_(u'Name bzw. Titel der Veranstaltung'),
)
description = forms.CharField(label=_(u'Beschreibung'),
widget=forms.Textarea(attrs={'rows': 5}))
def get_initial_for_field(self, field, field_name):
value = super(DescriptionForm, self).get_initial_for_field(field, field_name)
if field_name == 'title' and value is None:
mode = self._session_data.get('mode', None)
sport = self._session_data.get('sport', None)
level = self._session_data.get('level', None)
terrain = self._session_data.get('terrain', None)
last_day = self._session_data.get('last_day', None)
value = u''
if mode == 'training':
if level == 'beginner':
value += u'%s ' % ugettext(u'Grundkurs')
else:
value += u'%s ' % ugettext(u'Aufbaukurs')
if sport == 'B':
value += u'%s' % ugettext(u'Alpin')
elif sport == 'K':
if terrain == 'gym':
value += ugettext(u'Indoorklettern')
elif terrain == 'crag':
value += ugettext(u'Fels')
elif terrain == 'alpine':
value += ugettext(u'Alpinklettern')
value += u': ...'
elif sport == 'W' and not last_day:
value += u'%s ...' % ugettext(u'Tageswanderung')
if app_config.settings.forms_development_init:
if not value:
value = u'%s' % choices.SPORT_CHOICES.get_label(sport)
return value
class SummaryForm(EventCreateForm):
_form_title = _(u'Zusammenfassung')

View File

@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.9 on 2018-02-27 14:08
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('dav_events', '0016_event_registration_required'),
]
operations = [
migrations.RenameField(
model_name='event',
old_name='return_time',
new_name='return_arrival_time',
),
migrations.AddField(
model_name='event',
name='departure_time',
field=models.TimeField(blank=True, null=True),
),
migrations.AddField(
model_name='event',
name='return_departure_time',
field=models.TimeField(blank=True, null=True),
),
]

View File

@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.9 on 2018-02-27 14:23
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('dav_events', '0017_auto_20180227_1408'),
]
operations = [
migrations.AddField(
model_name='event',
name='departure_ride',
field=models.CharField(blank=True, max_length=250),
),
]

View File

@@ -75,42 +75,35 @@ class Event(models.Model):
alt_last_day = models.DateField(blank=True,
null=True)
# TrainingForm
course_topic_1 = models.TextField(blank=True)
course_topic_2 = models.TextField(blank=True)
course_topic_3 = models.TextField(blank=True)
course_topic_4 = models.TextField(blank=True)
course_topic_5 = models.TextField(blank=True)
course_topic_6 = models.TextField(blank=True)
course_goal_1 = models.TextField(blank=True)
course_goal_2 = models.TextField(blank=True)
course_goal_3 = models.TextField(blank=True)
course_goal_4 = models.TextField(blank=True)
course_goal_5 = models.TextField(blank=True)
course_goal_6 = models.TextField(blank=True)
# LocationForm
country = CountryField(countries=choices.CountryChoiceSet)
terrain = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
choices=choices.TERRAIN_CHOICES)
location = models.CharField(max_length=config.LOCATION_MAX_LENGTH,
blank=True)
# ApproachForm
transport = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
choices=choices.TRANSPORT_CHOICES)
transport_other = models.CharField(max_length=config.TRANSPORT_OTHER_MAX_LENGTH,
blank=True)
# JourneyForm
meeting_point = models.CharField(max_length=choices.CHOICE_FIELD_MAX_LENGTH,
choices=choices.MEETING_POINT_CHOICES)
meeting_point_other = models.CharField(max_length=config.MEETING_POINT_OTHER_MAX_LENGTH,
blank=True)
meeting_time = models.TimeField(blank=True,
null=True)
departure_time = models.TimeField(blank=True,
null=True)
departure_ride = models.CharField(max_length=config.DEPARTURE_RIDE_MAX_LENGTH,
blank=True)
return_departure_time = models.TimeField(blank=True,
null=True)
return_arrival_time = models.TimeField(blank=True,
null=True)
arrival_previous_day = models.BooleanField(default=False)
return_time = models.TimeField(blank=True,
null=True)
# AccommodationForm
basecamp = models.CharField(max_length=config.BASECAMP_MAX_LENGTH,
blank=True)
@@ -163,6 +156,20 @@ class Event(models.Model):
additional_costs = models.CharField(max_length=config.ADDITIONAL_COSTS_MAX_LENGTH,
blank=True)
# TrainingForm
course_topic_1 = models.TextField(blank=True)
course_topic_2 = models.TextField(blank=True)
course_topic_3 = models.TextField(blank=True)
course_topic_4 = models.TextField(blank=True)
course_topic_5 = models.TextField(blank=True)
course_topic_6 = models.TextField(blank=True)
course_goal_1 = models.TextField(blank=True)
course_goal_2 = models.TextField(blank=True)
course_goal_3 = models.TextField(blank=True)
course_goal_4 = models.TextField(blank=True)
course_goal_5 = models.TextField(blank=True)
course_goal_6 = models.TextField(blank=True)
# SummaryForm
planned_publication_date = models.DateField(blank=True,
null=True)
@@ -333,7 +340,7 @@ class Event(models.Model):
year_fmt = ' yy'
else:
weekday_fmt = 'EEEE, '
day_fmt = 'd.'
day_fmt = 'dd.'
month_fmt = ' MMMM'
year_fmt = ' yyyy'
@@ -396,25 +403,17 @@ class Event(models.Model):
'alt_normalized_date': self.get_alt_formated_date(format='normalized'),
'alt_normalized_long_date': self.get_alt_formated_date(format='normalized_long'),
'alt_normalized_short_date': self.get_alt_formated_date(format='normalized_short'),
'course_topic_1': self.course_topic_1,
'course_topic_2': self.course_topic_2,
'course_topic_3': self.course_topic_3,
'course_topic_4': self.course_topic_4,
'course_topic_5': self.course_topic_5,
'course_topic_6': self.course_topic_6,
'course_goal_1': self.course_goal_1,
'course_goal_2': self.course_goal_2,
'course_goal_3': self.course_goal_3,
'course_goal_4': self.course_goal_4,
'course_goal_5': self.course_goal_5,
'course_goal_6': self.course_goal_6,
'country': self.country,
'location': self.location,
'transport': self.transport,
'transport_other': self.transport_other,
'meeting_time': self.meeting_time,
'meeting_point': self.meeting_point,
'meeting_point_other': self.meeting_point_other,
'meeting_time': self.meeting_time,
'departure_time': self.departure_time,
'departure_ride': self.departure_ride,
'return_departure_time': self.return_departure_time,
'return_arrival_time': self.return_arrival_time,
'basecamp': self.basecamp,
'accommodation': self.accommodation,
'accommodation_other': self.accommodation_other,
@@ -441,6 +440,18 @@ class Event(models.Model):
'registration_howto': self.registration_howto,
'charge': self.charge,
'additional_costs': self.additional_costs,
'course_topic_1': self.course_topic_1,
'course_topic_2': self.course_topic_2,
'course_topic_3': self.course_topic_3,
'course_topic_4': self.course_topic_4,
'course_topic_5': self.course_topic_5,
'course_topic_6': self.course_topic_6,
'course_goal_1': self.course_goal_1,
'course_goal_2': self.course_goal_2,
'course_goal_3': self.course_goal_3,
'course_goal_4': self.course_goal_4,
'course_goal_5': self.course_goal_5,
'course_goal_6': self.course_goal_6,
'planned_publication_date': self.planned_publication_date,
'internal_note': self.internal_note,
}

View File

@@ -48,8 +48,10 @@ Veröffentlichung: {% if planned_publication_date %}{{ planned_publication_date|
{% endif %}{% if basecamp %}<strong>{% trans 'Stützpunkt' %}:</strong> {{ basecamp }}<br />
{% endif %}{% if accommodation and accommodation != 'NONE' %}<strong>{% trans 'Unterkunft' %}:</strong> {% if accommodation == 'OTHER' %}{{ accommodation_other }}{% else %}{{ event.get_accommodation_display }}{% endif %}<br />
{% endif %}{% if meals and meals != 'NONE' %}<strong>{% trans 'Verpflegung' %}:</strong> {% if meals == 'OTHER' %}{{ meals_other }}{% else %}{{ event.get_meals_display }}{% endif %}<br />
{% endif %}{% if transport and transport != 'NONE' %}<strong>{% trans 'Anfahrt' %}:</strong> {% if transport == 'OTHER' %}{{ transport_other }}{% else %}{{ event.get_transport_display }}{% endif %}<br />
{% endif %}{% if transport and transport != 'NONE' and transport != 'public' %}<strong>{% trans 'Hin- / Rückfahrt' %}:</strong> {% if transport == 'OTHER' %}{{ transport_other }}{% else %}{{ event.get_transport_display }}{% endif %}<br />
{% endif %}{% if meeting_point and meeting_point != 'NONE' %}<strong>{% trans 'Treffpunkt' %}:</strong> {% if meeting_time %}{{ meeting_time|time:'G:i'|cut:':00' }} Uhr, {% endif %}{% if meeting_point == 'OTHER' %}{{ meeting_point_other }}{% else %}{{ event.get_meeting_point_display }}{% endif %}<br />
{% endif %}{% if transport == 'public' %}{% if departure_time or departure_ride %}<strong>{% trans 'Abfahrt' %}:</strong> {% if departure_time %}{{ departure_time|time:'G:i'|cut:':00' }} Uhr{% endif %}{% if departure_time and departure_ride %}, {% endif %}{% if departure_ride %}{{ departure_ride }}{% endif %}<br />
{% endif %}{% endif %}{% if return_departure_time or return_arrival_time %}<strong>{% trans 'Rückfahrt' %}:</strong> {% if return_arrival_time %}{{ return_arrival_time|time:'G:i'|cut:':00' }} Uhr ({% trans 'Ankunft in' %} Karlsruhe){% elif return_departure_time %}{{ return_departure_time|time:'G:i'|cut:':00' }} Uhr ({% trans 'Abfahrt am Tourenort' %}){% endif %}<br />
{% endif %}{% if pre_meeting_1 %}{% if pre_meeting_2 %}<strong>{% trans 'Vortreffen' %} 1:</strong> {{ pre_meeting_1|date:'l, d. F Y, G:i'|cut:':00' }} {% trans 'Uhr' %}, DAV {% trans 'Sektionszentrum' %}<br />
<strong>{% trans 'Vortreffen' %} 2:</strong> {{ pre_meeting_2|date:'l, d. F Y, G:i'|cut:':00' }} {% trans 'Uhr' %}, DAV {% trans 'Sektionszentrum' %}<br />
{% else %}<strong>{% trans 'Vortreffen' %}:</strong> {{ pre_meeting_1|date:'l, d. F Y, G:i'|cut:':00' }} {% trans 'Uhr' %}, DAV {% trans 'Sektionszentrum' %}<br />{% endif %}

View File

@@ -104,8 +104,8 @@
{% endif %}
<br />
{% endif %}
{% if transport and transport != 'NONE' %}
<strong>{% trans 'Anfahrt' %}:</strong>
{% if transport and transport != 'NONE' and transport != 'public' %}
<strong>{% trans 'Hin- / Rückfahrt' %}:</strong>
{% if transport == 'OTHER' %}
{{ transport_other }}
{% else %}
@@ -123,6 +123,20 @@
{% endif %}
<br />
{% endif %}
{% if transport == 'public' %}
{% if departure_time or departure_ride %}
<strong>{% trans 'Abfahrt' %}:</strong>
{% if departure_time %}{{ departure_time|time:'G:i'|cut:':00' }} Uhr{% endif %}{% if departure_time and departure_ride %}, {% endif %}{%if departure_ride %}{{ departure_ride }}{% endif %}
<br />
{% endif %}
{% endif %}
{% if return_departure_time or return_arrival_time %}
<strong>{% trans 'Rückfahrt' %}:</strong>
{% if return_arrival_time %}{{ return_arrival_time|time:'G:i'|cut:':00' }} Uhr ({% trans 'Ankunft in' %} Karlsruhe)
{% elif return_departure_time %}{{ return_departure_time|time:'G:i'|cut:':00' }} Uhr ({% trans 'Abfahrt am Tourenort' %})
{% endif %}
<br />
{% endif %}
{% if pre_meeting_1 %}
{% if pre_meeting_2 %}
<strong>{% trans 'Vortreffen' %} 1:</strong> {{ pre_meeting_1|date:'l, d. F Y, G:i'|cut:':00' }} {% trans 'Uhr' %}, DAV {% trans 'Sektionszentrum' %}<br />

View File

@@ -34,8 +34,10 @@
{% endif %}{% if basecamp %}{% trans 'Stützpunkt' %}: {{ basecamp }}
{% endif %}{% if accommodation and accommodation != 'NONE' %}{% trans 'Unterkunft' %}: {% if accommodation == 'OTHER' %}{{ accommodation_other }}{% else %}{{ event.get_accommodation_display }}{% endif %}
{% endif %}{% if meals and meals != 'NONE' %}{% trans 'Verpflegung' %}: {% if meals == 'OTHER' %}{{ meals_other }}{% else %}{{ event.get_meals_display }}{% endif %}
{% endif %}{% if transport and transport != 'NONE' %}{% trans 'Anfahrt' %}: {% if transport == 'OTHER' %}{{ transport_other }}{% else %}{{ event.get_transport_display }}{% endif %}
{% endif %}{% if transport and transport != 'NONE' and transport != 'public' %}{% trans 'Hin- / Rückfahrt' %}: {% if transport == 'OTHER' %}{{ transport_other }}{% else %}{{ event.get_transport_display }}{% endif %}
{% endif %}{% if meeting_point and meeting_point != 'NONE' %}{% trans 'Treffpunkt' %}: {% if meeting_time %}{{ meeting_time|time:'G:i'|cut:':00' }} Uhr, {% endif %}{% if meeting_point == 'OTHER' %}{{ meeting_point_other }}{% else %}{{ event.get_meeting_point_display }}{% endif %}
{% endif %}{% if transport == 'public' %}{% if departure_time or departure_ride %}{% trans 'Abfahrt' %}: {% if departure_time %}{{ departure_time|time:'G:i'|cut:':00' }} Uhr{% endif %}{% if departure_time and departure_ride %}, {% endif %}{% if departure_ride %}{{ departure_ride }}{% endif %}
{% endif %}{% endif %}{% if return_departure_time or return_arrival_time %}{% trans 'Rückfahrt' %}: {% if return_arrival_time %}{{ return_arrival_time|time:'G:i'|cut:':00' }} Uhr ({% trans 'Ankunft in' %} Karlsruhe){% elif return_departure_time %}{{ return_departure_time|time:'G:i'|cut:':00' }} Uhr ({% trans 'Abfahrt am Tourenort' %}){% endif %}
{% endif %}{% if pre_meeting_1 %}{% if pre_meeting_2 %}{% trans 'Vortreffen' %} 1: {{ pre_meeting_1|date:'l, d. F Y, G:i'|cut:':00' }} {% trans 'Uhr' %}, DAV {% trans 'Sektionszentrum' %}
{% trans 'Vortreffen' %} 2: {{ pre_meeting_2|date:'l, d. F Y, G:i'|cut:':00' }} {% trans 'Uhr' %}, DAV {% trans 'Sektionszentrum' %}{% else %}{% trans 'Vortreffen' %}: {{ pre_meeting_1|date:'l, d. F Y, G:i'|cut:':00' }} {% trans 'Uhr' %}, DAV {% trans 'Sektionszentrum' %}{% endif %}
{% endif %}{% if min_participants > 0 or max_participants > 0 %}{% trans 'Teilnehmerzahl' %}: {% if min_participants == max_participants %}{{ max_participants }} {% trans 'Teilnehmer' %}{% elif min_participants > 0 and max_participants > 0 %}{{ min_participants }} - {{ max_participants }} {% trans 'Teilnehmer' %}{% elif min_participants > 0 %}min. {{ min_participants }} {% trans 'Teilnehmer' %}{% else %}max. {{ max_participants }} {% trans 'Teilnehmer' %}{% endif %}

View File

@@ -0,0 +1,32 @@
{% extends "dav_events/event_create/base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block head-additional %}
{% include 'dav_events/event_create/includes/select_other.html' %}
{% endblock head-additional %}
{% block form-fields-visible %}
<div class="row">
<div class="col-sm-12">
{% bootstrap_field form.basecamp %}
</div>
</div>
<div class="row">
<div class="col-sm-6">
{% bootstrap_field form.accommodation %}
</div>
<div class="col-sm-6">
{% bootstrap_field form.accommodation_other %}
</div>
</div>
<div class="row">
<div class="col-sm-6">
{% bootstrap_field form.meals %}
</div>
<div class="col-sm-6">
{% bootstrap_field form.meals_other %}
</div>
</div>
<div class="row">&nbsp;</div>
{% endblock form-fields-visible %}

View File

@@ -7,14 +7,6 @@
{% endblock head-additional %}
{% block form-fields-visible %}
<div class="row">
<div class="col-sm-6">
{% bootstrap_field form.transport %}
</div>
<div class="col-sm-6">
{% bootstrap_field form.transport_other %}
</div>
</div>
<div class="row">
<div class="col-sm-6">
{% bootstrap_field form.meeting_point %}
@@ -28,7 +20,20 @@
{% bootstrap_field form.meeting_time %}
</div>
<div class="col-sm-6">
{% bootstrap_field form.return_time %}
{% bootstrap_field form.departure_time %}
</div>
</div>
<div class="row">
<div class="col-sm-12">
{% bootstrap_field form.departure_ride %}
</div>
</div>
<div class="row">
<div class="col-sm-6">
{% bootstrap_field form.return_departure_time %}
</div>
<div class="col-sm-6">
{% bootstrap_field form.return_arrival_time %}
</div>
</div>
<div class="row">
@@ -36,26 +41,5 @@
{% bootstrap_field form.arrival_previous_day %}
</div>
</div>
<div class="row">
<div class="col-sm-12">
{% bootstrap_field form.basecamp %}
</div>
</div>
<div class="row">
<div class="col-sm-6">
{% bootstrap_field form.accommodation %}
</div>
<div class="col-sm-6">
{% bootstrap_field form.accommodation_other %}
</div>
</div>
<div class="row">
<div class="col-sm-6">
{% bootstrap_field form.meals %}
</div>
<div class="col-sm-6">
{% bootstrap_field form.meals_other %}
</div>
</div>
<div class="row">&nbsp;</div>
{% endblock form-fields-visible %}

View File

@@ -0,0 +1,32 @@
{% extends "dav_events/event_create/base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block head-additional %}
{% include 'dav_events/event_create/includes/select_other.html' %}
{% endblock head-additional %}
{% block form-fields-visible %}
<div class="row">
<div class="col-sm-12">
{% bootstrap_field form.country %}
{% bootstrap_field form.terrain %}
{% bootstrap_field form.location %}
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="col-sm-12">
<h3>An- und Abreise - Teil 1</h3>
</div>
</div>
<div class="row">
<div class="col-sm-6">
{% bootstrap_field form.transport %}
</div>
<div class="col-sm-6">
{% bootstrap_field form.transport_other %}
</div>
</div>
<div class="row">&nbsp;</div>
{% endblock form-fields-visible %}