diff --git a/TODO.txt b/TODO.txt index 1c4e753..ed86a54 100644 --- a/TODO.txt +++ b/TODO.txt @@ -9,7 +9,6 @@ - Passwort vergessen Funktion - Besserer Zurück-Button in Formulare -- last_day: keine mehrtagestour wenn first_day == last_day - uhrzeitfelder ohne widget - vorbereitung: textfeld beschreibung einleitung, so dass beschreibung nur auf webseite geht. - kontaktdaten für 2. und 3. trainer wieder weg diff --git a/dav_events/forms/events.py b/dav_events/forms/events.py index 2c0c6b7..11983ef 100644 --- a/dav_events/forms/events.py +++ b/dav_events/forms/events.py @@ -209,6 +209,16 @@ class ModeForm(EventCreateForm): 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) + if last_day and last_day == cleaned_data.get('first_day', None): + cleaned_data['last_day'] = '' + alt_last_day = cleaned_data.get('alt_last_day', None) + if alt_last_day and alt_last_day == cleaned_data.get('alt_first_day', None): + cleaned_data['alt_last_day'] = '' + return cleaned_data + class TrainingForm(EventCreateForm): _form_title = _(u'Kursinhalte / Kursziele') @@ -478,41 +488,42 @@ class DescriptionForm(EventCreateForm): description = forms.CharField(label=_(u'Beschreibung'), widget=forms.Textarea(attrs={'rows': 5})) - def _proceed_session_data(self, session_data): - super(DescriptionForm, self)._proceed_session_data(session_data) + def get_initial_for_field(self, field, field_name): + if field_name == 'title': + 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) - mode = session_data.get('mode', None) - sport = session_data.get('sport', None) - level = session_data.get('level', None) - terrain = session_data.get('terrain', None) - last_day = 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') - title_prefix = u'' - if mode == 'training': - if level == 'beginner': - title_prefix += u'%s ' % ugettext(u'Grundkurs') - else: - title_prefix += 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') - if sport == 'B': - title_prefix += u'%s' % ugettext(u'Alpin') - elif sport == 'K': - if terrain == 'gym': - title_prefix += ugettext(u'Indoorklettern') - elif terrain == 'crag': - title_prefix += ugettext(u'Fels') - elif terrain == 'alpine': - title_prefix += ugettext(u'Alpinklettern') + value += u': ...' + elif sport == 'W' and not last_day: + value += u'%s ...' % ugettext(u'Tageswanderung') - title_prefix += u': ...' - elif sport == 'W' and not last_day: - title_prefix += u'%s ...' % ugettext(u'Tageswanderung') + if app_config.settings.forms_development_init: + if not value: + value = u'%s' % choices.SPORT_CHOICES.get_label(sport) + else: + value = super(DescriptionForm, self).get_initial_for_field(field, field_name) - if app_config.settings.forms_development_init: - if not title_prefix: - title_prefix = u'%s' % choices.SPORT_CHOICES.get_label(sport) - - self.fields['title'].initial = title_prefix + return value class TrainerForm(EventCreateForm): diff --git a/dav_events/forms/generic.py b/dav_events/forms/generic.py index ed1f6fa..9a86b16 100644 --- a/dav_events/forms/generic.py +++ b/dav_events/forms/generic.py @@ -42,12 +42,7 @@ class ChainedForm(forms.Form): self._session_data[k] = self._deserialize_value(session_data[k]) def _proceed_session_data(self, session_data): - form_initials = app_config.settings.form_initials.get(self.__class__.__name__, dict()) - for fieldname in self.fields: - if fieldname in form_initials: - value = form_initials[fieldname].get_value(session_data) - if value is not None: - self.fields[fieldname].initial = value + pass def _save_session_data(self): if self._request is not None and hasattr(self._request, 'session'): @@ -57,6 +52,10 @@ class ChainedForm(forms.Form): session_data[k] = self._serialize_value(self._session_data[k]) self._request.session[session_var_name] = session_data + def _post_clean(self): + self._session_data.update(self.cleaned_data) + self._save_session_data() + def _get_model(self): if not hasattr(self, '_model'): raise ImproperlyConfigured('{cls} is missing a Model.' @@ -103,11 +102,14 @@ class ChainedForm(forms.Form): def get_next_form_name(cls): return cls._next_form_name - def clean(self): - cleaned_data = super(ChainedForm, self).clean() - self._session_data.update(cleaned_data) - self._save_session_data() - return cleaned_data + def get_initial_for_field(self, field, field_name): + form_name = self.__class__.__name__ + form_initials = app_config.settings.form_initials + if form_name in form_initials and field_name in form_initials[form_name]: + value = app_config.settings.form_initials[form_name][field_name].get_value(self._session_data) + else: + value = super(ChainedForm, self).get_initial_for_field(field, field_name) + return value def save(self): object_kwargs = dict()