diff --git a/TODO.txt b/TODO.txt
index 9342b91..2a2f6c0 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,5 +1,3 @@
-- Anzeige Bahnfahrt
-- ApproachForm aufteilen
- Save as Draft
- Copy Event
- Tourenreferent managed Gruppen der Subreferenten
diff --git a/dav_events/config.py b/dav_events/config.py
index 51f83c8..ca862b4 100644
--- a/dav_events/config.py
+++ b/dav_events/config.py
@@ -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
diff --git a/dav_events/console_scripts/Resources/django.main.settings-dav_events.py b/dav_events/console_scripts/Resources/django.main.settings-dav_events.py
index 92a403d..6eb70a5 100644
--- a/dav_events/console_scripts/Resources/django.main.settings-dav_events.py
+++ b/dav_events/console_scripts/Resources/django.main.settings-dav_events.py
@@ -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'),
},
diff --git a/dav_events/forms/events.py b/dav_events/forms/events.py
index 628113a..62a2edb 100644
--- a/dav_events/forms/events.py
+++ b/dav_events/forms/events.py
@@ -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')
diff --git a/dav_events/migrations/0017_auto_20180227_1408.py b/dav_events/migrations/0017_auto_20180227_1408.py
new file mode 100644
index 0000000..482bc2b
--- /dev/null
+++ b/dav_events/migrations/0017_auto_20180227_1408.py
@@ -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),
+ ),
+ ]
diff --git a/dav_events/migrations/0018_event_departure_ride.py b/dav_events/migrations/0018_event_departure_ride.py
new file mode 100644
index 0000000..3b448d7
--- /dev/null
+++ b/dav_events/migrations/0018_event_departure_ride.py
@@ -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),
+ ),
+ ]
diff --git a/dav_events/models.py b/dav_events/models.py
index 8efeab9..974e3ae 100644
--- a/dav_events/models.py
+++ b/dav_events/models.py
@@ -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,
}
diff --git a/dav_events/templates/dav_events/emails/event_to_publish.txt b/dav_events/templates/dav_events/emails/event_to_publish.txt
index 341ebf4..beff333 100644
--- a/dav_events/templates/dav_events/emails/event_to_publish.txt
+++ b/dav_events/templates/dav_events/emails/event_to_publish.txt
@@ -48,8 +48,10 @@ Veröffentlichung: {% if planned_publication_date %}{{ planned_publication_date|
{% 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 %}
diff --git a/dav_events/templates/dav_events/event.html b/dav_events/templates/dav_events/event.html
index 3602a39..9a5bba3 100644
--- a/dav_events/templates/dav_events/event.html
+++ b/dav_events/templates/dav_events/event.html
@@ -104,8 +104,8 @@
{% endif %}
{% endif %}
- {% if transport and transport != 'NONE' %}
- {% trans 'Anfahrt' %}:
+ {% if transport and transport != 'NONE' and transport != 'public' %}
+ {% trans 'Hin- / Rückfahrt' %}:
{% if transport == 'OTHER' %}
{{ transport_other }}
{% else %}
@@ -123,6 +123,20 @@
{% 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' %}
diff --git a/dav_events/templates/dav_events/event.txt b/dav_events/templates/dav_events/event.txt
index c345229..33e9c92 100644
--- a/dav_events/templates/dav_events/event.txt
+++ b/dav_events/templates/dav_events/event.txt
@@ -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 %}
diff --git a/dav_events/templates/dav_events/event_create/AccommodationForm.html b/dav_events/templates/dav_events/event_create/AccommodationForm.html
new file mode 100644
index 0000000..d794bda
--- /dev/null
+++ b/dav_events/templates/dav_events/event_create/AccommodationForm.html
@@ -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 %}
+