Added primitive Back button to EventCreate.
This commit is contained in:
@@ -17,6 +17,11 @@ class ChainedForm(forms.Form):
|
||||
self._request = kwargs.pop('request', None)
|
||||
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)
|
||||
|
||||
self._proceed_session_data(self._session_data)
|
||||
@@ -34,6 +39,9 @@ class ChainedForm(forms.Form):
|
||||
for k in session_data:
|
||||
self._session_data[k] = self._deserialize_value(session_data[k])
|
||||
|
||||
def _proceed_session_data(self, session_data):
|
||||
pass
|
||||
|
||||
def _save_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)
|
||||
@@ -42,9 +50,6 @@ class ChainedForm(forms.Form):
|
||||
session_data[k] = self._serialize_value(self._session_data[k])
|
||||
self._request.session[session_var_name] = session_data
|
||||
|
||||
def _proceed_session_data(self, session_data):
|
||||
pass
|
||||
|
||||
def _get_model(self):
|
||||
if not hasattr(self, '_model'):
|
||||
raise ImproperlyConfigured('{cls} is missing a Model.'
|
||||
@@ -99,7 +104,7 @@ class ChainedForm(forms.Form):
|
||||
|
||||
def save(self):
|
||||
object_kwargs = dict()
|
||||
data = self._session_data
|
||||
data = self._session_data.copy()
|
||||
if 'deadline' in data:
|
||||
buf = data['deadline']
|
||||
if isinstance(buf, basestring):
|
||||
@@ -114,3 +119,10 @@ class ChainedForm(forms.Form):
|
||||
object_kwargs[field] = data[field]
|
||||
|
||||
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 %}
|
||||
{% buttons %}
|
||||
<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 %}
|
||||
{% endblock form-buttons %}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
{% bootstrap_form_errors form %}
|
||||
{% endblock form-errors %}
|
||||
{% block form %}
|
||||
<form action="" method="post">
|
||||
<form action="?next" method="post">
|
||||
{% block form-content %}
|
||||
{% csrf_token %}
|
||||
{% block form-fields %}
|
||||
@@ -28,7 +28,8 @@
|
||||
{% block form-buttons %}
|
||||
{% buttons %}
|
||||
<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 %}
|
||||
{% endblock form-buttons %}
|
||||
{% 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))
|
||||
else:
|
||||
event.save()
|
||||
form.flush_session_data()
|
||||
messages.success(self.request, _(u'Veranstaltung angelegt.'))
|
||||
owner = event.owner
|
||||
self.clean_session_data()
|
||||
@@ -185,4 +186,11 @@ class EventCreateView(generic.FormView):
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
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)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
return super(EventCreateView, self).post(request, *args, **kwargs)
|
||||
Reference in New Issue
Block a user