diff options
Diffstat (limited to 'archaeological_finds/views.py')
| -rw-r--r-- | archaeological_finds/views.py | 44 | 
1 files changed, 42 insertions, 2 deletions
| diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index cbd8495f8..1b08e9853 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -17,9 +17,12 @@  # 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 @@ -56,6 +59,36 @@ show_treatmentfile = show_item(models.TreatmentFile, 'treatmentfile')  get_treatmentfile = get_item(models.TreatmentFile, 'get_treatementfile',                               'treatmentfile') + +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') @@ -294,6 +327,7 @@ get_downstreamtreatment = get_item(      'downtreatment')  treatment_wizard_steps = [ +    ('file-treatment_creation', TreatmentFormFileChoice),      ('basetreatment-treatment_creation', BaseTreatmentForm),      ('selecfind-treatment_creation', UpstreamFindFormSelection),      ('selecbasket-treatment_creation', SelectFindBasketForm), @@ -353,7 +387,7 @@ treatmentfile_wizard_steps = [  treatmentfile_creation_wizard = TreatmentFileWizard.as_view(      treatmentfile_wizard_steps, -    label=_(u"New file treatment"), +    label=_(u"New treatment file"),      url_name='treatmentfile_creation',)  treatmentfile_modification_wizard = TreatmentFileModificationWizard.as_view( @@ -364,6 +398,12 @@ treatmentfile_modification_wizard = TreatmentFileModificationWizard.as_view(      url_name='treatmentfile_modification',  ) +treatmentfile_deletion_wizard = TreatmentFileDeletionWizard.as_view([ +    ('selec-treatmentfile_deletion', TreatmentFileFormSelection), +    ('final-treatmentfile_deletion', TreatmentFileDeletionForm)], +    label=_(u"Treatment file deletion"), +    url_name='treatmentfile_deletion',) +  """  treatment_source_creation_wizard = TreatmentSourceWizard.as_view([      ('selec-treatment_source_creation', SourceTreatmentFormSelection), | 
