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 %} +
+
+ {% bootstrap_field form.basecamp %} +
+
+
+
+ {% bootstrap_field form.accommodation %} +
+
+ {% bootstrap_field form.accommodation_other %} +
+
+
+
+ {% bootstrap_field form.meals %} +
+
+ {% bootstrap_field form.meals_other %} +
+
+
 
+{% endblock form-fields-visible %} diff --git a/dav_events/templates/dav_events/event_create/ApproachForm.html b/dav_events/templates/dav_events/event_create/JourneyForm.html similarity index 62% rename from dav_events/templates/dav_events/event_create/ApproachForm.html rename to dav_events/templates/dav_events/event_create/JourneyForm.html index 8c6c4ba..6624d7c 100644 --- a/dav_events/templates/dav_events/event_create/ApproachForm.html +++ b/dav_events/templates/dav_events/event_create/JourneyForm.html @@ -7,14 +7,6 @@ {% endblock head-additional %} {% block form-fields-visible %} -
-
- {% bootstrap_field form.transport %} -
-
- {% bootstrap_field form.transport_other %} -
-
{% bootstrap_field form.meeting_point %} @@ -28,7 +20,20 @@ {% bootstrap_field form.meeting_time %}
- {% bootstrap_field form.return_time %} + {% bootstrap_field form.departure_time %} +
+
+
+
+ {% bootstrap_field form.departure_ride %} +
+
+
+
+ {% bootstrap_field form.return_departure_time %} +
+
+ {% bootstrap_field form.return_arrival_time %}
@@ -36,26 +41,5 @@ {% bootstrap_field form.arrival_previous_day %}
-
-
- {% bootstrap_field form.basecamp %} -
-
-
-
- {% bootstrap_field form.accommodation %} -
-
- {% bootstrap_field form.accommodation_other %} -
-
-
-
- {% bootstrap_field form.meals %} -
-
- {% bootstrap_field form.meals_other %} -
-
 
{% endblock form-fields-visible %} diff --git a/dav_events/templates/dav_events/event_create/LocationForm.html b/dav_events/templates/dav_events/event_create/LocationForm.html new file mode 100644 index 0000000..e0798d3 --- /dev/null +++ b/dav_events/templates/dav_events/event_create/LocationForm.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 %} +
+
+ {% bootstrap_field form.country %} + {% bootstrap_field form.terrain %} + {% bootstrap_field form.location %} +
+
+
 
+
+
+

An- und Abreise - Teil 1

+
+
+
+
+ {% bootstrap_field form.transport %} +
+
+ {% bootstrap_field form.transport_other %} +
+
+
 
+{% endblock form-fields-visible %}