diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-04-09 14:03:37 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-04-09 14:04:25 +0200 |
commit | 05415db1c4297ecbbcce470e3bea4154e626feab (patch) | |
tree | 48a7100f357411f7598593c438c12caade081bde /ishtar_common/models.py | |
parent | b3a7f49ee451e3e0ba944c3d1fa8d5510a382988 (diff) | |
download | Ishtar-05415db1c4297ecbbcce470e3bea4154e626feab.tar.bz2 Ishtar-05415db1c4297ecbbcce470e3bea4154e626feab.zip |
QA: fix add to basket when shared with several users - preserve basket order on duplicate
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 9b446ff9e..b804739ad 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -5021,7 +5021,13 @@ class Basket(FullSearch, OwnPerms, ValueGetter, TemplateItem): :param ishtaruser: if provided an alternate user is used :return: the new basket """ - items = list(self.items.all()) + items = [] + through = self.items.through + basket_pk = "{}_id".format(self.SLUG) + item_pk = "{}_id".format(self.items.model.SLUG) + q = through.objects.filter(**{basket_pk: self.pk}) + for r in q.values("pk", item_pk).order_by("pk").all(): + items.append(r[item_pk]) new_item = self new_item.pk = None if ishtaruser: @@ -5034,7 +5040,7 @@ class Basket(FullSearch, OwnPerms, ValueGetter, TemplateItem): new_item.label = label new_item.save() for item in items: - new_item.items.add(item) + through.objects.create(**{basket_pk: new_item.pk, item_pk: item}) return new_item |