summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2013-12-27 22:35:21 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2013-12-27 22:38:39 +0100
commit7adba01875d7b64a641d0562a9ec233de6a376cc (patch)
tree58732af3c07cfc4833e314aad8610a7d84629cca
parent9616de5a2c949bedde51e00e828478896bfe51bb (diff)
downloadIshtar-7adba01875d7b64a641d0562a9ec233de6a376cc.tar.bz2
Ishtar-7adba01875d7b64a641d0562a9ec233de6a376cc.zip
Allow modification from the window (refs #1574)
-rw-r--r--archaeological_context_records/templates/ishtar/sheet_contextrecord.html1
-rw-r--r--archaeological_context_records/urls.py4
-rw-r--r--archaeological_context_records/views.py9
-rw-r--r--archaeological_files/templates/ishtar/sheet_file.html1
-rw-r--r--archaeological_files/urls.py2
-rw-r--r--archaeological_files/views.py10
-rw-r--r--archaeological_finds/templates/ishtar/sheet_find.html1
-rw-r--r--archaeological_finds/urls.py2
-rw-r--r--archaeological_finds/views.py10
-rw-r--r--archaeological_operations/templates/ishtar/sheet_operation.html2
-rw-r--r--archaeological_operations/urls.py2
-rw-r--r--archaeological_operations/views.py10
-rw-r--r--ishtar_common/static/media/style.css5
-rw-r--r--ishtar_common/wizards.py18
14 files changed, 73 insertions, 4 deletions
diff --git a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
index 4284b7eef..06528c4d2 100644
--- a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
+++ b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
@@ -20,6 +20,7 @@
</div>
{% endif %}
<div class='tool'>{%trans "Export as:"%} <a href='{% url show-contextrecord item.pk "odt" %}'>{%trans "OpenOffice.org file"%}</a>, <a href='{% url show-contextrecord item.pk "pdf" %}'>{%trans "PDF file"%}</a></div>
+<div class='tool modify'><a href='{% url record_modify item.pk %}'>{% trans "Modify" %}</a></div>
{% if item.operation.code_patriarche %}
<p><label>{%trans "Complete ID:"%}</label>
diff --git a/archaeological_context_records/urls.py b/archaeological_context_records/urls.py
index 75808b114..7d288b031 100644
--- a/archaeological_context_records/urls.py
+++ b/archaeological_context_records/urls.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-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
@@ -29,6 +29,8 @@ urlpatterns = patterns('',
views.record_creation_wizard, name='record_creation'),
url(r'record_modification/(?P<step>.+)?$',
views.record_modification_wizard, name='record_modification'),
+ url(r'record_modify/(?P<pk>.+)/$',
+ views.record_modify, name='record_modify'),
url(r'record_deletion/(?P<step>.+)?$',
views.record_deletion_wizard, name='record_deletion'),
url(r'record_source_creation/(?P<step>.+)?$',
diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py
index 7f42866d8..73e1cd7b3 100644
--- a/archaeological_context_records/views.py
+++ b/archaeological_context_records/views.py
@@ -17,6 +17,8 @@
# See the file COPYING for details.
+from django.core.urlresolvers import reverse
+from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from ishtar_common.views import get_item, show_item, revert_item
@@ -70,6 +72,13 @@ record_modification_wizard = RecordModifWizard.as_view([
label=_(u"Context record modification"),
url_name='record_modification',)
+def record_modify(request, pk):
+ view = record_modification_wizard(request)
+ RecordModifWizard.session_set_value(
+ request, 'selec-record_modification', 'pk', pk, reset=True)
+ return redirect(reverse('record_modification',
+ kwargs={'step':'general-record_modification'}))
+
record_deletion_wizard = RecordDeletionWizard.as_view([
('selec-record_deletion', RecordFormSelection),
('final-record_deletion', RecordDeletionForm)],
diff --git a/archaeological_files/templates/ishtar/sheet_file.html b/archaeological_files/templates/ishtar/sheet_file.html
index 6602b8ee3..a83ce3df3 100644
--- a/archaeological_files/templates/ishtar/sheet_file.html
+++ b/archaeological_files/templates/ishtar/sheet_file.html
@@ -20,6 +20,7 @@
</div>
{% endif %}
<div class='tool'>{%trans "Export as:"%} <a href='{% url show-file item.pk "odt" %}'>{%trans "OpenOffice.org file"%}</a>, <a href='{% url show-file item.pk "pdf" %}'>{%trans "PDF file"%}</a></div>
+<div class='tool modify'><a href='{% url file_modify item.pk %}'>{% trans "Modify" %}</a></div>
<h3>{% trans "General"%}</h3>
<p><label>{%trans "Year:"%}</label> <span class='value'>{{ item.year }}</span></p>
{% if item.numeric_reference %}<p><label>{%trans "Numerical reference:"%}</label> <span class='value'>{{ item.numeric_reference }}</span></p>{% endif %}
diff --git a/archaeological_files/urls.py b/archaeological_files/urls.py
index ee7a8ee39..694cb1791 100644
--- a/archaeological_files/urls.py
+++ b/archaeological_files/urls.py
@@ -38,6 +38,8 @@ urlpatterns = patterns('',
views.file_creation_wizard, name='file_creation'),
url(r'file_modification/(?P<step>.+)?$',
views.file_modification_wizard, name='file_modification'),
+ url(r'file_modify/(?P<pk>.+)/$',
+ views.file_modify, name='file_modify'),
url(r'file_closing/(?P<step>.+)?$',
views.file_closing_wizard, name='file_closing'),
url(r'file_deletion/(?P<step>.+)?$',
diff --git a/archaeological_files/views.py b/archaeological_files/views.py
index 6ce194e52..b6650e7a7 100644
--- a/archaeological_files/views.py
+++ b/archaeological_files/views.py
@@ -19,9 +19,10 @@
import json
+from django.core.urlresolvers import reverse
from django.db.models import Q
from django.http import HttpResponse
-from django.shortcuts import render_to_response
+from django.shortcuts import render_to_response, redirect
from django.utils.translation import ugettext_lazy as _
from ishtar_common.views import get_item, show_item, revert_item
@@ -137,6 +138,13 @@ file_modification_wizard = FileModificationWizard.as_view([
},
url_name='file_modification',)
+def file_modify(request, pk):
+ view = file_modification_wizard(request)
+ FileModificationWizard.session_set_value(
+ request, 'selec-file_modification', 'pk', pk, reset=True)
+ return redirect(reverse('file_modification',
+ kwargs={'step':'general-file_modification'}))
+
file_closing_wizard = FileClosingWizard.as_view([
('selec-file_closing', FileFormSelection),
('date-file_closing', ClosingDateFormSelection),
diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html
index 7e45637d8..89f335e1a 100644
--- a/archaeological_finds/templates/ishtar/sheet_find.html
+++ b/archaeological_finds/templates/ishtar/sheet_find.html
@@ -22,6 +22,7 @@
{% endif %}
<div class='tool'>{%trans "Export as:"%} <a href='{% url show-find item.pk "odt" %}'>{%trans "OpenOffice.org file"%}</a>, <a href='{% url show-find item.pk "pdf" %}'>{%trans "PDF file"%}</a></div>
+<div class='tool modify'><a href='{% url find_modify item.pk %}'>{% trans "Modify" %}</a></div>
{% if item.image %}
<a href='{{item.image.url}}' rel="prettyPhoto" title="{{item.label}}"><img src='{{item.thumbnail.url}}'/></a>
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py
index 8a3a2fdb6..bf49b021d 100644
--- a/archaeological_finds/urls.py
+++ b/archaeological_finds/urls.py
@@ -29,6 +29,8 @@ urlpatterns = patterns('',
views.find_creation_wizard, name='find_creation'),
url(r'find_modification/(?P<step>.+)?$',
views.find_modification_wizard, name='find_modification'),
+ url(r'find_modify/(?P<pk>.+)/$',
+ views.find_modify, name='find_modify'),
url(r'find_source_creation/(?P<step>.+)?$',
views.find_source_creation_wizard,
name='find_source_creation'),
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index b01cd4934..b5a3debce 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -17,6 +17,8 @@
# See the file COPYING for details.
+from django.core.urlresolvers import reverse
+from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from ishtar_common.views import get_item, show_item, revert_item
@@ -72,6 +74,14 @@ find_modification_wizard = FindModificationWizard.as_view([
label=_(u"Find modification"),
url_name='find_modification',)
+def find_modify(request, pk):
+ view = find_modification_wizard(request)
+ FindModificationWizard.session_set_value(
+ request, 'selec-find_modification', 'pk', pk, reset=True)
+ return redirect(reverse('find_modification',
+ kwargs={'step':'find-find_modification'}))
+
+
find_source_creation_wizard = FindSourceWizard.as_view([
('selec-find_source_creation', SourceFindFormSelection),
('source-find_source_creation', SourceForm),
diff --git a/archaeological_operations/templates/ishtar/sheet_operation.html b/archaeological_operations/templates/ishtar/sheet_operation.html
index 2768fd96c..945b3f4e5 100644
--- a/archaeological_operations/templates/ishtar/sheet_operation.html
+++ b/archaeological_operations/templates/ishtar/sheet_operation.html
@@ -23,6 +23,8 @@
<div class='tool'>{%trans "Export as:"%} <a href='{% url show-operation item.pk "odt" %}'>{%trans "OpenOffice.org file"%}</a>, <a href='{% url show-operation item.pk "pdf" %}'>{%trans "PDF file"%}</a></div>
+<div class='tool modify'><a href='{% url operation_modify item.pk %}'>{% trans "Modify" %}</a></div>
+
<h3>{% trans "General"%}</h3>
{% if item.common_name %}<p><label>{%trans "Name:"%}</label> <span class='value'>{{ item.common_name }}</span></p>{% endif %}
<p><label>{%trans "Year:"%}</label> <span class='value'>{{ item.year }}</span></p>
diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py
index e0daa8590..bd207dd80 100644
--- a/archaeological_operations/urls.py
+++ b/archaeological_operations/urls.py
@@ -48,6 +48,8 @@ urlpatterns = patterns('',
url(r'operation_modification/(?P<step>.+)?$',
views.operation_modification_wizard,
name='operation_modification'),
+ url(r'operation_modify/(?P<pk>.+)/$',
+ views.operation_modify, name='operation_modify'),
url(r'operation_closing/(?P<step>.+)?$',
views.operation_closing_wizard, name='operation_closing'),
url(r'operation_deletion/(?P<step>.+)?$',
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index e2fa5c868..0c4609181 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -20,9 +20,10 @@
import json
import os
+from django.core.urlresolvers import reverse
from django.db.models import Q
from django.http import HttpResponse
-from django.shortcuts import render_to_response
+from django.shortcuts import render_to_response, redirect
from django.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _, pgettext_lazy
@@ -227,6 +228,13 @@ operation_modification_wizard = OperationModificationWizard.as_view([
},
url_name='operation_modification',)
+def operation_modify(request, pk):
+ view = operation_modification_wizard(request)
+ OperationModificationWizard.session_set_value(request,
+ 'selec-operation_modification', 'pk', pk, reset=True)
+ return redirect(reverse('operation_modification',
+ kwargs={'step':'general-operation_modification'}))
+
operation_closing_wizard = OperationClosingWizard.as_view([
('selec-operation_closing', OperationFormSelection),
('date-operation_closing', ClosingDateFormSelection),
diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css
index ba95e5863..205afe867 100644
--- a/ishtar_common/static/media/style.css
+++ b/ishtar_common/static/media/style.css
@@ -561,6 +561,11 @@ table.confirm tr.spacer td:last-child{
font-style:italic;
}
+#window .tool.modify{
+ font-style:normal;
+ font-weight:bold;
+}
+
#window .body{
position:absolute;
padding:2px 10px 6px 10px;
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 7add2faa8..b775a0a36 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -20,7 +20,9 @@
import datetime
from django.conf import settings
-from django.contrib.formtools.wizard.views import NamedUrlWizardView
+from django.contrib.formtools.wizard.storage import get_storage
+from django.contrib.formtools.wizard.views import NamedUrlWizardView, \
+ normalize_name
from django.core.exceptions import ObjectDoesNotExist
from django.core.files.images import ImageFile
from django.db.models.fields.files import FileField
@@ -608,6 +610,20 @@ class Wizard(NamedUrlWizardView):
form_key + '-0-' + key #only check if the first field is available
return key in request.session[storage.prefix]['step_data'][form_key]
+ @classmethod
+ def session_set_value(cls, request, form_key, key, value, reset=False):
+ prefix = form_key.split('-')[1] + normalize_name(cls.__name__)
+ storage = get_storage(cls.storage_name, prefix, request,
+ getattr(cls, 'file_storage', None))
+ if reset:
+ storage.reset()
+ data = storage.get_step_data(form_key)
+ if not data:
+ data = {}#MultiValueDict()
+ key = key if key.startswith(form_key) else form_key + '-' + key
+ data[key] = value
+ storage.set_step_data(form_key, data)
+
def session_get_value(self, form_key, key, multi=False):
"""Get the value of a specific form"""
if not self.session_has_key(form_key, key, multi):