diff options
Diffstat (limited to 'archaeological_operations/views.py')
-rw-r--r-- | archaeological_operations/views.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 23419ba14..5ebee7b43 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -22,6 +22,7 @@ from jinja2 import TemplateSyntaxError from django.conf import settings from django.db.models import Q +from django.forms.utils import ErrorDict, ErrorList from django.http import HttpResponse, HttpResponseRedirect, Http404 from django.shortcuts import render, redirect from django.urls import reverse @@ -488,7 +489,8 @@ def operation_modify_parcels(request, pk): return redirect(reverse("operation-parcels-modify", args=[pk])) if formset.is_valid(): - for data in formset.cleaned_data: + is_valid = True + for idx_form, data in enumerate(formset.cleaned_data): if (not data.get('parcel_number') or not data.get('section')) and \ not data.get('public_domain'): continue @@ -498,16 +500,23 @@ def operation_modify_parcels(request, pk): try: current_parcel = models.Parcel.objects.get(pk=data.get("pk")) except models.Parcel.DoesNotExist: - pass + continue 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() + 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.") + is_valid = False + formset.forms[idx_form].errors["__all__"] = ErrorList([ + ValidationError( + _("This parcel is associated with a context " + "record. It can't be deleted.") + ) + ]) else: current_parcel.delete() not_deleted_or_associated = False @@ -528,7 +537,8 @@ def operation_modify_parcels(request, pk): public_domain = data.get("public_domain") ) operation.parcels.add(parcel_to_add) - return redirect(reverse("operation-parcels-modify", args=[pk])) + if is_valid: + return redirect(reverse("operation-parcels-modify", args=[pk])) else: formset = formset_class(initial=initial, data=data) |