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

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""" 

26 

27from wuttaweb import menus as base 

28 

29 

30class SideshowMenuHandler(base.MenuHandler): 

31 """ 

32 Sideshow menu handler 

33 """ 

34 

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 ] 

45 

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 } 

93 

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 } 

114 

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 } 

135 

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 } 

151 

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 } 

161 

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) 

166 

167 menu["items"].insert( 

168 0, 

169 { 

170 "title": "Stores", 

171 "route": "stores", 

172 "perm": "stores.list", 

173 }, 

174 ) 

175 

176 return menu