Added primitive Back button to EventCreate.
This commit is contained in:
2
TODO.txt
2
TODO.txt
@@ -5,7 +5,7 @@
|
|||||||
- Download Veranstaltungsliste
|
- Download Veranstaltungsliste
|
||||||
- ApproachForm aufteilen
|
- ApproachForm aufteilen
|
||||||
- Teilnehmerzahl und Trainerzahl kombinieren
|
- Teilnehmerzahl und Trainerzahl kombinieren
|
||||||
- Zurück-Button in Formulare
|
- Besserer Zurück-Button in Formulare
|
||||||
- Save as Draft
|
- Save as Draft
|
||||||
- Edit Event
|
- Edit Event
|
||||||
- Copy Event
|
- Copy Event
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ class ChainedForm(forms.Form):
|
|||||||
self._request = kwargs.pop('request', None)
|
self._request = kwargs.pop('request', None)
|
||||||
self._load_session_data()
|
self._load_session_data()
|
||||||
|
|
||||||
|
if 'initial' not in kwargs:
|
||||||
|
kwargs['initial'] = self._session_data
|
||||||
|
else:
|
||||||
|
kwargs['initial'].update(self._session_data)
|
||||||
|
|
||||||
super(ChainedForm, self).__init__(*args, **kwargs)
|
super(ChainedForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
self._proceed_session_data(self._session_data)
|
self._proceed_session_data(self._session_data)
|
||||||
@@ -34,6 +39,9 @@ class ChainedForm(forms.Form):
|
|||||||
for k in session_data:
|
for k in session_data:
|
||||||
self._session_data[k] = self._deserialize_value(session_data[k])
|
self._session_data[k] = self._deserialize_value(session_data[k])
|
||||||
|
|
||||||
|
def _proceed_session_data(self, session_data):
|
||||||
|
pass
|
||||||
|
|
||||||
def _save_session_data(self):
|
def _save_session_data(self):
|
||||||
if self._request is not None and hasattr(self._request, 'session'):
|
if self._request is not None and hasattr(self._request, 'session'):
|
||||||
session_var_name = '{}_chained_form_session_data'.format(self._request.resolver_match.url_name)
|
session_var_name = '{}_chained_form_session_data'.format(self._request.resolver_match.url_name)
|
||||||
@@ -42,9 +50,6 @@ class ChainedForm(forms.Form):
|
|||||||
session_data[k] = self._serialize_value(self._session_data[k])
|
session_data[k] = self._serialize_value(self._session_data[k])
|
||||||
self._request.session[session_var_name] = session_data
|
self._request.session[session_var_name] = session_data
|
||||||
|
|
||||||
def _proceed_session_data(self, session_data):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def _get_model(self):
|
def _get_model(self):
|
||||||
if not hasattr(self, '_model'):
|
if not hasattr(self, '_model'):
|
||||||
raise ImproperlyConfigured('{cls} is missing a Model.'
|
raise ImproperlyConfigured('{cls} is missing a Model.'
|
||||||
@@ -99,7 +104,7 @@ class ChainedForm(forms.Form):
|
|||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
object_kwargs = dict()
|
object_kwargs = dict()
|
||||||
data = self._session_data
|
data = self._session_data.copy()
|
||||||
if 'deadline' in data:
|
if 'deadline' in data:
|
||||||
buf = data['deadline']
|
buf = data['deadline']
|
||||||
if isinstance(buf, basestring):
|
if isinstance(buf, basestring):
|
||||||
@@ -114,3 +119,10 @@ class ChainedForm(forms.Form):
|
|||||||
object_kwargs[field] = data[field]
|
object_kwargs[field] = data[field]
|
||||||
|
|
||||||
return self._get_object(object_kwargs)
|
return self._get_object(object_kwargs)
|
||||||
|
|
||||||
|
def flush_session_data(self):
|
||||||
|
if self._request is not None and hasattr(self._request, 'session'):
|
||||||
|
session_var_name = '{}_chained_form_session_data'.format(self._request.resolver_match.url_name)
|
||||||
|
if session_var_name in self._request.session:
|
||||||
|
del self._request.session[session_var_name]
|
||||||
|
self._session_data = dict()
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
{% block form-buttons %}
|
{% block form-buttons %}
|
||||||
{% buttons %}
|
{% buttons %}
|
||||||
<button type="submit" class="btn btn-success">{% trans 'Einsenden' %}</button>
|
<button type="submit" class="btn btn-success">{% trans 'Einsenden' %}</button>
|
||||||
<a class="btn btn-danger" href="{{ abort_url }}">{% trans 'Abbrechen' %}</a>
|
<a class="btn btn-warning" href="?back">{% trans 'Zurück' %}</a>
|
||||||
|
<a class="btn btn-danger" href="?abort">{% trans 'Abbrechen' %}</a>
|
||||||
{% endbuttons %}
|
{% endbuttons %}
|
||||||
{% endblock form-buttons %}
|
{% endblock form-buttons %}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
{% bootstrap_form_errors form %}
|
{% bootstrap_form_errors form %}
|
||||||
{% endblock form-errors %}
|
{% endblock form-errors %}
|
||||||
{% block form %}
|
{% block form %}
|
||||||
<form action="" method="post">
|
<form action="?next" method="post">
|
||||||
{% block form-content %}
|
{% block form-content %}
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% block form-fields %}
|
{% block form-fields %}
|
||||||
@@ -28,7 +28,8 @@
|
|||||||
{% block form-buttons %}
|
{% block form-buttons %}
|
||||||
{% buttons %}
|
{% buttons %}
|
||||||
<button type="submit" class="btn btn-success">{% trans 'Weiter' %}</button>
|
<button type="submit" class="btn btn-success">{% trans 'Weiter' %}</button>
|
||||||
<a class="btn btn-danger" href="{{ abort_url }}">{% trans 'Abbrechen' %}</a>
|
<a class="btn btn-warning" href="?back">{% trans 'Zurück' %}</a>
|
||||||
|
<a class="btn btn-danger" href="?abort">{% trans 'Abbrechen' %}</a>
|
||||||
{% endbuttons %}
|
{% endbuttons %}
|
||||||
{% endblock form-buttons %}
|
{% endblock form-buttons %}
|
||||||
{% endblock form-content %}
|
{% endblock form-content %}
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ class EventCreateView(generic.FormView):
|
|||||||
return self.render_to_response(self.get_context_data(form=next_form, event=event))
|
return self.render_to_response(self.get_context_data(form=next_form, event=event))
|
||||||
else:
|
else:
|
||||||
event.save()
|
event.save()
|
||||||
|
form.flush_session_data()
|
||||||
messages.success(self.request, _(u'Veranstaltung angelegt.'))
|
messages.success(self.request, _(u'Veranstaltung angelegt.'))
|
||||||
owner = event.owner
|
owner = event.owner
|
||||||
self.clean_session_data()
|
self.clean_session_data()
|
||||||
@@ -185,4 +186,11 @@ class EventCreateView(generic.FormView):
|
|||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
self.clean_session_data(request.session)
|
self.clean_session_data(request.session)
|
||||||
|
if 'abort' in request.GET:
|
||||||
|
form = self.get_form()
|
||||||
|
form.flush_session_data()
|
||||||
|
return HttpResponseRedirect(self.abort_url)
|
||||||
return super(EventCreateView, self).get(request, *args, **kwargs)
|
return super(EventCreateView, self).get(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
return super(EventCreateView, self).post(request, *args, **kwargs)
|
||||||
Reference in New Issue
Block a user