diff options
Diffstat (limited to 'archaeological_files/views.py')
-rw-r--r-- | archaeological_files/views.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/archaeological_files/views.py b/archaeological_files/views.py index 36bd6f79d..061085710 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -27,6 +27,7 @@ from django.views.generic.edit import UpdateView from django.shortcuts import redirect, render from django.urls import reverse from ishtar_common.utils import ugettext_lazy as _ +from archaeological_operations.utils import parse_parcels from ishtar_common.views import wizard_is_available from ishtar_common.views_item import get_item, show_item, revert_item, check_permission @@ -377,6 +378,46 @@ def file_modify_parcels(request, pk): 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) + parcel_selection = new_data.get('_parcel_selection', None) + + if parcel_selection: + selected_town = new_data.get("_town") + _parcels = parse_parcels(parcel_selection) + existant_parcel = None + + for p in _parcels: + p_year = p["year"] + p_section = p["section"] + p_parcel_number = p["parcel_number"] + p_town = models.Town.objects.get(pk=int(selected_town)) + q = Parcel.objects.filter( + section=p_section, parcel_number=p_parcel_number, town=p_town, associated_file=file + ) + nb = q.count() + # parcels_who_cant_be_deleted = 0 + + if nb > 1: # if duplicates parcels, keep just one + while nb > 1: + for d in q: + d.delete() + nb -= 1 + elif nb == 1: + # parcels_who_cant_be_deleted += 1 + pass + else: + added_parcel = Parcel.objects.create( + section = p_section, + parcel_number = p_parcel_number, + town = p_town, + associated_file = file, + ) + if p_year: + added_parcel.year = p_year + added_parcel.save() + # if parcels_who_cant_be_deleted > 0: + # raise ValidationError(str(parcels_who_cant_be_deleted) + " parcels could not be created because there already exists.") + return redirect(reverse("operation-parcels-modify", args=[pk])) + if formset.is_valid(): for data in formset.cleaned_data: if (not data.get('parcel_number') or not data.get('section')) and \ |