Added primitive Back button to EventCreate.

This commit is contained in:
2018-01-23 23:08:08 +01:00
parent 221024393e
commit 013ac34c43
5 changed files with 30 additions and 8 deletions

View File

@@ -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()