diff options
| -rw-r--r-- | archaeological_context_records/urls.py | 2 | ||||
| -rw-r--r-- | archaeological_context_records/wizards.py | 4 | ||||
| -rw-r--r-- | archaeological_files/urls.py | 2 | ||||
| -rw-r--r-- | archaeological_files/wizards.py | 2 | ||||
| -rw-r--r-- | archaeological_finds/urls.py | 2 | ||||
| -rw-r--r-- | archaeological_finds/wizards.py | 2 | ||||
| -rw-r--r-- | archaeological_operations/urls.py | 2 | ||||
| -rw-r--r-- | archaeological_operations/wizards.py | 2 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/wizard/wizard_done.html | 8 | ||||
| -rw-r--r-- | ishtar_common/urls.py | 4 | ||||
| -rw-r--r-- | ishtar_common/wizards.py | 18 | 
11 files changed, 35 insertions, 13 deletions
| diff --git a/archaeological_context_records/urls.py b/archaeological_context_records/urls.py index 772938b81..75808b114 100644 --- a/archaeological_context_records/urls.py +++ b/archaeological_context_records/urls.py @@ -43,7 +43,7 @@ urlpatterns = patterns('',  )  urlpatterns += patterns('archaeological_context_records.views', -     url(r'show-contextrecord/(?P<pk>.+)?/(?P<type>.+)?$', +     url(r'show-contextrecord(?:/(?P<pk>.+))?/(?P<type>.+)?$',             'show_contextrecord', name='show-contextrecord'),       url(r'show-historized-contextrecord/(?P<pk>.+)?/(?P<date>.+)?$',             'show_contextrecord', name='show-historized-contextrecord'), diff --git a/archaeological_context_records/wizards.py b/archaeological_context_records/wizards.py index 60dab44d6..cd48d1308 100644 --- a/archaeological_context_records/wizards.py +++ b/archaeological_context_records/wizards.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2012  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2012-2013  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as @@ -23,12 +23,14 @@ from django.shortcuts import render_to_response  from django.template import RequestContext  from django.utils.translation import ugettext_lazy as _ +from ishtar_common.forms import reverse_lazy  from ishtar_common.wizards import Wizard, DeletionWizard, SourceWizard  import models  class RecordWizard(Wizard):      model = models.ContextRecord      edit = False +    wizard_done_window = reverse_lazy('show-contextrecord')      def get_current_operation(self):          step = self.steps.current diff --git a/archaeological_files/urls.py b/archaeological_files/urls.py index 2640aec1d..ee7a8ee39 100644 --- a/archaeological_files/urls.py +++ b/archaeological_files/urls.py @@ -53,7 +53,7 @@ urlpatterns += patterns('archaeological_files.views',             name='get-file-full', kwargs={'full':True}),       url(r'get-administrativeactfile/(?P<type>.+)?$',             'get_administrativeactfile', name='get-administrativeactfile'), -     url(r'show-file/(?P<pk>.+)?/(?P<type>.+)?$', 'show_file', +     url(r'show-file(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_file',             name='show-file'),       url(r'show-historized-file/(?P<pk>.+)?/(?P<date>.+)?$',             'show_file', name='show-historized-file'), diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index 06e3bb5ed..7fb654b0b 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/wizards.py @@ -24,6 +24,7 @@ from django.shortcuts import render_to_response  from django.template import RequestContext  from django.utils.translation import ugettext_lazy as _ +from ishtar_common.forms import reverse_lazy  from ishtar_common.wizards import Wizard, ClosingWizard  from archaeological_operations.wizards import OperationWizard,\                                                OperationAdministrativeActWizard,\ @@ -37,6 +38,7 @@ class FileWizard(OperationWizard):      model = models.File      object_parcel_type = 'associated_file'      parcel_step_key = 'parcels-' +    wizard_done_window = reverse_lazy('show-file')      def get_form(self, step=None, data=None, files=None):          """ diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index eb1c8fcaf..8a3a2fdb6 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -47,7 +47,7 @@ urlpatterns += patterns('archaeological_finds.views',             name='get-find-full', kwargs={'full':True}),       url(r'get-findsource/(?P<type>.+)?$',             'get_findsource', name='get-findsource'), -     url(r'show-find/(?P<pk>.+)?/(?P<type>.+)?$', 'show_find', +     url(r'show-find(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_find',             name='show-find'),       url(r'show-historized-find/(?P<pk>.+)?/(?P<date>.+)?$',             'show_find', name='show-historized-find'), diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index e5024f10e..0a7ddc284 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -25,12 +25,14 @@ from django.template import RequestContext  from django.utils.safestring import mark_safe  from django.utils.translation import ugettext_lazy as _ +from ishtar_common.forms import reverse_lazy  from ishtar_common.wizards import Wizard, DeletionWizard, SourceWizard  import models  class FindWizard(Wizard):      file_storage = default_storage      model = models.Find +    wizard_done_window = reverse_lazy('show-find')      def get_current_contextrecord(self):          step = self.steps.current diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index 5f52254bd..e0daa8590 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -68,7 +68,7 @@ urlpatterns += patterns('archaeological_operations.views',             'get_available_operation_code', name='get_available_operation_code'),       url(r'revert-operation/(?P<pk>.+)/(?P<date>.+)$',             'revert_operation', name='revert-operation'), -     url(r'show-operation/(?P<pk>.+)?/(?P<type>.+)?$', +     url(r'show-operation(?:/(?P<pk>.+))?/(?P<type>.+)?$',             'show_operation', name='show-operation'),       url(r'show-historized-operation/(?P<pk>.+)?/(?P<date>.+)?$',             'show_operation', name='show-historized-operation'), diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index a61452733..d816cf9aa 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -25,6 +25,7 @@ from django.shortcuts import render_to_response  from django.template import RequestContext  from django.utils.translation import ugettext_lazy as _ +from ishtar_common.forms import reverse_lazy  from ishtar_common.wizards import Wizard, ClosingWizard, DeletionWizard, \                                    SourceWizard  import models @@ -34,6 +35,7 @@ class OperationWizard(Wizard):      model = models.Operation      object_parcel_type = 'operation'      parcel_step_key = 'parcelsgeneral-' +    wizard_done_window = reverse_lazy('show-operation')      def get_template_names(self):          templates = super(OperationWizard, self).get_template_names() diff --git a/ishtar_common/templates/ishtar/wizard/wizard_done.html b/ishtar_common/templates/ishtar/wizard/wizard_done.html index 7de3edfce..2823c1bae 100644 --- a/ishtar_common/templates/ishtar/wizard/wizard_done.html +++ b/ishtar_common/templates/ishtar/wizard/wizard_done.html @@ -2,10 +2,14 @@  {% load i18n %}  {% block content %}  <p>{%trans "Item successfully saved"%}</p> -{% if redirect %} +{% if redirect or wizard_done_window %}  <script type='text/javascript' language='javascript'> +{% if redirect %}  window.location.href = "{{redirect}}"; +{% endif %} +{% if wizard_done_window %} +$(function(){ load_window("{{wizard_done_window}}{{item.pk}}/"); }); +{% endif %}  </script>  {% endif %} -</div>  {% endblock %} diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 565db57d5..63c0d55f8 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -65,7 +65,7 @@ urlpatterns += patterns('ishtar_common.views',             name='autocomplete-person'),       url(r'get-person/(?P<type>.+)?$', 'get_person',             name='get-person'), -     url(r'show-person/(?P<pk>.+)?/(?P<type>.+)?$', +     url(r'show-person(?:/(?P<pk>.+))?/(?P<type>.+)?$',             'show_person', name='show-person'),       url(r'autocomplete-town/?$', 'autocomplete_town',             name='autocomplete-town'), @@ -77,7 +77,7 @@ urlpatterns += patterns('ishtar_common.views',             'new_organization', name='new-organization'),       url(r'get-organization/(?P<type>.+)?$', 'get_organization',             name='get-organization'), -     url(r'show-organization/(?P<pk>.+)?/(?P<type>.+)?$', +     url(r'show-organization(?:/(?P<pk>.+))?/(?P<type>.+)?$',             'show_organization', name='show-organization'),       url(r'autocomplete-organization/([0-9_]+)?$',             'autocomplete_organization', name='autocomplete-organization'), diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index a237fb327..7add2faa8 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -34,7 +34,9 @@ import models  class MultiValueDict(BaseMultiValueDict):      def get(self, *args, **kwargs):          v = super(MultiValueDict, self).getlist(*args, **kwargs) -        if len(v) > 1: +        if callable(v): +            v = v() +        if type(v) in (list, tuple) and len(v) > 1:              v = ",".join(v)          else:              v = super(MultiValueDict, self).get(*args, **kwargs) @@ -46,6 +48,8 @@ class Wizard(NamedUrlWizardView):      modification = None # True when the wizard modify an item      storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'      translated_keys = ['title'] +    wizard_done_template = 'ishtar/wizard/wizard_done.html' +    wizard_done_window = ''      @staticmethod      def _check_right(step, condition=True): @@ -355,8 +359,9 @@ class Wizard(NamedUrlWizardView):                     isinstance(obj.__class__._meta.get_field(k), ImageFile)):                      if not dct[k]:                          dct[k] = None -                if isinstance(obj.__class__._meta.get_field(k), -                              ManyToManyField): +                if not k.endswith('_id') and ( +                   isinstance(obj.__class__._meta.get_field(k), +                              ManyToManyField)):                      if not dct[k]:                          dct[k] = []                      elif type(dct[k]) not in (list, tuple): @@ -439,7 +444,12 @@ class Wizard(NamedUrlWizardView):                  # necessary to manage interaction between models like                  # material_index management for baseitems                  obj.save() -        res = render_to_response('ishtar/wizard/wizard_done.html', {}, +        dct = {'item':obj} +        # force evaluation of lazy urls +        wizard_done_window = unicode(self.wizard_done_window) +        if wizard_done_window: +            dct['wizard_done_window'] = wizard_done_window +        res = render_to_response(self.wizard_done_template, dct,                                    context_instance=RequestContext(self.request))          return return_object and (obj, res) or res | 
