Django

Code

Ticket #6893: form_wizard_patch_2.diff

File form_wizard_patch_2.diff, 3.3 kB (added by wamberg, 5 months ago)

Updated patch to r8172

  • django/contrib/formtools/wizard.py

    old new  
    9090            # Otherwise, move along to the next step. 
    9191            else: 
    9292                form = self.get_form(next_step) 
    93                 current_step = next_step 
     93                self.step = current_step = next_step 
    9494 
    9595        return self.render(form, request, current_step) 
    9696 
     
    209209        """ 
    210210        context = context or {} 
    211211        context.update(self.extra_context) 
    212         return render_to_response(self.get_template(self.step), dict(context, 
     212        return render_to_response(self.get_template(step), dict(context, 
    213213            step_field=self.step_field_name, 
    214214            step0=step, 
    215215            step=step + 1, 
  • django/contrib/formtools/tests.py

    old new  
    11from django import forms 
    2 from django.contrib.formtools import preview 
     2from django.contrib.formtools import preview, wizard 
    33from django import http 
    44from django.test import TestCase 
    55 
     
    8585        response = self.client.post('/test1/', test_data) 
    8686        self.assertEqual(response.content, success_string) 
    8787 
     88class WizardPageOneForm(forms.Form): 
     89    field = forms.CharField() 
     90     
     91class WizardPageTwoForm(forms.Form): 
     92    field = forms.CharField() 
     93     
     94class WizardClass(wizard.FormWizard): 
     95 
     96    def get_template(self, step): 
     97        return "formtools/wizard_form.html" 
     98     
     99    def done(self, request, cleaned_data): 
     100        return http.HttpResponse(success_string) 
     101 
     102class DummyRequest(object): 
     103    """ 
     104    We'll pass this as request instead of a real request object 
     105    """ 
     106     
     107    def __init__(self, POST=None): 
     108        self.method = "GET" 
     109        self.POST = None 
     110        if POST: 
     111            self.method = "POST" 
     112            self.POST = POST 
     113 
     114class WizardTests(TestCase): 
     115    def test_step_starts_at_zero(self): 
     116        """ 
     117        step should be zero for the first form 
     118        """ 
     119        wizard = WizardClass([WizardPageOneForm, WizardPageTwoForm]) 
     120        request = DummyRequest() 
     121        wizard(request) 
     122        self.assertEquals(0, wizard.step) 
     123         
     124    def test_step_increments(self): 
     125        """ 
     126        step should be incremented when we go to the next page 
     127        """ 
     128        wizard = WizardClass([WizardPageOneForm, WizardPageTwoForm]) 
     129        request = DummyRequest(POST={"0-field":"test", "wizard_step":"0"}) 
     130        response = wizard(request) 
     131        self.assertEquals(1, wizard.step) 
     132         
  • django/contrib/formtools/templates/formtools/wizard_form.html

    old new  
     1{% extends "base.html" %} 
     2 
     3{% block content %} 
     4<p>Step {{ step }} of {{ step_count }}</p> 
     5<form action="." method="post"> 
     6<table> 
     7{{ form }} 
     8</table> 
     9<input type="hidden" name="{{ step_field }}" value="{{ step0 }}" /> 
     10{{ previous_fields|safe }} 
     11<input type="submit"> 
     12</form> 
     13{% endblock %}