improve cart layout
parent
998a530500
commit
7f227fea21
|
|
@ -51,7 +51,7 @@ class BrandedPartAdmin(admin.ModelAdmin):
|
||||||
autocomplete_fields = ["parts"]
|
autocomplete_fields = ["parts"]
|
||||||
|
|
||||||
|
|
||||||
class CartEntryInline(admin.StackedInline):
|
class CartEntryInline(admin.TabularInline):
|
||||||
model = CartEntry
|
model = CartEntry
|
||||||
extra = 1
|
extra = 1
|
||||||
raw_id_fields = ("origins",)
|
raw_id_fields = ("origins",)
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ class BrandedPart(PartModel):
|
||||||
self[0]._merge(other[0])
|
self[0]._merge(other[0])
|
||||||
|
|
||||||
def get_part_name(self):
|
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):
|
def get_name(self, full=False, first=False):
|
||||||
if full:
|
if full:
|
||||||
|
|
@ -185,6 +185,9 @@ class Cart(PartModel):
|
||||||
entry.origins.add(product_usage)
|
entry.origins.add(product_usage)
|
||||||
entry.save()
|
entry.save()
|
||||||
|
|
||||||
|
def shop_entries(self, shop):
|
||||||
|
return sorted(self.entries.filter(shop=shop), key=lambda x: x.part.number)
|
||||||
|
|
||||||
|
|
||||||
class CartEntry(PartModel):
|
class CartEntry(PartModel):
|
||||||
cart = models.ForeignKey(Cart, on_delete=models.CASCADE, related_name="entries")
|
cart = models.ForeignKey(Cart, on_delete=models.CASCADE, related_name="entries")
|
||||||
|
|
@ -203,3 +206,6 @@ class CartEntry(PartModel):
|
||||||
|
|
||||||
def get_quantity(self):
|
def get_quantity(self):
|
||||||
return self.quantity
|
return self.quantity
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.part.get_name()
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,32 @@
|
||||||
<h3>entries</h3>
|
<h3>entries</h3>
|
||||||
<ul>
|
<ul>
|
||||||
{% for entry in entries %}
|
{% for entry in entries %}
|
||||||
<li>{{entry.quantity}} -- <a href="{% url 'parts:cart_entry' cart.id entry.id %}">{{entry.part}}</a>
|
<li>{{entry.quantity}} -- <a href="{% url 'parts:cart_entry' cart.id entry.id %}">{{entry.part.get_part_name}} ({{entry.part.number}})</a>
|
||||||
<ul>
|
<ul>
|
||||||
{% for pu in entry.origins.all %}
|
{% for pu in entry.origins.all %}
|
||||||
<li><a href="{% url 'parts:sketch' pu.usage.sketch.id %}">{{pu.usage.sketch.name}}</a></li>
|
<li style="margin-left:25em;">{{pu.quantity}} - <a href="{% url 'parts:sketch' pu.usage.sketch.id %}">{{pu.usage.sketch.name}}</a></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>shops</h3>
|
||||||
|
<ul>
|
||||||
|
{% for shop, entries in shop_entries.items %}
|
||||||
|
<li>{{shop}}
|
||||||
|
<ul>
|
||||||
|
{% for entry in entries %}
|
||||||
|
<li style="{% if entry.in_cart %}list-style-type=square;{% endif %}{% if entry.ordered%}color=green;{%endif%}" >{{entry.quantity}} -- <a href="{% url 'parts:cart_entry' cart.id entry.id %}">{{entry.part.get_part_name}} ({{entry.part.number}})</a>
|
||||||
|
<ul>
|
||||||
|
{% for pu in entry.origins.all %}
|
||||||
|
<li style="margin-left:25em;">{{pu.quantity}} - <a href="{% url 'parts:sketch' pu.usage.sketch.id %}">{{pu.usage.sketch.name}}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
||||||
|
|
@ -198,8 +198,12 @@ def update_cart(request):
|
||||||
|
|
||||||
def cart(request, cart_id):
|
def cart(request, cart_id):
|
||||||
cart = Cart.objects.get(id=cart_id)
|
cart = Cart.objects.get(id=cart_id)
|
||||||
|
#entries = cart.entries.order_by('origins__usage__part__number')
|
||||||
entries = cart.entries.all()
|
entries = cart.entries.all()
|
||||||
context = {'cart': cart, "entries": entries}
|
entries = sorted(entries, key=lambda x: x.part.number)
|
||||||
|
shops = Shop.objects.filter(cartentry__cart=cart).distinct()
|
||||||
|
shop_entries = {shop: cart.shop_entries(shop) for shop in shops}
|
||||||
|
context = {'cart': cart, "entries": entries, "shops": shops, "shop_entries": shop_entries}
|
||||||
return render(request, 'parts/cart.html', context)
|
return render(request, 'parts/cart.html', context)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue