Coverage for .tox / coverage / lib / python3.11 / site-packages / sideshow / web / menus.py: 100%
19 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-15 17:10 -0600
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-15 17:10 -0600
1# -*- coding: utf-8; -*-
2################################################################################
3#
4# Sideshow -- Case/Special Order Tracker
5# Copyright © 2024-2025 Lance Edgar
6#
7# This file is part of Sideshow.
8#
9# Sideshow is free software: you can redistribute it and/or modify it
10# under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# Sideshow is distributed in the hope that it will be useful, but
15# WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17# General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with Sideshow. If not, see <http://www.gnu.org/licenses/>.
21#
22################################################################################
23"""
24Sideshow Menu
25"""
27from wuttaweb import menus as base
30class SideshowMenuHandler(base.MenuHandler):
31 """
32 Sideshow menu handler
33 """
35 def make_menus(self, request): # pylint: disable=empty-docstring
36 """ """
37 return [
38 self.make_orders_menu(request),
39 self.make_customers_menu(request),
40 self.make_products_menu(request),
41 self.make_batch_menu(request),
42 self.make_other_menu(request),
43 self.make_admin_menu(request),
44 ]
46 def make_orders_menu(self, request): # pylint: disable=unused-argument
47 """
48 Generate the Orders menu.
49 """
50 return {
51 "title": "Orders",
52 "type": "menu",
53 "items": [
54 {
55 "title": "Create New Order",
56 "route": "orders.create",
57 "perm": "orders.create",
58 },
59 {"type": "sep"},
60 {
61 "title": "Placement",
62 "route": "order_items_placement",
63 "perm": "order_items_placement.list",
64 },
65 {
66 "title": "Receiving",
67 "route": "order_items_receiving",
68 "perm": "order_items_receiving.list",
69 },
70 {
71 "title": "Contact",
72 "route": "order_items_contact",
73 "perm": "order_items_contact.list",
74 },
75 {
76 "title": "Delivery",
77 "route": "order_items_delivery",
78 "perm": "order_items_delivery.list",
79 },
80 {"type": "sep"},
81 {
82 "title": "All Order Items",
83 "route": "order_items",
84 "perm": "order_items.list",
85 },
86 {
87 "title": "All Orders",
88 "route": "orders",
89 "perm": "orders.list",
90 },
91 ],
92 }
94 def make_customers_menu(self, request): # pylint: disable=unused-argument
95 """
96 Generate the Customers menu.
97 """
98 return {
99 "title": "Customers",
100 "type": "menu",
101 "items": [
102 {
103 "title": "Local Customers",
104 "route": "local_customers",
105 "perm": "local_customers.list",
106 },
107 {
108 "title": "Pending Customers",
109 "route": "pending_customers",
110 "perm": "pending_customers.list",
111 },
112 ],
113 }
115 def make_products_menu(self, request): # pylint: disable=unused-argument
116 """
117 Generate the Products menu.
118 """
119 return {
120 "title": "Products",
121 "type": "menu",
122 "items": [
123 {
124 "title": "Local Products",
125 "route": "local_products",
126 "perm": "local_products.list",
127 },
128 {
129 "title": "Pending Products",
130 "route": "pending_products",
131 "perm": "pending_products.list",
132 },
133 ],
134 }
136 def make_batch_menu(self, request): # pylint: disable=unused-argument
137 """
138 Generate the Batch menu.
139 """
140 return {
141 "title": "Batches",
142 "type": "menu",
143 "items": [
144 {
145 "title": "New Orders",
146 "route": "neworder_batches",
147 "perm": "neworder_batches.list",
148 },
149 ],
150 }
152 def make_other_menu(self, request): # pylint: disable=unused-argument
153 """
154 Generate the "Other" menu.
155 """
156 return {
157 "title": "Other",
158 "type": "menu",
159 "items": [],
160 }
162 def make_admin_menu(self, request, **kwargs): # pylint: disable=empty-docstring
163 """ """
164 kwargs["include_people"] = True
165 menu = super().make_admin_menu(request, **kwargs)
167 menu["items"].insert(
168 0,
169 {
170 "title": "Stores",
171 "route": "stores",
172 "perm": "stores.list",
173 },
174 )
176 return menu