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

@@ -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')