summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_files/views.py49
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)