diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | ishtar/furnitures/context_processors.py | 2 | ||||
-rw-r--r-- | ishtar/furnitures/forms.py | 32 | ||||
-rw-r--r-- | ishtar/furnitures/urls.py | 2 | ||||
-rw-r--r-- | ishtar/furnitures/views.py | 7 | ||||
-rw-r--r-- | ishtar/templates/base.html | 2 | ||||
-rw-r--r-- | ishtar/templates/file_wizard.html | 13 | ||||
-rw-r--r-- | static/media/style.css | 11 |
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>» <a href='{%url action CURRENT_ACTION step.slug%}'>Step {{step.slug}}</a></li> {% endfor %} -{% endif %} + <li class='current'>» <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; |