diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-12-29 10:58:46 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-12-29 10:58:46 +0100 | 
| commit | f1eca7a1eef6a2ff8bb87c4626001c231eb4c8fd (patch) | |
| tree | 7856604c8fa5601a1b29adc0f1161501c33e0c7e | |
| parent | 537b4b443b5e9232a90b506c804c52ea0ed396ba (diff) | |
| download | Ishtar-f1eca7a1eef6a2ff8bb87c4626001c231eb4c8fd.tar.bz2 Ishtar-f1eca7a1eef6a2ff8bb87c4626001c231eb4c8fd.zip | |
Integration of session wizard (refs #51)
| -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; | 
