diff options
Diffstat (limited to 'archaeological_files/wizards.py')
| -rw-r--r-- | archaeological_files/wizards.py | 108 | 
1 files changed, 65 insertions, 43 deletions
| diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index c259effbe..1538a984a 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/wizards.py @@ -23,10 +23,11 @@ from django.db.models import Max  from ishtar_common.utils import ugettext_lazy as _  from ishtar_common.forms import reverse_lazy -from ishtar_common.wizards import ClosingWizard, SearchWizard, \ -    MultipleDeletionWizard -from archaeological_operations.wizards import OperationWizard,\ -    OperationAdministrativeActWizard +from ishtar_common.wizards import ClosingWizard, SearchWizard, MultipleDeletionWizard +from archaeological_operations.wizards import ( +    OperationWizard, +    OperationAdministrativeActWizard, +)  from archaeological_operations.models import AdministrativeAct, Parcel  from . import models @@ -37,26 +38,26 @@ class FileSearch(SearchWizard):  class FileWizard(OperationWizard):      model = models.File -    object_parcel_type = 'associated_file' -    parcel_step_key = 'parcels-' -    town_step_keys = ['towns-'] -    wizard_done_window = reverse_lazy('show-file') +    object_parcel_type = "associated_file" +    parcel_step_key = "parcels-" +    town_step_keys = ["towns-"] +    wizard_done_window = reverse_lazy("show-file")      redirect_url = "file_modification"      def get_extra_model(self, dct, m2m, form_list):          dct = super(FileWizard, self).get_extra_model(dct, m2m, form_list) -        if not dct.get('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 +        if not dct.get("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, form_list, **kwargs):          """          Save parcels and make numeric_reference unique          """ -        r = super(FileWizard, self).done(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 @@ -64,9 +65,13 @@ class FileWizard(OperationWizard):          if not self.modification:              numeric_reference = obj.numeric_reference              changed = False -            while obj.__class__.objects.filter( -                    numeric_reference=numeric_reference, -                    year=obj.year).exclude(pk=obj.pk).count(): +            while ( +                obj.__class__.objects.filter( +                    numeric_reference=numeric_reference, year=obj.year +                ) +                .exclude(pk=obj.pk) +                .count() +            ):                  numeric_reference += 1                  changed = True              if changed: @@ -74,33 +79,35 @@ class FileWizard(OperationWizard):                  obj.save()          obj.parcels.clear()          for form in form_list: -            if not hasattr(form, 'prefix') \ -               or not form.prefix.startswith(self.parcel_step_key) \ -               or not hasattr(form, 'forms'): +            if ( +                not hasattr(form, "prefix") +                or not form.prefix.startswith(self.parcel_step_key) +                or not hasattr(form, "forms") +            ):                  continue              for frm in form.forms:                  if not frm.is_valid():                      continue                  dct = frm.cleaned_data.copy() -                if 'parcel' in dct: +                if "parcel" in dct:                      try: -                        parcel = 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):                          continue                      continue                  try: -                    dct['town'] = models.Town.objects.get(pk=int(dct['town'])) +                    dct["town"] = models.Town.objects.get(pk=int(dct["town"]))                  except (ValueError, ObjectDoesNotExist, KeyError):                      continue -                dct['associated_file'], dct['operation'] = None, None +                dct["associated_file"], dct["operation"] = None, None                  dct[self.object_parcel_type] = obj -                if 'DELETE' in dct: -                    dct.pop('DELETE') +                if "DELETE" in dct: +                    dct.pop("DELETE")                  parcel = Parcel.objects.filter(**dct).count()                  if not parcel: -                    dct['history_modifier'] = self.request.user +                    dct["history_modifier"] = self.request.user                      parcel = Parcel(**dct)                      parcel.save()          return res @@ -110,18 +117,30 @@ class FileModificationWizard(FileWizard):      modification = True -FILE_FIELDS = ['year', 'numeric_reference', 'internal_reference', -               'file_type', 'in_charge', 'general_contractor', 'creation_date', -               'reception_date', 'total_surface', 'total_developed_surface', -               'address', 'address_complement', 'postal_code', 'comment'] +FILE_FIELDS = [ +    "year", +    "numeric_reference", +    "internal_reference", +    "file_type", +    "in_charge", +    "general_contractor", +    "creation_date", +    "reception_date", +    "total_surface", +    "total_developed_surface", +    "address", +    "address_complement", +    "postal_code", +    "comment", +]  class FileClosingWizard(ClosingWizard):      model = models.File      fields = FILE_FIELDS -    if settings.COUNTRY == 'fr': -        fields += ['saisine_type', 'permit_reference'] -    fields += ['towns'] +    if settings.COUNTRY == "fr": +        fields += ["saisine_type", "permit_reference"] +    fields += ["towns"]  class FileDeletionWizard(MultipleDeletionWizard, FileClosingWizard): @@ -129,24 +148,28 @@ class FileDeletionWizard(MultipleDeletionWizard, FileClosingWizard):      redirect_url = "file_deletion"      fields = FILE_FIELDS      wizard_templates = { -        'final-file_deletion': 'ishtar/wizard/wizard_file_deletion.html'} +        "final-file_deletion": "ishtar/wizard/wizard_file_deletion.html" +    }  class FileAdministrativeActWizard(OperationAdministrativeActWizard):      model = models.File -    current_obj_slug = 'administrativeactfile' -    ref_object_key = 'associated_file' +    current_obj_slug = "administrativeactfile" +    ref_object_key = "associated_file"      def get_reminder(self): -        form_key = 'selec-' + self.url_name -        if self.url_name.endswith('_administrativeactfile'): +        form_key = "selec-" + self.url_name +        if self.url_name.endswith("_administrativeactfile"):              # modification and deletion are suffixed with '_modification'              # and '_deletion' so it is creation              file_id = self.session_get_value(form_key, "pk")              try:                  return ( -                    (_("Archaeological file"), -                     str(models.File.objects.get(pk=file_id))),) +                    ( +                        _("Archaeological file"), +                        str(models.File.objects.get(pk=file_id)), +                    ), +                )              except models.File.DoesNotExist:                  return          else: @@ -155,8 +178,7 @@ class FileAdministrativeActWizard(OperationAdministrativeActWizard):                  admin = AdministrativeAct.objects.get(pk=admin_id)                  if not admin.associated_file:                      return -                return ((_("Archaeological file"), -                         str(admin.associated_file)),) +                return ((_("Archaeological file"), str(admin.associated_file)),)              except AdministrativeAct.DoesNotExist:                  return | 
