From 150be2c021b54e5db007abdd568b433ab693dc79 Mon Sep 17 00:00:00 2001 From: Andy Denmark Date: Wed, 14 Nov 2012 22:37:29 -0800 Subject: [PATCH 1/2] urljoin is no longer in django.http as of Django 1.5a1 --- src/merlin/wizards/session.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/merlin/wizards/session.py b/src/merlin/wizards/session.py index 9be3231..08ed1a6 100644 --- a/src/merlin/wizards/session.py +++ b/src/merlin/wizards/session.py @@ -1,3 +1,5 @@ +from urlparse import urljoin + from functools import wraps from django.http import * From 5523437e4a245141aaa9888943b1500380a9e72b Mon Sep 17 00:00:00 2001 From: Andy Denmark Date: Thu, 15 Nov 2012 10:19:48 -0800 Subject: [PATCH 2/2] Allow a wizard form to submit a POST with a slug request parameter that overrides the default behavior of going to the next step. This makes it possible to go to a previous step and not lose state on the current form in the wizard. --- src/merlin/wizards/session.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/merlin/wizards/session.py b/src/merlin/wizards/session.py index 08ed1a6..f31ac14 100644 --- a/src/merlin/wizards/session.py +++ b/src/merlin/wizards/session.py @@ -166,7 +166,13 @@ def process_POST(self, request, step): self.set_cleaned_data(request, step, form.cleaned_data) self.process_step(request, step, form) - next_step = self.get_after(request, step) + + slug = request.POST.get('slug', None) + + if slug: + next_step = self.get_step(request, slug) + else: + next_step = self.get_after(request, step) if next_step: url_base = self._get_URL_base(request, step)