diff --git a/shop/models.py b/shop/models.py
index 603c07e..4d056a8 100644
--- a/shop/models.py
+++ b/shop/models.py
@@ -450,6 +450,7 @@ class Order(TimestampedModel):
class Meta:
verbose_name = _("pedido")
verbose_name_plural = _("pedidos")
+ ordering = ("creation_date", )
class Cart(models.Model):
diff --git a/web/templates/components/generic/navbar.html b/web/templates/components/generic/navbar.html
index 9eee69a..0e3eec0 100644
--- a/web/templates/components/generic/navbar.html
+++ b/web/templates/components/generic/navbar.html
@@ -62,8 +62,9 @@
{% else %}
Inicia
- sesión
+ class="inline-flex items-center rounded-lg justify-center p-2 hover:bg-gray-100 dark:hover:bg-gray-700 text-sm font-medium leading-none text-gray-900 dark:text-white">
+ Inicia sesión
+
{% endif %}
diff --git a/web/templates/components/users/user_dropdown.html b/web/templates/components/users/user_dropdown.html
index abf9c3b..2fc478e 100644
--- a/web/templates/components/users/user_dropdown.html
+++ b/web/templates/components/users/user_dropdown.html
@@ -7,7 +7,7 @@
-
{% translate 'Mis pedidos' %}
diff --git a/web/templates/web/orders.html b/web/templates/web/orders.html
new file mode 100644
index 0000000..0a3383e
--- /dev/null
+++ b/web/templates/web/orders.html
@@ -0,0 +1,101 @@
+{% extends 'theme/base.html' %}
+{% load static i18n %}
+
+{% block main %}
+{% include 'components/generic/navbar.html' %}
+
+
+
+
+ {% translate 'Mis pedidos' %}
+
+
+
+
+ {% for order in page %}
+
+
+
+ -
+ {% translate 'Número de pedido' %}
+
+ -
+
+ #{{ order.code }}
+
+
+
+
+
+ -
+ {% translate 'Fecha' %}
+
+ -
+ {{ order.creation_date }}
+
+
+
+
+ -
+ {% translate 'Total' %}
+
+ -
+ {{ order.total }}€
+
+
+
+
+
+ {% if order.status == 'PAI' %}
+ -
+ {% translate 'Pagado' %}
+
+
+ {% if order.shipping_status == 'NOT' %}
+ -
+ {% translate 'Tramitado' %}
+
+ {% elif order.shipping_status == 'RDY' %}
+ -
+ {% translate 'Preparado' %}
+
+ {% elif order.shipping_status == 'TBS' %}
+ -
+ {% translate 'Listo' %}
+
+ {% elif order.shipping_status == 'SNT' %}
+ -
+ {% translate 'Enviado' %}
+
+ {% elif order.shipping_status == 'DLV' %}
+ -
+ {% translate 'Entregado' %}
+
+ {% endif %}
+
+ {% elif order.status == 'ERR' %}
+ -
+ {% translate 'Error' %}
+
+ {% elif order.status == 'RTN' %}
+ -
+ {% translate 'Devuelto' %}
+
+ {% endif %}
+
+
+
+ {% translate 'Ver pedido' %}
+
+
+
+ {% endfor %}
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/web/urls.py b/web/urls.py
index 25a414d..872df3a 100644
--- a/web/urls.py
+++ b/web/urls.py
@@ -21,6 +21,7 @@ from web.views.web import (
index,
manifest,
order_detail,
+ orders,
product_detail,
wishlist,
)
@@ -33,6 +34,7 @@ i18n_resolvers = i18n_patterns(
path(_("categories//"), category_view, name="category_view"),
path(_("products///"), product_detail, name="product_detail"),
path(_("cart/"), cart_detail, name="cart_detail"),
+ path(_("orders/"), login_required(orders, login_url="/login/"), name="orders"),
path(_("order//"), order_detail, name="order"),
# users
path(_("login/"), login, name="login"),
diff --git a/web/views/web.py b/web/views/web.py
index a82c73c..44f85aa 100644
--- a/web/views/web.py
+++ b/web/views/web.py
@@ -19,6 +19,7 @@ from shop.models import (
from shop.redsys import RedsysClient
from shop.utils import create_order_from_cart
from web.forms import CreateOrderForm
+from web.mixins import PaginatedQuerysetMixin, FilteredQuerysetMixin
from web.models import WebSettings
from web.settings import ANONYMOUS_CART_ID_COOKIE_NAME
from web.utils import get_or_create_cart
@@ -192,6 +193,24 @@ class WishlistView(TemplateView):
}
+class OrdersView(TemplateView, FilteredQuerysetMixin, PaginatedQuerysetMixin):
+ template_name = "web/orders.html"
+
+ def get_queryset(self):
+ return Order.objects.filter(user=self.request.user).exclude(status=Order.Statuses.STATUS_PENDING)
+
+ def get_context_data(self, **kwargs):
+ settings = WebSettings.load()
+ qs = self.get_queryset()
+ page = self.get_paginated_queryset(qs)
+
+ return {
+ "page": page,
+ "has_next_page": page.has_next(),
+ "has_previous_page": page.has_previous(),
+ }
+
+
@require_http_methods(
[
"POST",
@@ -311,3 +330,4 @@ product_detail = ProductDetail.as_view()
cart_detail = CartDetail.as_view()
order_detail = OrderDetail.as_view()
wishlist = WishlistView.as_view()
+orders = OrdersView.as_view()