diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-03-07 19:51:52 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:21:00 +0100 |
commit | ef1672ebd6487e0711f86c3d76b8f6fa5bc03cbb (patch) | |
tree | 6dc7a5f9047cac4d5772d8439bbaa323c1da8086 /archaeological_operations | |
parent | f1ae9d46287bdc6eeda3e7c2da6efcbacf422ef9 (diff) | |
download | Ishtar-ef1672ebd6487e0711f86c3d76b8f6fa5bc03cbb.tar.bz2 Ishtar-ef1672ebd6487e0711f86c3d76b8f6fa5bc03cbb.zip |
Operation - Parcels - Modify: display correctly parcel that cannot be deleted
Diffstat (limited to 'archaeological_operations')
-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) |