diff --git a/partdoc/parts/admin.py b/partdoc/parts/admin.py index 362a605..acbba43 100644 --- a/partdoc/parts/admin.py +++ b/partdoc/parts/admin.py @@ -51,7 +51,7 @@ class BrandedPartAdmin(admin.ModelAdmin): autocomplete_fields = ["parts"] -class CartEntryInline(admin.StackedInline): +class CartEntryInline(admin.TabularInline): model = CartEntry extra = 1 raw_id_fields = ("origins",) diff --git a/partdoc/parts/models.py b/partdoc/parts/models.py index d5667bc..499964f 100644 --- a/partdoc/parts/models.py +++ b/partdoc/parts/models.py @@ -112,7 +112,7 @@ class BrandedPart(PartModel): self[0]._merge(other[0]) def get_part_name(self): - return self.parts.first().name if len(self.parts) else "" + return self.parts.first().name if self.parts.exists() else "" def get_name(self, full=False, first=False): if full: @@ -184,6 +184,9 @@ class Cart(PartModel): entry = CartEntry.objects.create(cart=self) entry.origins.add(product_usage) entry.save() + + def shop_entries(self, shop): + return sorted(self.entries.filter(shop=shop), key=lambda x: x.part.number) class CartEntry(PartModel): @@ -203,3 +206,6 @@ class CartEntry(PartModel): def get_quantity(self): return self.quantity + + def __str__(self): + return self.part.get_name() diff --git a/partdoc/parts/templates/parts/cart.html b/partdoc/parts/templates/parts/cart.html index bb1e06f..c9779a9 100644 --- a/partdoc/parts/templates/parts/cart.html +++ b/partdoc/parts/templates/parts/cart.html @@ -2,13 +2,32 @@