diff options
| -rw-r--r-- | archaeological_operations/templates/ishtar/forms/operation_modify_parcels.html | 22 | ||||
| -rw-r--r-- | archaeological_operations/tests.py | 44 | ||||
| -rw-r--r-- | archaeological_operations/views.py | 60 | 
3 files changed, 77 insertions, 49 deletions
diff --git a/archaeological_operations/templates/ishtar/forms/operation_modify_parcels.html b/archaeological_operations/templates/ishtar/forms/operation_modify_parcels.html index 9aebe20fa..9fb75b3d4 100644 --- a/archaeological_operations/templates/ishtar/forms/operation_modify_parcels.html +++ b/archaeological_operations/templates/ishtar/forms/operation_modify_parcels.html @@ -9,34 +9,20 @@              </button>          </div>          <form enctype="multipart/form-data" action="{{url}}" method="post" id="{{ formset.form_slug }}"> +            {{ formset.management_form }}              {% csrf_token %}              <div class="modal-body body-scroll">                  <div class='form'>                      {% block main_form %} -                        {{ formset.management_form }}                          {% if formset.non_form_errors %}                              <div class="alert alert-danger" role="alert">                                  {{ formset.non_form_errors }}                              </div>                          {% endif %}                          <table> -                            <tr> -                                {% for form in formset %} -                                    {{form}} -                                    {% if form.name != 'pk' %} -                                        {% if form.required %} -                                            <th -                                        {% else %} -                                            <td -                                        {% endif %} -                                            {% if not forloop.last %} -                                               rowspan='2' -                                            {% endif %}> -                                        {{ form.label}} -                                    {% endif %} -                                   </td> -                               {% endfor %} -                            </tr> +                            {% for form in formset %} +                                {{form}} +                            {% endfor %}                               <tr>                                  <td> diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 371857337..5d41d0202 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -1642,6 +1642,50 @@ class ParcelTest(ImportTest, TestCase):                  'recognized in "%s"' % (str(not_imported), value),              ) +    def test_operation_parcel_modify(self): +        username, password, user = create_user( +            username="Gandalf", password="ushallpass" +        ) +        user.user_permissions.add( +            Permission.objects.get(codename="view_own_operation") +        ) +        user.user_permissions.add( +            Permission.objects.get(codename="change_own_operation") +        ) + +        c = Client() +        c.login(username=username, password=password) + +        town_1 = Town.objects.create(name="Minas Morgul", numero_insee="10920") +        town_2 = Town.objects.create(name="Minas Tirith", numero_insee="10901") +        parcel_1 = models.Parcel.objects.create(town=town_1, year=2640, section="M", parcel_number="1", public_domain=False) +        parcel_2 = models.Parcel.objects.create(town=town_2, year=2620, section="M", parcel_number="2", public_domain=True) + +        operation = create_operation(user) +        operation.towns.add(town_1) +        operation.towns.add(town_2) +        operation.parcels.add(parcel_1) +        operation.parcels.add(parcel_2) + +        response = c.get(reverse("operation-parcels-modify", kwargs={"pk": operation.pk})) + +        self.assertEqual(response.status_code, 200) +        print(response) +        self.assertInHTML( +            '<select id="id_form-0-town" class="form-control" name="form-0-town"><select>', +            town_1.name, +            count=1 +        ) +        self.assertContains(response, town_1.name) +        print(response) +        self.assertContains(response, town_2.name) +        self.assertContains(response, parcel_1.year) +        self.assertContains(response, parcel_2.year) +        self.assertContains(response, parcel_1.section) +        self.assertContains(response, parcel_2.section) +        self.assertContains(response, parcel_1.parcel_number) +        self.assertContains(response, parcel_2.parcel_number) +  def create_orga(user):      orga_type, created = OrganizationType.objects.get_or_create(txt_idx="operator") diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 0b71331f8..d6ebd940c 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -31,12 +31,7 @@ from django.forms import formset_factory  from archaeological_operations import models  from archaeological_operations import forms -from archaeological_operations.forms import ( -    SelectedParcelForm, -    ParcelFormSet, -    SelectedParcelFormSet, -    SelectedParcelGeneralFormSet, -) +from archaeological_operations.forms import SelectedParcelGeneralFormSet  from archaeological_operations import wizards  from ishtar_common.forms import ClosingDateFormSelection, FinalForm, FinalDeleteForm  from ishtar_common.models import ( @@ -419,39 +414,42 @@ def operation_modify_parcels(request, pk):      operation = models.Operation.objects.get(pk=pk)      parcels = models.Parcel.objects.filter(operation=pk).all()      data = {} +    available_towns = [] + +    for town in operation.towns.all(): +        available_towns.append((town.id, town.name))      if request.method == 'POST':  #TODO -        formset = formset_class(request.POST, request.FILES) +        print(request.POST) +        formset = formset_class(request.POST or None, request.FILES or None)          if formset.is_valid(): -            pass +            print(formset.cleaned_data)          else:              formset = formset_class()      else: -        towns_array = [] -        parcels_array = [] -        info = {} -        for parcel in parcels: -            print(parcel.pk) -            print(parcel.town) -            #towns_array.append(parcel.town) -            parcels_array.append(int(parcel.pk)) -        # data['TOWNS'] = towns_array -        #  data['PARCELS'] = parcels_array -        data['form-TOTAL_FORMS'] = 3 -        # TODO: feed initial with current parcels -        print("parcel_array : ") -        for p in parcels_array: -            print(p)          initial = [] -        initial = {'PARCELS': parcels_array} -        print(initial) -        #  if parcels: -        #      for parcel in parcels: -        data['form-INITIAL_FORMS'] = len(initial) +        for parcel in parcels: +            town = models.Town.objects.get(pk=parcel.town_id) +            initial.append({ +                "pk": parcel.pk, +                "town": town.pk, +                "year": parcel.year, +                "section": parcel.section, +                "parcel_number": parcel.parcel_number, +                "public_domain": parcel.public_domain +            }) + +        data = { +            'TOWNS': available_towns, +            'form-TOTAL_FORMS': len(initial), +            'form-INITIAL_FORMS': 0, +        } +          formset = formset_class(initial=initial, data=data) -        for form in formset: -            print(form.as_table()) -        #formset = SelectedParcelGeneralFormSet() + +        for form in formset:# DEBUG +            print(form.as_table())# DEBUG +      return render(request, 'ishtar/forms/operation_modify_parcels.html', {          'formset': formset,      })  | 
