i've got django sessionwizardview in want add data user take advantage of during steps. want build list, , dict stores information steps once complete.
the first step in wizard allows user add information , @ end allows option add person's details. if option selected another, conditional, form rendered & i'd provide them option use data entered previously.
so during process_step() method i'm creating list, , corresponding dictionary of data each step in process. had these class attributes, feel better suited in user's session i've attempted add them so;
def process_step(self, form): form_data = self.get_form_step_data(form) current_step = self.storage.current_step or '' data_dict = self.request.session.get('data_dict', dict()) data_list = self.request.session.get('data_list', list()) if current_step in data_dict: # replace existing data step. data_dict.pop(current_step) if not isinstance(form, termsform): entrant_data = dict() k, v in form_data.iteritems(): entrant_data[k] = v k in entrant_data.iterkeys(): new_key = re.sub('{}-'.format(current_step), u'', k) entrant_data[new_key] = entrant_data.pop(k) data_dict[current_step] = entrant_data done = false i, data in enumerate(data_list): if data[0] == current_step: data_list[i] = ( current_step, u'{} {}'.format( entrant_data['first_name'], entrant_data['last_name'] ) ) done = true if not done: data_list.append( ( current_step, u'{} {}'.format( entrant_data['first_name'], entrant_data['last_name'] ) ) ) self.request.session['data_dict'] = data_dict self.request.session['data_list'] = data_list self.request.session.modified = true return form_data after method ran new session keys aren't part of session. i've been reading, valid way of setting session data, have made mistake somewhere?
of top of head, process_step function call misses explicit request parm. it's called this:
process_step(self, request, form, step):
Comments
Post a Comment