From 9d378a0c5fd562a4535babc1973c9cb5f8136e72 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 15 Jan 2025 21:49:17 -0600 Subject: [PATCH] feat: add tools to change order item status; add notes --- src/sideshow/enum.py | 4 +- src/sideshow/orders.py | 21 ++ .../web/templates/order-items/view.mako | 227 +++++++++++++++++- src/sideshow/web/views/orders.py | 137 ++++++++++- tests/test_orders.py | 20 ++ tests/web/views/test_orders.py | 129 +++++++++- 6 files changed, 520 insertions(+), 18 deletions(-) diff --git a/src/sideshow/enum.py b/src/sideshow/enum.py index 66c79ea..2349f3d 100644 --- a/src/sideshow/enum.py +++ b/src/sideshow/enum.py @@ -370,8 +370,8 @@ ORDER_ITEM_EVENT = OrderedDict([ (ORDER_ITEM_EVENT_CONTACTED, "customer contacted"), (ORDER_ITEM_EVENT_CONTACT_FAILED, "contact failed"), (ORDER_ITEM_EVENT_DELIVERED, "delivered"), - (ORDER_ITEM_EVENT_STATUS_CHANGE, "status change"), - (ORDER_ITEM_EVENT_NOTE_ADDED, "note added"), + (ORDER_ITEM_EVENT_STATUS_CHANGE, "changed status"), + (ORDER_ITEM_EVENT_NOTE_ADDED, "added note"), (ORDER_ITEM_EVENT_CANCELED, "canceled"), (ORDER_ITEM_EVENT_REFUND_PENDING, "refund pending"), (ORDER_ITEM_EVENT_REFUNDED, "refunded"), diff --git a/src/sideshow/orders.py b/src/sideshow/orders.py index 91425a5..0434782 100644 --- a/src/sideshow/orders.py +++ b/src/sideshow/orders.py @@ -75,3 +75,24 @@ class OrderHandler(GenericHandler): unit_qty = self.app.render_quantity(order_qty) EA = enum.ORDER_UOM[enum.ORDER_UOM_UNIT] return f"{unit_qty} {EA}" + + def item_status_to_variant(self, status_code): + """ + Return a Buefy style variant for the given status code. + + Default logic will return ``None`` for "normal" item status, + but may return ``'warning'`` for some (e.g. canceled). + + :param status_code: The status code for an order item. + + :returns: Style variant string (e.g. ``'warning'``) or + ``None``. + """ + enum = self.app.enum + if status_code in (enum.ORDER_ITEM_STATUS_CANCELED, + enum.ORDER_ITEM_STATUS_REFUND_PENDING, + enum.ORDER_ITEM_STATUS_REFUNDED, + enum.ORDER_ITEM_STATUS_RESTOCKED, + enum.ORDER_ITEM_STATUS_EXPIRED, + enum.ORDER_ITEM_STATUS_INACTIVE): + return 'warning' diff --git a/src/sideshow/web/templates/order-items/view.mako b/src/sideshow/web/templates/order-items/view.mako index da161f9..201540a 100644 --- a/src/sideshow/web/templates/order-items/view.mako +++ b/src/sideshow/web/templates/order-items/view.mako @@ -1,11 +1,16 @@ ## -*- coding: utf-8; -*- <%inherit file="/master/view.mako" /> +<%def name="content_title()"> + (${app.enum.ORDER_ITEM_STATUS[item.status_code]}) + ${instance_title} + + <%def name="extra_styles()"> ${parent.extra_styles()}