diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-27 17:53:15 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-27 17:55:37 +0100 |
commit | 0bbb58bdf1cad93846bec23d2481e5ffffa818f8 (patch) | |
tree | 9ba5641662d7abeb2c690595f3255eb9df32ccc1 | |
parent | e027edce6edc7d8ba5a7dfc14069a95e531da2e1 (diff) | |
download | Ishtar-0bbb58bdf1cad93846bec23d2481e5ffffa818f8.tar.bz2 Ishtar-0bbb58bdf1cad93846bec23d2481e5ffffa818f8.zip |
Display current item window after creation and modification (refs #1574)
-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 |