diff options
Diffstat (limited to 'archaeological_finds/views.py')
-rw-r--r-- | archaeological_finds/views.py | 364 |
1 files changed, 343 insertions, 21 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 89babe9b7..01e88c1b7 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -17,24 +17,32 @@ # See the file COPYING for details. +import json + from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse -from django.http import HttpResponseRedirect +from django.db.models import Q +from django.http import HttpResponseRedirect, HttpResponse from django.shortcuts import redirect from django.utils.translation import ugettext_lazy as _ from django.views.generic import TemplateView from django.views.generic.edit import CreateView, FormView +from ishtar_common.models import IshtarUser +from archaeological_operations.models import AdministrativeAct + from ishtar_common.forms import FinalForm from ishtar_common.forms_common import SourceForm, AuthorFormset, \ SourceDeletionForm -from ishtar_common.models import IshtarUser +from archaeological_operations.forms import FinalAdministrativeActDeleteForm from archaeological_context_records.forms \ import RecordFormSelection as RecordFormSelectionTable from ishtar_common.views import get_item, show_item, revert_item, \ get_autocomplete_generic, IshtarMixin, LoginRequiredMixin + from ishtar_common.wizards import SearchWizard +from archaeological_operations.wizards import AdministrativeActDeletionWizard from wizards import * from forms import * @@ -45,6 +53,57 @@ get_find = get_item(models.Find, 'get_find', 'find') get_find_for_ope = get_item(models.Find, 'get_find', 'find', own_table_cols=models.Find.TABLE_COLS_FOR_OPE) +get_find_for_treatment = get_item( + models.Find, 'get_find', 'find', + own_table_cols=models.Find.TABLE_COLS_FOR_OPE, base_request={}) + +show_treatment = show_item(models.Treatment, 'treatment') +get_treatment = get_item(models.Treatment, 'get_treatment', 'treatment') + +get_administrativeacttreatment = get_item( + AdministrativeAct, 'get_administrativeacttreatment', + 'administrativeacttreatment', + base_request={"treatment__pk__isnull": False}) + +show_treatmentfile = show_item(models.TreatmentFile, 'treatmentfile') +get_treatmentfile = get_item(models.TreatmentFile, 'get_treatmentfile', + 'treatmentfile') + +get_administrativeacttreatmentfile = get_item( + AdministrativeAct, 'get_administrativeacttreatmentfile', + 'administrativeacttreatmentfile', + base_request={"treatment_file__pk__isnull": False}) + + +def autocomplete_treatmentfile(request): + if not request.user.has_perm('ishtar_common.view_treatment', + models.Treatment) and \ + not request.user.has_perm('ishtar_common.view_own_treatment', + models.Treatment) \ + and not request.user.ishtaruser.has_right('treatmentfile_search', + session=request.session): + return HttpResponse(mimetype='text/plain') + if not request.GET.get('term'): + return HttpResponse(mimetype='text/plain') + q = request.GET.get('term') + query = Q() + for q1 in q.split(' '): + for q in q1.split(' '): + extra = Q(internal_reference__icontains=q) | \ + Q(external_id__icontains=q) | \ + Q(name__icontains=q) + try: + int(q) + extra = extra | Q(year=q) | Q(index=q) + except ValueError: + pass + query = query & extra + limit = 20 + files = models.TreatmentFile.objects.filter(query)[:limit] + data = json.dumps([{'id': file.pk, 'value': unicode(file)} + for file in files]) + return HttpResponse(data, mimetype='text/plain') + show_findsource = show_item(models.FindSource, 'findsource') get_findsource = get_item(models.FindSource, 'get_findsource', 'findsource') @@ -53,11 +112,15 @@ revert_find = revert_item(models.Find) show_findbasket = show_item(models.FindBasket, 'findbasket') -find_creation_wizard = FindWizard.as_view([ +find_creation_steps = [ ('selecrecord-find_creation', RecordFormSelectionTable), ('find-find_creation', FindForm), ('dating-find_creation', DatingFormSet), - ('final-find_creation', FinalForm)], + ('final-find_creation', FinalForm) +] + +find_creation_wizard = FindWizard.as_view( + find_creation_steps, label=_(u"New find"), url_name='find_creation',) @@ -282,28 +345,219 @@ get_downstreamtreatment = get_item( models.FindDownstreamTreatments, 'get_downstreamtreatment', 'downtreatment') -treatment_creation_wizard = TreatmentWizard.as_view([ +treatment_wizard_steps = [ + ('file-treatment_creation', TreatmentFormFileChoice), ('basetreatment-treatment_creation', BaseTreatmentForm), ('selecfind-treatment_creation', UpstreamFindFormSelection), - ('resultfind-treatment_creation', ResultFindForm), - ('resultfinds-treatment_creation', ResultFindFormSet), - ('final-treatment_creation', FinalForm)], + ('selecbasket-treatment_creation', SelectFindBasketForm), + # ('resultfind-treatment_creation', ResultFindForm), + # ('resultfinds-treatment_creation', ResultFindFormSet), + ('final-treatment_creation', FinalForm)] + +treatment_search_wizard = SearchWizard.as_view([ + ('general-treatment_search', TreatmentFormSelection)], + label=_(u"Treatment search"), + url_name='treatment_search',) + +treatment_creation_wizard = TreatmentWizard.as_view( + treatment_wizard_steps, condition_dict={ - 'selecfind-treatment_creation': - check_not_exist('basetreatment-treatment_creation', - 'basket'), - 'resultfinds-treatment_creation': - check_type_field('basetreatment-treatment_creation', - 'treatment_type', models.TreatmentType, - 'downstream_is_many'), - 'resultfind-treatment_creation': - check_type_field('basetreatment-treatment_creation', - 'treatment_type', models.TreatmentType, - 'upstream_is_many')}, + 'selecfind-treatment_creation': + check_value('basetreatment-treatment_creation', + 'target_is_basket', False), + 'selecbasket-treatment_creation': + check_value('basetreatment-treatment_creation', + 'target_is_basket', True), + # 'resultfinds-treatment_creation': + # check_type_field('basetreatment-treatment_creation', + # 'treatment_type', models.TreatmentType, + # 'downstream_is_many'), + # 'resultfind-treatment_creation': + # check_type_field('basetreatment-treatment_creation', + # 'treatment_type', models.TreatmentType, + # 'upstream_is_many') + }, label=_(u"New treatment"), url_name='treatment_creation',) -""" +treatment_modification_wizard = TreatmentModificationWizard.as_view( + [('selec-treatment_modification', TreatmentFormSelection), + ('file-treatment_modification', TreatmentFormFileChoice), + ('basetreatment-treatment_modification', TreatmentModifyForm), + ('final-treatment_modification', FinalForm)], + label=_(u"Modify"), + url_name='treatment_modification', +) + + +def treatment_modify(request, pk): + treatment_modification_wizard(request) + TreatmentModificationWizard.session_set_value( + request, 'selec-treatment_modification', 'pk', pk, reset=True) + return redirect(reverse( + 'treatment_modification', + kwargs={'step': 'basetreatment-treatment_modification'})) + + +treatment_deletion_wizard = TreatmentDeletionWizard.as_view([ + ('selec-treatment_deletion', TreatmentFormSelection), + ('final-treatment_deletion', TreatmentDeletionForm)], + label=_(u"Treatment deletion"), + url_name='treatment_deletion',) + +treatment_administrativeact_search_wizard = \ + SearchWizard.as_view([ + ('selec-treatment_admacttreatment_search', + AdministrativeActTreatmentFormSelection)], + label=_(u"Treatment: search administrative act"), + url_name='treatment_admacttreatment_search',) + +treatment_administrativeact_wizard = \ + TreatmentAdministrativeActWizard.as_view([ + ('selec-treatment_admacttreatment', TreatmentFormSelection), + ('administrativeact-treatment_admacttreatment', + AdministrativeActTreatmentForm), + ('final-treatment_admacttreatment', FinalForm)], + label=_(u"Treatment: new administrative act"), + url_name='treatment_admacttreatment',) + +treatment_administrativeact_modification_wizard = \ + TreatmentEditAdministrativeActWizard.as_view([ + ('selec-treatment_admacttreatment_modification', + AdministrativeActTreatmentFormSelection), + ('administrativeact-treatment_admacttreatment_modification', + AdministrativeActTreatmentModifForm), + ('final-treatment_admacttreatment_modification', FinalForm)], + label=_(u"Treatment: administrative act modification"), + url_name='treatment_admacttreatment_modification',) + +treatment_admacttreatment_deletion_wizard = \ + AdministrativeActDeletionWizard.as_view([ + ('selec-treatment_admacttreatment_deletion', + AdministrativeActTreatmentFormSelection), + ('final-treatment_admacttreatment_deletion', + FinalAdministrativeActDeleteForm)], + label=_(u"Treatment: administrative act deletion"), + url_name='treatment_admacttreatment_deletion',) + + +def treatment_administrativeacttreatment_modify(request, pk): + treatment_administrativeact_modification_wizard(request) + TreatmentEditAdministrativeActWizard.session_set_value( + request, + 'selec-treatment_admacttreatment_modification', + 'pk', pk, reset=True) + return redirect( + reverse( + 'treatment_admacttreatment_modification', + kwargs={ + 'step': + 'administrativeact-treatment_admacttreatment_modification' + })) + + +# treatment request + +treatmentfile_search_wizard = SearchWizard.as_view([ + ('general-treatmentfile_search', TreatmentFileFormSelection)], + label=_(u"Treatment request search"), + url_name='treatmentfile_search',) + +treatmentfile_wizard_steps = [ + ('treatmentfile-treatmentfile_creation', TreatmentFileForm), + ('final-treatmentfile_creation', FinalForm)] + + +treatmentfile_creation_wizard = TreatmentFileWizard.as_view( + treatmentfile_wizard_steps, + label=_(u"New treatment request"), + url_name='treatmentfile_creation',) + +treatmentfile_modification_wizard = TreatmentFileModificationWizard.as_view( + [('selec-treatmentfile_modification', TreatmentFileFormSelection), + ('treatmentfile-treatmentfile_modification', TreatmentFileModifyForm), + ('final-treatmentfile_modification', FinalForm)], + label=_(u"Modify"), + url_name='treatmentfile_modification', +) + + +def treatmentfile_modify(request, pk): + treatmentfile_modification_wizard(request) + TreatmentFileModificationWizard.session_set_value( + request, 'selec-treatmentfile_modification', 'pk', pk, reset=True) + return redirect(reverse( + 'treatmentfile_modification', + kwargs={'step': 'treatmentfile-treatmentfile_modification'})) + +treatmentfile_deletion_wizard = TreatmentFileDeletionWizard.as_view([ + ('selec-treatmentfile_deletion', TreatmentFileFormSelection), + ('final-treatmentfile_deletion', TreatmentFileDeletionForm)], + label=_(u"Treatment request deletion"), + url_name='treatmentfile_deletion',) + +treatmentfile_admacttreatmentfile_search_wizard = \ + SearchWizard.as_view([ + ('selec-treatmentfle_admacttreatmentfle_search', + AdministrativeActTreatmentFileFormSelection)], + label=_(u"Treatment request: search administrative act"), + url_name='treatmentfle_admacttreatmentfle_search',) + + +treatmentfile_admacttreatmentfile_wizard = \ + TreatmentFileAdministrativeActWizard.as_view([ + ('selec-treatmentfle_admacttreatmentfle', TreatmentFileFormSelection), + ('admact-treatmentfle_admacttreatmentfle', + AdministrativeActTreatmentFileForm), + ('final-treatmentfle_admacttreatmentfle', FinalForm)], + label=_(u"Treatment request: new administrative act"), + url_name='treatmentfle_admacttreatmentfle',) + +treatmentfile_admacttreatmentfile_modification_wizard = \ + TreatmentFileEditAdministrativeActWizard.as_view([ + ('selec-treatmentfle_admacttreatmentfle_modification', + AdministrativeActTreatmentFileFormSelection), + ('admact-treatmentfle_admacttreatmentfle_modification', + AdministrativeActTreatmentFileModifForm), + ('final-treatmentfle_admacttreatmentfle_modification', FinalForm)], + label=_(u"Treatment request: administrative act modification"), + url_name='treatmentfle_admacttreatmentfle_modification',) + +treatmentfile_admacttreatmentfile_deletion_wizard = \ + AdministrativeActDeletionWizard.as_view([ + ('selec-treatmentfle_admacttreatmentfle_deletion', + AdministrativeActTreatmentFileFormSelection), + ('final-treatmentfle_admacttreatmentfle_deletion', + FinalAdministrativeActDeleteForm)], + label=_(u"Treatment request: administrative act deletion"), + url_name='treatmentfle_admacttreatmentfle_deletion',) + + +def treatmentfile_administrativeacttreatmentfile_modify(request, pk): + treatmentfile_admacttreatmentfile_modification_wizard(request) + TreatmentFileEditAdministrativeActWizard.session_set_value( + request, + 'selec-treatmentfle_admacttreatmentfle_modification', + 'pk', pk, reset=True) + return redirect( + reverse( + 'treatmentfle_admacttreatmentfle_modification', + kwargs={ + 'step': + 'admact-treatmentfle_admacttreatmentfle_modification' + })) + +# sources + +show_treatmentsource = show_item(models.TreatmentSource, 'treatmentsource') +get_treatmentsource = get_item(models.TreatmentSource, 'get_treatmentsource', + 'treatmentsource') + +treatment_source_search_wizard = SearchWizard.as_view([ + ('selec-treatment_source_search', TreatmentSourceFormSelection)], + label=_(u"Treatment: source search"), + url_name='treatment_source_search',) + treatment_source_creation_wizard = TreatmentSourceWizard.as_view([ ('selec-treatment_source_creation', SourceTreatmentFormSelection), ('source-treatment_source_creation', SourceForm), @@ -311,4 +565,72 @@ treatment_source_creation_wizard = TreatmentSourceWizard.as_view([ ('final-treatment_source_creation', FinalForm)], url_name='treatment_source_creation',) -""" +treatment_source_modification_wizard = TreatmentSourceWizard.as_view([ + ('selec-treatment_source_modification', TreatmentSourceFormSelection), + ('source-treatment_source_modification', SourceForm), + ('authors-treatment_source_modification', AuthorFormset), + ('final-treatment_source_modification', FinalForm)], + label=_(u"Treatment: source modification"), + url_name='treatment_source_modification',) + + +def treatment_source_modify(request, pk): + treatment_source_modification_wizard(request) + TreatmentSourceWizard.session_set_value( + request, 'selec-treatment_source_modification', 'pk', pk, reset=True) + return redirect(reverse( + 'treatment_source_modification', + kwargs={'step': 'source-treatment_source_modification'})) + +treatment_source_deletion_wizard = TreatmentSourceDeletionWizard.as_view([ + ('selec-treatment_source_deletion', TreatmentSourceFormSelection), + ('final-treatment_source_deletion', SourceDeletionForm)], + label=_(u"Treatment: source deletion"), + url_name='treatment_source_deletion',) + +# treatment request sources + +show_treatmentfilesource = show_item(models.TreatmentFileSource, + 'treatmentfilesource') +get_treatmentfilesource = get_item( + models.TreatmentFileSource, 'get_treatmentfilesource', + 'treatmentfilesource') + +treatmentfile_source_search_wizard = SearchWizard.as_view([ + ('selec-treatmentfile_source_search', TreatmentFileSourceFormSelection)], + label=_(u"Treatment request: source search"), + url_name='treatmentfile_source_search',) + +treatmentfile_source_creation_wizard = TreatmentFileSourceWizard.as_view([ + ('selec-treatmentfile_source_creation', SourceTreatmentFileFormSelection), + ('source-treatmentfile_source_creation', SourceForm), + ('authors-treatmentfile_source_creation', AuthorFormset), + ('final-treatmentfile_source_creation', FinalForm)], + url_name='treatmentfile_source_creation',) + +treatmentfile_source_modification_wizard = TreatmentFileSourceWizard.as_view([ + ('selec-treatmentfile_source_modification', + TreatmentFileSourceFormSelection), + ('source-treatmentfile_source_modification', SourceForm), + ('authors-treatmentfile_source_modification', AuthorFormset), + ('final-treatmentfile_source_modification', FinalForm)], + label=_(u"Treatment request: source modification"), + url_name='treatmentfile_source_modification',) + + +def treatmentfile_source_modify(request, pk): + treatmentfile_source_modification_wizard(request) + TreatmentFileSourceWizard.session_set_value( + request, 'selec-treatmentfile_source_modification', 'pk', pk, + reset=True) + return redirect(reverse( + 'treatmentfile_source_modification', + kwargs={'step': 'source-treatmentfile_source_modification'})) + +treatmentfile_source_deletion_wizard = \ + TreatmentFileSourceDeletionWizard.as_view([ + ('selec-treatmentfile_source_deletion', + TreatmentFileSourceFormSelection), + ('final-treatmentfile_source_deletion', SourceDeletionForm)], + label=_(u"Treatment request: source deletion"), + url_name='treatmentfile_source_deletion',) |