summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--ishtar/furnitures/context_processors.py2
-rw-r--r--ishtar/furnitures/forms.py32
-rw-r--r--ishtar/furnitures/urls.py2
-rw-r--r--ishtar/furnitures/views.py7
-rw-r--r--ishtar/templates/base.html2
-rw-r--r--ishtar/templates/file_wizard.html13
-rw-r--r--static/media/style.css11
8 files changed, 50 insertions, 20 deletions
diff --git a/.gitignore b/.gitignore
index ebe020a67..92606cf09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
*.pyc
*.mo
django-simple-history/*
+django-merlin/*
communesdefrancedetaillees.csv
projet_données_d_échange_2010.zip
ishtar-docs
diff --git a/ishtar/furnitures/context_processors.py b/ishtar/furnitures/context_processors.py
index f58a4cadd..5711e5341 100644
--- a/ishtar/furnitures/context_processors.py
+++ b/ishtar/furnitures/context_processors.py
@@ -29,6 +29,8 @@ def get_base_context(request):
menu = Menu(request.user)
menu.init()
request.session['MENU'] = menu
+ if 'CURRENT_ACTION' in request.session:
+ dct['CURRENT_ACTION'] = request.session['CURRENT_ACTION']
dct['MENU'] = request.session['MENU']
dct['JQUERY_URL'] = settings.JQUERY_URL
return dct
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py
index 4c3efa33a..077964484 100644
--- a/ishtar/furnitures/forms.py
+++ b/ishtar/furnitures/forms.py
@@ -21,26 +21,44 @@
Forms definition
"""
from django.utils.translation import ugettext_lazy as _
-from wizard import FormWizard
+from django.template import Context
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
+
import models
+class Step(BasicStep):
+ """
+ Add a label to steps
+ """
+ def __init__(self, idx, label, form):
+ self.label = label
+ super(Step, self).__init__(idx, form)
+
class FileForm1(forms.Form):
subject = forms.CharField(max_length=100)
sender = forms.EmailField()
-class FileForm2(forms.ModelForm):
- fields = ('towns',)
- class Meta:
- model = models.File
+class FileForm2(forms.Form):
+ subject2 = forms.CharField(max_length=100)
+ sender2 = forms.EmailField()
-class FileWizard(FormWizard):
- def get_template(self, step):
+class FileWizard(SessionWizard):
+ def get_template(self, request, step, form):
return ['templates/file_wizard_%s.html' % step,
'file_wizard.html']
+ def process_show_form(self, request, step, form):
+ previous_steps = []
+ for stp in self.base_steps:
+ if stp == step:
+ return Context({'previous_steps':previous_steps})
+ previous_steps.append(stp)
+ return Context({'previous_steps':previous_steps})
+
def done(self, request, form_list):
return render_to_response('done.html', {
'form_data': [form.cleaned_data for form in form_list],
diff --git a/ishtar/furnitures/urls.py b/ishtar/furnitures/urls.py
index f791c9f74..9c09c323d 100644
--- a/ishtar/furnitures/urls.py
+++ b/ishtar/furnitures/urls.py
@@ -30,6 +30,6 @@ for section in menu.childs:
actions = r"|".join(actions)
urlpatterns += patterns('ishtar.furnitures.views',
- url(BASE_URL + r'(?P<action>' + actions + r')/' + \
+ url(BASE_URL + r'(?P<action>' + actions + r')/(?P<slug>[A-Za-z0-9_-]+)/' +\
r'((?P<obj_id>\d)/)?$', 'action', name='action'),
)
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py
index 359fc1b58..96e84cc6f 100644
--- a/ishtar/furnitures/views.py
+++ b/ishtar/furnitures/views.py
@@ -28,7 +28,7 @@ from django.utils.translation import ugettext, ugettext_lazy as _
from ishtar import settings
from menus import menu
-from forms import FileForm1, FileForm2, FileWizard
+from forms import Step, FileForm1, FileForm2, FileWizard
def index(request):
"""
@@ -45,14 +45,15 @@ def action(request, action, obj_id=None, *args, **kwargs):
not menu.items[action].can_be_available(request.user):
not_permitted_msg = ugettext(u"Operation not permitted.")
return HttpResponse(not_permitted_msg)
- dct = {'current_action':action}
+ request.session['CURRENT_ACTION'] = action
globals_dct = globals()
if action in globals_dct:
return globals_dct[action](request, dct, obj_id, *args, **kwargs)
return render_to_response('index.html', dct,
context_instance=RequestContext(request))
-file_wizard = FileWizard([FileForm1, FileForm2])
+file_wizard = FileWizard([Step('1', _(u"General"), FileForm1),
+ Step('2', _(u"Localisation"), FileForm2)])
def file_creation(request, dct, obj_id, *args, **kwargs):
return file_wizard(request, *args, **kwargs)
diff --git a/ishtar/templates/base.html b/ishtar/templates/base.html
index b25d683e4..97d3fda7e 100644
--- a/ishtar/templates/base.html
+++ b/ishtar/templates/base.html
@@ -36,7 +36,7 @@
{% if section.available %}<li>{{section.label}}
<ul>
{% for menu_item in section.childs %}{%if menu_item.available%}
- <li{%ifequal menu_item.idx current_action%} class='selected'{%endifequal%}><a href='{% url action menu_item.idx%}'>{{menu_item.label}}</a></li>
+ <li{%ifequal menu_item.idx CURRENT_ACTION%} class='selected'{%endifequal%}><a href='{% url action menu_item.idx 1%}'>{{menu_item.label}}</a></li>
{%endif%}{% endfor %}
</ul>
</li>{%endif%}
diff --git a/ishtar/templates/file_wizard.html b/ishtar/templates/file_wizard.html
index d9e6a2d8d..4ac4644e6 100644
--- a/ishtar/templates/file_wizard.html
+++ b/ishtar/templates/file_wizard.html
@@ -2,15 +2,12 @@
{% load i18n %}
{% load range %}
{% block content %}
-{% if step > 1 %}
-{% for step_num in step|get_range %}
-<form action="." method="post">{% csrf_token %}
-<input type="submit" value="Step {{step_num}}">
-{{ previous_fields|safe }}
-<input type="hidden" name="{{ next_step_field }}" value="1" />
-</form>
+<ul id='form_path'>
+{% for step in extra_context.previous_steps %}
+ <li>&raquo; <a href='{%url action CURRENT_ACTION step.slug%}'>Step {{step.slug}}</a></li>
{% endfor %}
-{% endif %}
+ <li class='current'>&raquo; <a href='{%url action CURRENT_ACTION current_step.slug%}'>Step {{current_step.slug}}</a></li>
+</ul>
<form action="." method="post">{% csrf_token %}
<table>
{{ form }}
diff --git a/static/media/style.css b/static/media/style.css
index 863cef014..ef721fb3b 100644
--- a/static/media/style.css
+++ b/static/media/style.css
@@ -87,6 +87,17 @@ div#content{
margin-left:200px;
}
+ul#form_path li{
+ display: inline;
+ text-align: center;
+ padding-left: 10px ;
+ margin: 0;
+}
+
+ul#form_path li.current a{
+ color:#922;
+}
+
div.form {
margin-left:auto;
margin-right:auto;