diff options
Diffstat (limited to 'archaeological_operations')
-rw-r--r-- | archaeological_operations/forms.py | 15 | ||||
-rw-r--r-- | archaeological_operations/models.py | 2 | ||||
-rw-r--r-- | archaeological_operations/urls.py | 37 | ||||
-rw-r--r-- | archaeological_operations/views.py | 204 | ||||
-rw-r--r-- | archaeological_operations/wizards.py | 43 |
5 files changed, 156 insertions, 145 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index dc342f477..95d2d5275 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -337,21 +337,6 @@ PeriodFormset = formset_factory(PeriodForm, can_delete=True, formset=PeriodFormSet) PeriodFormset.form_label = _("Periods") -def has_associated_file(form_name, file_key='associated_file', negate=False): - def func(self, request, storage): - if storage.prefix not in request.session or \ - 'step_data' not in request.session[storage.prefix] or \ - form_name not in request.session[storage.prefix]['step_data'] or\ - form_name + '-' + file_key not in \ - request.session[storage.prefix]['step_data'][form_name]: - return negate - try: - file_id = int(request.session[storage.prefix]['step_data']\ - [form_name][form_name+'-'+file_key]) - return not negate - except ValueError: - return negate - return func class FinalOperationClosingForm(FinalForm): confirm_msg = " " confirm_end_msg = _(u"Would you like to close this operation?") diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 42026eebe..831190342 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -17,6 +17,8 @@ # See the file COPYING for details. +import datetime + from django.conf import settings from django.contrib.gis.db import models from django.db.models import Q, Count, Sum, Max, Avg diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index fb3278e31..89e1a63fc 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -19,40 +19,39 @@ from django.conf.urls.defaults import * -""" import views # forms urlpatterns = patterns('', - url(r'operation_search/(?P<step>.+)$', - views.operation_search_wizard, name='operation_search'), - url(r'operation_creation/(?P<step>.+)$', - views.operation_creation_wizard, name='operation_creation'), - url(r'operation_modification/(?P<step>.+)$', - views.operation_modification_wizard, - name='operation_modification'), - url(r'operation_closing/(?P<step>.+)$', - views.operation_closing_wizard, name='operation_closing'), - url(r'operation_deletion/(?P<step>.+)$', - views.operation_deletion_wizard, name='operation_deletion'), - url(r'operation_administrativeactop/(?P<step>.+)$', + url(r'operation_administrativeactop/(?P<step>.+)?$', views.operation_administrativeactop_wizard, name='operation_administrativeactop'), - url(r'operation_administrativeactop_modification/(?P<step>.+)$', + url(r'operation_administrativeactop_modification/(?P<step>.+)?$', views.operation_administrativeactop_modification_wizard, name='operation_administrativeactop_modification'), - url(r'operation_administrativeactop_deletion/(?P<step>.+)$', + url(r'operation_administrativeactop_deletion/(?P<step>.+)?$', views.operation_administrativeactop_deletion_wizard, name='operation_administrativeactop_deletion'), - url(r'operation_source_creation/(?P<step>.+)$', + url(r'operation_source_creation/(?P<step>.+)?$', views.operation_source_creation_wizard, name='operation_source_creation'), - url(r'operation_source_modification/(?P<step>.+)$', + url(r'operation_source_modification/(?P<step>.+)?$', views.operation_source_modification_wizard, name='operation_source_modification'), - url(r'operation_source_deletion/(?P<step>.+)$', + url(r'operation_source_deletion/(?P<step>.+)?$', views.operation_source_deletion_wizard, name='operation_source_deletion'), + url(r'operation_search/(?P<step>.+)?$', + views.operation_search_wizard, name='operation_search'), + url(r'operation_creation/(?P<step>.+)?$', + views.operation_creation_wizard, name='operation_creation'), + url(r'operation_modification/(?P<step>.+)?$', + views.operation_modification_wizard, + name='operation_modification'), + url(r'operation_closing/(?P<step>.+)?$', + views.operation_closing_wizard, name='operation_closing'), + url(r'operation_deletion/(?P<step>.+)?$', + views.operation_deletion_wizard, name='operation_deletion'), ) urlpatterns += patterns('archaeological_operations.views', @@ -72,4 +71,4 @@ urlpatterns += patterns('archaeological_operations.views', 'get_administrativeactop', name='get-administrativeactop'), url(r'get-operationsource/(?P<type>.+)?$', 'get_operationsource', name='get-operationsource'), -)""" +) diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index c00624fe1..38e2a1bc4 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -22,6 +22,7 @@ import json from django.db.models import Q from django.http import HttpResponse from django.shortcuts import render_to_response +from django.utils.translation import ugettext_lazy as _ from ishtar_common.views import get_item, show_item, revert_item from ishtar_common.wizards import SearchWizard @@ -95,130 +96,131 @@ def dashboard_operation(request, dct, obj_id=None, *args, **kwargs): context_instance=RequestContext(request)) operation_search_wizard = SearchWizard.as_view([ - ('general-operation_search', OperationFormSelection)], - label=_(u"Operation search"), - url_name='operation_search',) + ('general-operation_search', OperationFormSelection)], + label=_(u"Operation search"), + url_name='operation_search',) operation_creation_wizard = OperationWizard.as_view([ - ('general-operation_creation', OperationFormGeneral), - ('preventive-operation_creation', OperationFormPreventive), - ('preventivediag-operation_creation', OperationFormPreventiveDiag), - ('townsgeneral-operation_creation', TownFormset), - ('towns-operation_creation', SelectedTownFormset), - ('parcelsgeneral-operation_creation', SelectedParcelGeneralFormSet), - ('parcels-operation_creation', SelectedParcelFormSet), - ('remains-operation_creation', RemainFormset), - ('periods-operation_creation', PeriodFormset), - ('final-operation_creation', FinalForm)], - label=_(u"Operation creation"), - condition_dict={ - 'preventive-operation_creation':\ - is_preventive('general-operation_creation', - models.OperationType, - 'operation_type', 'prev_excavation'), - 'preventivediag-operation_creation':\ - is_preventive('general-operation_creation', - models.OperationType, - 'operation_type', 'arch_diagnostic'), - 'townsgeneral-operation_creation':has_associated_file( - 'general-operation_creation', negate=True), - 'towns-operation_creation':has_associated_file( - 'general-operation_creation'), - 'parcelsgeneral-operation_creation':has_associated_file( - 'general-operation_creation', negate=True), - 'parcels-operation_creation':has_associated_file( - 'general-operation_creation'), - }, - url_name='operation_creation',) + ('general-operation_creation', OperationFormGeneral), + ('preventive-operation_creation', OperationFormPreventive), + ('preventivediag-operation_creation', OperationFormPreventiveDiag), + ('townsgeneral-operation_creation', TownFormset), + ('towns-operation_creation', SelectedTownFormset), + ('parcelsgeneral-operation_creation', SelectedParcelGeneralFormSet), + ('parcels-operation_creation', SelectedParcelFormSet), + ('remains-operation_creation', RemainFormset), + ('periods-operation_creation', PeriodFormset), + ('final-operation_creation', FinalForm)], + label=_(u"Operation creation"), + condition_dict={ + 'preventive-operation_creation':\ + is_preventive('general-operation_creation', models.OperationType, + 'operation_type', 'prev_excavation'), + 'preventivediag-operation_creation':\ + is_preventive('general-operation_creation', models.OperationType, + 'operation_type', 'arch_diagnostic'), + 'townsgeneral-operation_creation':has_associated_file( + 'general-operation_creation', negate=True), + 'towns-operation_creation':has_associated_file( + 'general-operation_creation'), + 'parcelsgeneral-operation_creation':has_associated_file( + 'general-operation_creation', negate=True), + 'parcels-operation_creation':has_associated_file( + 'general-operation_creation'), + }, + url_name='operation_creation',) operation_modification_wizard = OperationModificationWizard.as_view([ - ('selec-operation_modification', OperationFormSelection), - ('general-operation_modification', OperationFormGeneral), - ('preventive-operation_modification', OperationFormPreventive), - ('preventivediag-operation_modification', OperationFormPreventiveDiag), - ('towns-operation_modification', SelectedTownFormset), - ('townsgeneral-operation_modification', TownFormset), - ('parcels-operation_modification', SelectedParcelFormSet), - ('parcelsgeneral-operation_modification', SelectedParcelGeneralFormSet), - ('remains-operation_modification', RemainFormset), - ('periods-operation_modification', PeriodFormset), - ('final-operation_modification', FinalForm)], - label=_(u"Operation modification"), - condition_dict={ - 'preventive-operation_modification':is_preventive( - 'general-operation_modification', models.OperationType, - 'operation_type', 'prev_excavation'), - 'preventivediag-operation_modification':is_preventive( - 'general-operation_modification', models.OperationType, - 'operation_type', 'arch_diagnostic'), - 'townsgeneral-operation_modification':has_associated_file( - 'general-operation_modification', negate=True), - 'towns-operation_modification':has_associated_file( - 'general-operation_modification'), - 'parcelsgeneral-operation_modification':has_associated_file( - 'general-operation_modification', negate=True), - 'parcels-operation_modification':has_associated_file( - 'general-operation_modification'), - }, - url_name='operation_modification',) + ('selec-operation_modification', OperationFormSelection), + ('general-operation_modification', OperationFormGeneral), + ('preventive-operation_modification', OperationFormPreventive), + ('preventivediag-operation_modification', OperationFormPreventiveDiag), + ('towns-operation_modification', SelectedTownFormset), + ('townsgeneral-operation_modification', TownFormset), + ('parcels-operation_modification', SelectedParcelFormSet), + ('parcelsgeneral-operation_modification', SelectedParcelGeneralFormSet), + ('remains-operation_modification', RemainFormset), + ('periods-operation_modification', PeriodFormset), + ('final-operation_modification', FinalForm)], + label=_(u"Operation modification"), + condition_dict={ + 'preventive-operation_modification':is_preventive( + 'general-operation_modification', models.OperationType, + 'operation_type', 'prev_excavation'), + 'preventivediag-operation_modification':is_preventive( + 'general-operation_modification', models.OperationType, + 'operation_type', 'arch_diagnostic'), + 'townsgeneral-operation_modification':has_associated_file( + 'general-operation_modification', negate=True), + 'towns-operation_modification':has_associated_file( + 'general-operation_modification'), + 'parcelsgeneral-operation_modification':has_associated_file( + 'general-operation_modification', negate=True), + 'parcels-operation_modification':has_associated_file( + 'general-operation_modification'), + }, + url_name='operation_modification',) operation_closing_wizard = OperationClosingWizard.as_view([ - ('selec-operation_closing', OperationFormSelection), - ('date-operation_closing', ClosingDateFormSelection), - ('final-operation_closing', FinalOperationClosingForm)], - label=_(u"Operation closing"), - url_name='operation_closing',) + ('selec-operation_closing', OperationFormSelection), + ('date-operation_closing', ClosingDateFormSelection), + ('final-operation_closing', FinalOperationClosingForm)], + label=_(u"Operation closing"), + url_name='operation_closing',) operation_deletion_wizard = OperationDeletionWizard.as_view([ - ('selec-operation_deletion', OperationFormSelection), - ('final-operation_deletion', OperationDeletionForm)], - label=_(u"Operation deletion"), - url_name='operation_deletion',) + ('selec-operation_deletion', OperationFormSelection), + ('final-operation_deletion', OperationDeletionForm)], + label=_(u"Operation deletion"), + url_name='operation_deletion',) operation_source_creation_wizard = OperationSourceWizard.as_view([ - ('selec-operation_source_creation', SourceOperationFormSelection), - ('source-operation_source_creation',OperationSourceForm), - ('authors-operation_source_creation', AuthorFormset), - ('final-operation_source_creation', FinalForm)], - label=_(u"Operation: source creation"), - url_name='operation_source_creation',) + ('selec-operation_source_creation', SourceOperationFormSelection), + ('source-operation_source_creation',OperationSourceForm), + ('authors-operation_source_creation', AuthorFormset), + ('final-operation_source_creation', FinalForm)], + label=_(u"Operation: source creation"), + url_name='operation_source_creation',) operation_source_modification_wizard = OperationSourceWizard.as_view([ - ('selec-operation_source_modification', OperationSourceFormSelection), - ('source-operation_source_modification', OperationSourceForm), - ('authors-operation_source_modification', AuthorFormset), - ('final-operation_source_modification', FinalForm)], - label=_(u"Operation: source modification"), - url_name='operation_source_modification',) + ('selec-operation_source_modification', OperationSourceFormSelection), + ('source-operation_source_modification', OperationSourceForm), + ('authors-operation_source_modification', AuthorFormset), + ('final-operation_source_modification', FinalForm)], + label=_(u"Operation: source modification"), + url_name='operation_source_modification',) operation_source_deletion_wizard = OperationSourceDeletionWizard.as_view([ - ('selec-operation_source_deletion', OperationSourceFormSelection), - ('final-operation_source_deletion', SourceDeletionForm)], - label=_(u"Operation: source deletion"), - url_name='operation_source_deletion',) + ('selec-operation_source_deletion', OperationSourceFormSelection), + ('final-operation_source_deletion', SourceDeletionForm)], + label=_(u"Operation: source deletion"), + url_name='operation_source_deletion',) operation_administrativeactop_wizard = \ OperationAdministrativeActWizard.as_view([ ('selec-operation_administrativeactop', OperationFormSelection), - ('administrativeact-operation_administrativeactop', AdministrativeActOpeForm), + ('administrativeact-operation_administrativeactop', + AdministrativeActOpeForm), ('final-operation_administrativeactop', FinalForm)], - label=_(u"Operation: new administrative act"), - url_name='operation_administrativeactop',) + label=_(u"Operation: new administrative act"), + url_name='operation_administrativeactop',) operation_administrativeactop_modification_wizard = \ OperationEditAdministrativeActWizard.as_view([ - ('selec-operation_administrativeactop_modification', - AdministrativeActOpeFormSelection), - ('administrativeact-operation_administrativeactop_modification', - AdministrativeActOpeForm), - ('final-operation_administrativeactop_modification', FinalForm)], - url_name='operation_administrativeactop_modification',) + ('selec-operation_administrativeactop_modification', + AdministrativeActOpeFormSelection), + ('administrativeact-operation_administrativeactop_modification', + AdministrativeActOpeForm), + ('final-operation_administrativeactop_modification', FinalForm)], + label=_(u"Operation: administrative act modification"), + url_name='operation_administrativeactop_modification',) operation_administrativeactop_deletion_wizard = \ AdministrativeActDeletionWizard.as_view([ - ('selec-operation_administrativeactop_deletion', - AdministrativeActOpeFormSelection), - ('final-operation_administrativeactop_deletion', - FinalAdministrativeActDeleteForm)], - url_name='operation_administrativeactop_deletion',) + ('selec-operation_administrativeactop_deletion', + AdministrativeActOpeFormSelection), + ('final-operation_administrativeactop_deletion', + FinalAdministrativeActDeleteForm)], + label=_(u"Operation: administrative act deletion"), + url_name='operation_administrativeactop_deletion',) diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 7c09c1154..66469b5b7 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -19,6 +19,7 @@ from django.conf import settings from django.core.exceptions import ObjectDoesNotExist +from django.db.models import Max from django.shortcuts import render_to_response from django.template import RequestContext from django.utils.translation import ugettext_lazy as _ @@ -150,18 +151,20 @@ class OperationSourceWizard(SourceWizard): initial = super(OperationSourceWizard, self).get_form_initial(step) # put default index and operation_id field in the main source form general_form_key = 'selec-' + self.url_name - if step.startswith('source-') \ - and self.session_has_key(general_form_key): - gen_storage = self.request.session[storage.prefix]['step_data']\ - [general_form_key] - if general_form_key+"-operation" in gen_storage: - operation_id = int(gen_storage[general_form_key+"-operation"]) - elif general_form_key+"-pk" in gen_storage: - pk = int(gen_storage[general_form_key+"-pk"]) + if step.startswith('source-'): + operation_id = None + if self.session_has_key(general_form_key, 'operation'): try: + operation_id = int(self.session_get_value(general_form_key, + "operation")) + except ValueError: + pass + elif self.session_has_key(general_form_key, "pk"): + try: + pk = self.session_get_value(general_form_key, "pk") source = models.OperationSource.objects.get(pk=pk) operation_id = source.operation.pk - except ObjectDoesNotExist: + except (ValueError, ObjectDoesNotExist): pass if operation_id: initial['hidden_operation_id'] = operation_id @@ -241,7 +244,7 @@ def is_preventive(form_name, model, type_key='operation_type', key=''): return False try: typ = request.session[storage.prefix]['step_data']\ - [form_name][form_name+'-'+type_key] + [form_name][form_name+'-'+type_key] if type(typ) in (list, tuple): typ = typ[0] typ = int(typ) @@ -250,3 +253,23 @@ def is_preventive(form_name, model, type_key='operation_type', key=''): return False return func +def has_associated_file(form_name, file_key='associated_file', negate=False): + def func(self): + request = self.request + storage = self.storage + if storage.prefix not in request.session or \ + 'step_data' not in request.session[storage.prefix] or \ + form_name not in request.session[storage.prefix]['step_data'] or\ + form_name + '-' + file_key not in \ + request.session[storage.prefix]['step_data'][form_name]: + return negate + try: + file_id = request.session[storage.prefix]['step_data']\ + [form_name][form_name+'-'+file_key] + if type(file_id) in (list, tuple): + file_id = file_id[0] + file_id = int(file_id) + return not negate + except ValueError: + return negate + return func |