From 7adba01875d7b64a641d0562a9ec233de6a376cc Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 27 Dec 2013 22:35:21 +0100 Subject: Allow modification from the window (refs #1574) --- .../templates/ishtar/sheet_contextrecord.html | 1 + archaeological_context_records/urls.py | 4 +++- archaeological_context_records/views.py | 9 +++++++++ archaeological_files/templates/ishtar/sheet_file.html | 1 + archaeological_files/urls.py | 2 ++ archaeological_files/views.py | 10 +++++++++- archaeological_finds/templates/ishtar/sheet_find.html | 1 + archaeological_finds/urls.py | 2 ++ archaeological_finds/views.py | 10 ++++++++++ .../templates/ishtar/sheet_operation.html | 2 ++ archaeological_operations/urls.py | 2 ++ archaeological_operations/views.py | 10 +++++++++- ishtar_common/static/media/style.css | 5 +++++ ishtar_common/wizards.py | 18 +++++++++++++++++- 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 @@ {% endif %}
{%trans "Export as:"%} {%trans "OpenOffice.org file"%}, {%trans "PDF file"%}
+
{% trans "Modify" %}
{% if item.operation.code_patriarche %}

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 +# Copyright (C) 2010-2013 Étienne Loks # 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.+)?$', views.record_modification_wizard, name='record_modification'), + url(r'record_modify/(?P.+)/$', + views.record_modify, name='record_modify'), url(r'record_deletion/(?P.+)?$', views.record_deletion_wizard, name='record_deletion'), url(r'record_source_creation/(?P.+)?$', 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 @@ {% endif %}

{%trans "Export as:"%} {%trans "OpenOffice.org file"%}, {%trans "PDF file"%}
+
{% trans "Modify" %}

{% trans "General"%}

{{ item.year }}

{% if item.numeric_reference %}

{{ item.numeric_reference }}

{% 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.+)?$', views.file_modification_wizard, name='file_modification'), + url(r'file_modify/(?P.+)/$', + views.file_modify, name='file_modify'), url(r'file_closing/(?P.+)?$', views.file_closing_wizard, name='file_closing'), url(r'file_deletion/(?P.+)?$', 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 %} + {% if item.image %} 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.+)?$', views.find_modification_wizard, name='find_modification'), + url(r'find_modify/(?P.+)/$', + views.find_modify, name='find_modify'), url(r'find_source_creation/(?P.+)?$', 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 @@ + +

{% trans "General"%}

{% if item.common_name %}

{{ item.common_name }}

{% endif %}

{{ item.year }}

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.+)?$', views.operation_modification_wizard, name='operation_modification'), + url(r'operation_modify/(?P.+)/$', + views.operation_modify, name='operation_modify'), url(r'operation_closing/(?P.+)?$', views.operation_closing_wizard, name='operation_closing'), url(r'operation_deletion/(?P.+)?$', 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): -- cgit v1.2.3