def _process(self): step = int(request.form.get('step', 1)) tpl_args = {} form = self._form_for_step(step, set_defaults=True) prev_form = self._form_for_step(step - 1) if prev_form and not prev_form.validate(): form = prev_form step = step - 1 if step == 4: tpl_args.update({ 'step_title': dict(CLONE_REPEAT_CHOICES)[request.form['repeatability']], }) elif step > 4: # last step - perform actual cloning form = REPEAT_FORM_MAP[request.form['repeatability']]( self.event_new) if form.validate_on_submit(): if form.repeatability.data == 'once': dates = [form.start_dt.data] else: clone_calculator = get_clone_calculator( form.repeatability.data, self.event_new) dates = clone_calculator.calculate(request.form) clones = [ clone_event(self.event_new, start_dt, set(form.selected_items.data), form.category.data) for start_dt in dates ] if len(clones) == 1: flash(_('Welcome to your cloned event!'), 'success') return jsonify_data(redirect=url_for( 'event_management.settings', clones[0]), flash=False) else: flash( _('{} new events created.').format(len(dates)), 'success') return jsonify_data(redirect=form.category.data.url, flash=False) else: # back to step 4, since there's been an error step = 4 dependencies = { c.name: { 'requires': list(c.requires_deep), 'required_by': list(c.required_by_deep) } for c in EventCloner.get_cloners(self.event_new) } return jsonify_template('events/management/clone_event.html', event=self.event_new, step=step, form=form, cloner_dependencies=dependencies, **tpl_args)
def _process(self): step = int(request.form.get('step', 1)) tpl_args = {} form = self._form_for_step(step, set_defaults=True) prev_form = self._form_for_step(step - 1) if prev_form and not prev_form.validate(): form = prev_form step = step - 1 if step == 4: tpl_args.update({ 'step_title': dict(CLONE_REPEAT_CHOICES)[request.form['repeatability']], }) elif step > 4: # last step - perform actual cloning form = REPEAT_FORM_MAP[request.form['repeatability']](self.event) if form.validate_on_submit(): if form.repeatability.data == 'once': dates = [form.start_dt.data] else: clone_calculator = get_clone_calculator(form.repeatability.data, self.event) dates = clone_calculator.calculate(request.form) clones = [clone_event(self.event, start_dt, set(form.selected_items.data), form.category.data) for start_dt in dates] if len(clones) == 1: flash(_('Welcome to your cloned event!'), 'success') return jsonify_data(redirect=url_for('event_management.settings', clones[0]), flash=False) else: flash(_('{} new events created.').format(len(dates)), 'success') return jsonify_data(redirect=form.category.data.url, flash=False) else: # back to step 4, since there's been an error step = 4 dependencies = {c.name: {'requires': list(c.requires_deep), 'required_by': list(c.required_by_deep)} for c in EventCloner.get_cloners(self.event)} return jsonify_template('events/management/clone_event.html', event=self.event, step=step, form=form, cloner_dependencies=dependencies, **tpl_args)