diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-01-24 19:12:46 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-01-24 19:12:46 +0100 | 
| commit | 838925c2b6e34f9f7da7cbc1d6e79f2a482a4796 (patch) | |
| tree | 9399c5370713d1fd3405198f24107f56b789e362 | |
| parent | 7bf7fc49b73622797d7ea4f56d454e621320186c (diff) | |
| download | Ishtar-838925c2b6e34f9f7da7cbc1d6e79f2a482a4796.tar.bz2 Ishtar-838925c2b6e34f9f7da7cbc1d6e79f2a482a4796.zip | |
Wizard: fix parcel reuse in creation
| -rw-r--r-- | archaeological_operations/tests.py | 45 | ||||
| -rw-r--r-- | ishtar_common/wizards.py | 5 | 
2 files changed, 45 insertions, 5 deletions
| diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 33199dd04..9a61d8bbb 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -705,22 +705,59 @@ class OperationWizardCreationTest(WizardTest, OperationInitTest, TestCase):              form_datas={                  'general-operation_creation': {                      'operation_type': 1,  # preventive diag -                    'year': 2016} +                    'year': 2016}, +                'townsgeneral-operation_creation': [], +                'parcelsgeneral-operation_creation': [],              },              ignored=('filechoice-operation_creation', -                     'preventive-operation_creation',                       'towns-operation_creation', -                     'parcels-operation_creation', ) +                     'parcels-operation_creation', +                     'preventive-operation_creation',) +        ), +        FormData( +            "Create another preventive diag with same parcel name", +            form_datas={ +                'general-operation_creation': { +                    'operation_type': 1,  # preventive diag +                    'year': 2016}, +                'townsgeneral-operation_creation': [], +                'parcelsgeneral-operation_creation': [], +            }, +            ignored=('filechoice-operation_creation', +                     'towns-operation_creation', +                     'parcels-operation_creation', +                     'preventive-operation_creation',)          )      ]      def pre_wizard(self): +        if 'townsgeneral-operation_creation' not in \ +                self.form_datas[0].form_datas: +            return super(OperationWizardCreationTest, self).pre_wizard() +        town = self.create_towns()[0] +        town_data = {'town': town.pk} +        self.form_datas[0].form_datas['townsgeneral-operation_creation'].append( +            town_data +        ) +        self.form_datas[1].form_datas['townsgeneral-operation_creation'].append( +            town_data +        ) +        parcel_data = { +            'town': town.pk, 'year': 2017, 'section': 'S', +            'parcel_number': '42'} +        self.form_datas[0].form_datas[ +            'parcelsgeneral-operation_creation'].append(parcel_data) +        self.form_datas[1].form_datas[ +            'parcelsgeneral-operation_creation'].append(parcel_data)          self.operation_number = models.Operation.objects.count() +        self.parcel_number = models.Parcel.objects.count()          super(OperationWizardCreationTest, self).pre_wizard()      def post_wizard(self):          self.assertEqual(models.Operation.objects.count(), -                         self.operation_number + 1) +                         self.operation_number + 2) +        self.assertEqual(models.Parcel.objects.count(), +                         self.parcel_number + 2)  class OperationWizardDeleteTest(OperationWizardCreationTest): diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 735ad62fd..5105418a5 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -670,7 +670,10 @@ class Wizard(NamedUrlWizardView):                                  model.RELATIVE_MODELS:                              value[model.RELATIVE_MODELS[                                  self.get_saved_model()]] = obj -                        value, created = model.objects.get_or_create(**value) +                            value, created = model.objects.get_or_create( +                                **value) +                        else: +                            value = model.objects.create(**value)                          value.save()  # force post_save                  # check that an item is not add multiple times (forged forms)                  if value not in related_model.all() and\ | 
