diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-01-10 16:34:35 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-01-10 16:34:35 +0100 |
commit | 800b071e258416c3e16540a91027f0b54fe50a81 (patch) | |
tree | 58d511f032c76c735a490b708e60f7482fc667dd | |
parent | 6a693a41d3dfcb19e073efd4678f02f1be5d244e (diff) | |
download | Ishtar-800b071e258416c3e16540a91027f0b54fe50a81.tar.bz2 Ishtar-800b071e258416c3e16540a91027f0b54fe50a81.zip |
Container: remove old localisation when changing warehouse
-rw-r--r-- | archaeological_warehouse/models.py | 5 | ||||
-rw-r--r-- | archaeological_warehouse/tests.py | 33 |
2 files changed, 37 insertions, 1 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index ef548425b..7f7fbeb91 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -224,6 +224,11 @@ class Container(LightHistorizedItem): self.index = 1 self._cached_label_checked = False self.save() + # remove old location in warehouse + q = ContainerLocalisation.objects.filter(container=self).exclude( + division__warehouse=self.location) + for loca in q.all(): + loca.delete() post_save.connect(cached_label_changed, sender=Container) diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py index efe38b4a3..f4ce52732 100644 --- a/archaeological_warehouse/tests.py +++ b/archaeological_warehouse/tests.py @@ -77,7 +77,7 @@ class ContainerWizardCreationTest(WizardTest, FindInit, TestCase): self.container_number + 1) -class ContainerFormCreationTest(FindInit, TestCase): +class ContainerTest(FindInit, TestCase): fixtures = [settings.ROOT_PATH + '../fixtures/initial_data.json', settings.ROOT_PATH + @@ -110,3 +110,34 @@ class ContainerFormCreationTest(FindInit, TestCase): form.save(self.user) self.assertEqual(models.Container.objects.count(), self.container_number + 1) + + def testChangeLocation(self): + main_warehouse = models.Warehouse.objects.create( + name="Main", + warehouse_type=models.WarehouseType.objects.all()[0] + ) + div = models.WarehouseDivision.objects.create(label='division') + div_link = models.WarehouseDivisionLink.objects.create( + warehouse=main_warehouse, division=div) + + container = models.Container.objects.create( + reference="Test", responsible=main_warehouse, + location=main_warehouse, + container_type=models.ContainerType.objects.all()[0] + ) + models.ContainerLocalisation.objects.create( + container=container, division=div_link, + ) + + self.assertTrue(models.ContainerLocalisation.objects.filter( + division__warehouse=main_warehouse).count()) + # changing location remove unrelevent localisation + other_warehouse = models.Warehouse.objects.create( + name="Other", + warehouse_type=models.WarehouseType.objects.all()[0] + ) + container.location = other_warehouse + container.save() + self.assertFalse(models.ContainerLocalisation.objects.filter( + division__warehouse=main_warehouse).count()) + |