summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/furnitures/forms.py')
-rw-r--r--ishtar/furnitures/forms.py68
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')
+