summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit0bbb58bdf1cad93846bec23d2481e5ffffa818f8 (patch)
tree9ba5641662d7abeb2c690595f3255eb9df32ccc1
parente027edce6edc7d8ba5a7dfc14069a95e531da2e1 (diff)
downloadIshtar-0bbb58bdf1cad93846bec23d2481e5ffffa818f8.tar.bz2
Ishtar-0bbb58bdf1cad93846bec23d2481e5ffffa818f8.zip
Display current item window after creation and modification (refs #1574)
-rw-r--r--archaeological_context_records/urls.py2
-rw-r--r--archaeological_context_records/wizards.py4
-rw-r--r--archaeological_files/urls.py2
-rw-r--r--archaeological_files/wizards.py2
-rw-r--r--archaeological_finds/urls.py2
-rw-r--r--archaeological_finds/wizards.py2
-rw-r--r--archaeological_operations/urls.py2
-rw-r--r--archaeological_operations/wizards.py2
-rw-r--r--ishtar_common/templates/ishtar/wizard/wizard_done.html8
-rw-r--r--ishtar_common/urls.py4
-rw-r--r--ishtar_common/wizards.py18
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