diff options
| -rw-r--r-- | archaeological_files/views.py | 49 | 
1 files changed, 47 insertions, 2 deletions
| diff --git a/archaeological_files/views.py b/archaeological_files/views.py index 58454092f..36bd6f79d 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -57,7 +57,7 @@ from ishtar_common.forms import ClosingDateFormSelection  from . import forms, models  from archaeological_operations.models import Operation, AdministrativeAct, Parcel - +from archaeological_context_records.models import ContextRecord  RE_YEAR_INDEX = re.compile(r"([1-2][0-9]{3})-([0-9]+)")  # eg.: 2014-123 @@ -373,7 +373,52 @@ def file_modify_parcels(request, pk):      }      if request.method == 'POST': -        pass +        new_data = dict(request.POST) +        new_data = {k: new_data[k][0] for k in new_data} # convert POST to classic dict +        new_data.update(data) +        formset = formset_class(new_data) +        if formset.is_valid(): +            for data in formset.cleaned_data: +                if (not data.get('parcel_number') or not data.get('section')) and \ +                        not data.get('public_domain'): +                    continue + +                current_parcel = None +                if data.get("pk"): +                    try: +                        current_parcel = Parcel.objects.get(pk=data.get("pk")) +                    except Parcel.DoesNotExist: +                        pass + +                if current_parcel: +                    not_deleted_or_associated = True +                    for key, value in data.items(): + +                        if key == "DELETE" and value is True: +                            parcel_associated_by_context_record = ContextRecord.objects.filter(parcel=current_parcel.pk).all() +                            if parcel_associated_by_context_record.count() > 0: +                                raise ValidationError("This parcel is associated with a context record. It can't be deleted.") +                            else: +                                current_parcel.delete() +                            not_deleted_or_associated = False + +                    if not_deleted_or_associated: +                        current_parcel.year = data.get("year") +                        current_parcel.section = data.get("section") +                        current_parcel.parcel_number = data.get("parcel_number") +                        current_parcel.town = models.Town.objects.get(pk=int(data.get("town"))) +                        current_parcel.public_domain = data.get("public_domain") +                        current_parcel.save() +                else: +                    parcel_to_add = Parcel.objects.create( +                        year = data.get("year"), +                        section = data.get("section"), +                        parcel_number = data.get("parcel_number"), +                        town = models.Town.objects.get(pk=int(data.get("town"))), +                        public_domain = data.get("public_domain"), +                        associated_file = file, +                    ) +            return redirect(reverse("file-parcels-modify", args=[pk]))      else:          formset = formset_class(initial=initial, data=data) | 
