summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/views.py20
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)