diff options
Diffstat (limited to 'ishtar/furnitures/forms.py')
| -rw-r--r-- | ishtar/furnitures/forms.py | 68 | 
1 files changed, 40 insertions, 28 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index b78a06644..08fb912a7 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -24,13 +24,15 @@ import datetime  from django.core.urlresolvers import reverse  from django.utils.translation import ugettext_lazy as _ -from django.template import Context +from django.template import Context, RequestContext  from django.shortcuts import render_to_response  from django import forms  from merlin.wizards.utils import Step as BasicStep  from merlin.wizards.session import SessionWizard +from formwizard.forms import NamedUrlSessionFormWizard +  import models  import widgets  from ishtar import settings @@ -39,34 +41,37 @@ from django.utils.functional import lazy  reverse_lazy = lazy(reverse, unicode) -class Step(BasicStep): -    """ -    Add a label to steps -    """ -    def __init__(self, idx, label, form): -        self.label = label -        super(Step, self).__init__(idx, form) - -class Wizard(SessionWizard): -    def process_show_form(self, request, step, form): +class Wizard(NamedUrlSessionFormWizard): +    def get_template_context(self, request, storage, form=None): +        context = super(Wizard, self).get_template_context(request, storage, +                                                           form) +        step = self.get_first_step(request, storage) +        current_step = storage.get_current_step() +        context.update({'current_step':self.form_list[current_step]}) +        if step == current_step: +            return context          previous_steps = [] -        for stp in self.base_steps: -            if stp == step: -                return Context({'previous_steps':previous_steps, -                                'current_step':stp}) -            previous_steps.append(stp) -        return Context({'previous_steps':previous_steps}) +        while step: +            if step == current_step: +                context.update({'previous_steps':previous_steps}) +                return context +            else: +                previous_steps.append(self.form_list[step]) +            step = self.get_next_step(request, storage, step) +        context.update({'previous_steps':previous_steps}) +        return context  class FileWizard(Wizard): -    def get_template(self, request, step, form): -        return ['file_wizard_%s.html' % step, -                'file_wizard.html'] - -    def done(self, request, form_list): -        return render_to_response('done.html', { -                        'form_data': [form.cleaned_data for form in form_list], -         }) - +    def get_template(self, request, form): +        return ['file_wizard.html'] + +    def done(self, request, storage, form_list): +        return render_to_response( +            'file_done.html', +            {'form_list': [form.cleaned_data for form in form_list]}, +            context_instance=RequestContext(request) +            ) +    """      def process_step(self, request, step, form):          if models.PREVENTIVE and 'file_type' in form.cleaned_data:              file_type = int(form.cleaned_data['file_type']) @@ -79,9 +84,10 @@ class FileWizard(Wizard):              else:                  preventive_step = self.get_step(request, 'preventive')                  self.remove_step(request, preventive_step) - +"""  class FileForm1(forms.Form): +    form_label = _("General")      in_charge = forms.IntegerField(label=_("Person in charge"),           widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person'),                                             associated_model=models.Person), @@ -97,8 +103,8 @@ class FileForm1(forms.Form):      comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea,                                required=False) -  class FileForm2(forms.Form): +    form_label = _("Address")      town = forms.IntegerField(label=_(u"Town"),           widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-town'),                                             associated_model=models.Town), @@ -106,7 +112,9 @@ class FileForm2(forms.Form):      total_surface = forms.IntegerField(label=_("Total surface"))      address = forms.CharField(label=_(u"Address"), widget=forms.Textarea) +  class FileForm3(forms.Form): +    form_label = _("Preventive informations")      general_contractor = forms.IntegerField(label=_(u"General contractor"),              widget=widgets.JQueryAutoComplete(                  reverse_lazy('autocomplete-organization'), @@ -118,3 +126,7 @@ class FileForm3(forms.Form):          saisine_type = forms.ChoiceField(label=_("Saisine type"),                                    choices=models.SaisineType.get_types())      reception_date = forms.DateField(label=_(u"Reception date")) + +file_creation_wizard = FileWizard([FileForm1, FileForm2, FileForm3], +                                  url_name='file_creation') +  | 
