diff options
Diffstat (limited to 'archaeological_files/wizards.py')
| -rw-r--r-- | archaeological_files/wizards.py | 51 | 
1 files changed, 27 insertions, 24 deletions
diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index b161deae0..e98248965 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/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 _ @@ -26,14 +27,15 @@ from django.utils.translation import ugettext_lazy as _  from ishtar_common.wizards import Wizard, ClosingWizard  from archaeological_operations.wizards import OperationAdministrativeActWizard,\                                                AdministrativeActDeletionWizard -from archaeological_operations.models import AdministrativeAct +from ishtar_common.models import Town +from archaeological_operations.models import AdministrativeAct, Parcel  import models  class FileWizard(Wizard):      model = models.File      object_parcel_type = 'associated_file' -    def get_form(self, request, storage, step=None, data=None, files=None): +    def get_form(self, step=None, data=None, files=None):          """          Manage towns          """ @@ -43,40 +45,40 @@ class FileWizard(Wizard):              data = {}          # manage the dynamic choice of towns          if not step: -            step = self.determine_step(request, storage) -        form = self.get_form_list(request, storage)[step] +            # step = self.determine_step(request, storage) +            step = self.steps.current +        form = self.get_form_list()[step]          town_form_key = 'towns-' + self.url_name          if step.startswith('parcels-') and hasattr(form, 'management_form') \ -           and self.session_has_key(request, storage, town_form_key): +           and self.session_has_key(self.request, self.storage, town_form_key):              towns = [] -            qdict = request.session[storage.prefix]['step_data'][town_form_key] +            qdict = self.request.session[self.storage.prefix]['step_data']\ +                                        [town_form_key]              for k in qdict.keys():                  if k.endswith("town") and qdict[k]:                      try: -                        town = Town.objects.get(pk=int(qdict[k])) +                        town = Town.objects.get(pk=int(qdict[k][0]))                          towns.append((town.pk, unicode(town)))                      except (ObjectDoesNotExist, ValueError):                          pass              data['TOWNS'] = sorted(towns, key=lambda x:x[1]) -        form = super(FileWizard, self).get_form(request, storage, step, data, -                                                files) +        form = super(FileWizard, self).get_form(step, data, files)          return form -    def get_extra_model(self, dct, request, storage, form_list): -        dct = super(FileWizard, self).get_extra_model(dct, request, storage, -                                                      form_list) +    def get_extra_model(self, dct, form_list): +        dct = super(FileWizard, self).get_extra_model(dct, form_list)          if not dct['numeric_reference']:              current_ref = models.File.objects.filter(year=dct['year']                  ).aggregate(Max('numeric_reference'))["numeric_reference__max"]              dct['numeric_reference'] = current_ref and current_ref + 1 or 1          return dct -    def done(self, request, storage, form_list, **kwargs): +    def done(self, form_list, **kwargs):          '''          Save parcels          ''' -        r = super(FileWizard, self).done(request, storage, form_list, -                                         return_object=True, **kwargs) +        r = super(FileWizard, self).done(form_list, return_object=True, +                                         **kwargs)          if type(r) not in (list, tuple) or len(r) != 2:              return r          obj, res = r @@ -92,7 +94,7 @@ class FileWizard(Wizard):                  dct = frm.cleaned_data.copy()                  if 'parcel' in dct:                      try: -                        parcel = models.Parcel.objects.get(pk=dct['parcel']) +                        parcel = Parcel.objects.get(pk=dct['parcel'])                          setattr(parcel, self.object_parcel_type, obj)                          parcel.save()                      except (ValueError, ObjectDoesNotExist): @@ -106,10 +108,10 @@ class FileWizard(Wizard):                  dct[self.object_parcel_type] = obj                  if 'DELETE' in dct:                      dct.pop('DELETE') -                parcel = models.Parcel.objects.filter(**dct).count() +                parcel = Parcel.objects.filter(**dct).count()                  if not parcel: -                    dct['history_modifier'] = request.user -                    parcel = models.Parcel(**dct) +                    dct['history_modifier'] = self.request.user +                    parcel = Parcel(**dct)                      parcel.save()          return res @@ -125,6 +127,7 @@ class FileClosingWizard(ClosingWizard):      if settings.COUNTRY == 'fr':          fields += ['saisine_type', 'reference_number']      fields += ['towns'] +  class FileDeletionWizard(FileClosingWizard):      def get_formated_datas(self, forms):          datas = super(FileDeletionWizard, self).get_formated_datas(forms) @@ -135,14 +138,14 @@ class FileDeletionWizard(FileClosingWizard):                  datas[-1][1].append(('', unicode(operation)))          return datas -    def done(self, request, storage, form_list, **kwargs): -        obj = self.get_current_object(request, storage) +    def done(self, form_list, **kwargs): +        obj = self.get_current_object()          for operation in models.Operation.objects.filter(                                                     associated_file=obj).all():              operation.delete()          obj.delete()          return render_to_response('wizard_done.html', {}, -                                  context_instance=RequestContext(request)) +                                  context_instance=RequestContext(self.request))  class FileAdministrativeActWizard(OperationAdministrativeActWizard): @@ -151,5 +154,5 @@ class FileAdministrativeActWizard(OperationAdministrativeActWizard):  class FileEditAdministrativeActWizard(FileAdministrativeActWizard):      model = AdministrativeAct      edit = True -    def get_associated_item(self, request, storage, dct): -        return self.get_current_object(request, storage).associated_file +    def get_associated_item(self, dct): +        return self.get_current_object().associated_file  | 
