summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commit05415db1c4297ecbbcce470e3bea4154e626feab (patch)
tree48a7100f357411f7598593c438c12caade081bde /ishtar_common
parentb3a7f49ee451e3e0ba944c3d1fa8d5510a382988 (diff)
downloadIshtar-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')
-rw-r--r--ishtar_common/models.py10
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