diff options
Diffstat (limited to 'archaeological_operations/wizards.py')
| -rw-r--r-- | archaeological_operations/wizards.py | 43 | 
1 files changed, 33 insertions, 10 deletions
| 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 | 
