Coverage for src/sideshow/web/menus.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.6.10, created at 2025-01-06 15:04 -0600

1# -*- coding: utf-8; -*- 

2################################################################################ 

3# 

4# Sideshow -- Case/Special Order Tracker 

5# Copyright © 2024 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, **kwargs): 

36 """ """ 

37 return [ 

38 self.make_orders_menu(request), 

39 self.make_pending_menu(request), 

40 self.make_batch_menu(request), 

41 self.make_admin_menu(request), 

42 ] 

43 

44 def make_orders_menu(self, request, **kwargs): 

45 """ 

46 Generate a typical Orders menu. 

47 """ 

48 return { 

49 'title': "Orders", 

50 'type': 'menu', 

51 'items': [ 

52 { 

53 'title': "Create New Order", 

54 'route': 'orders.create', 

55 'perm': 'orders.create', 

56 }, 

57 {'type': 'sep'}, 

58 { 

59 'title': "All Orders", 

60 'route': 'orders', 

61 'perm': 'orders.list', 

62 }, 

63 { 

64 'title': "All Order Items", 

65 'route': 'order_items', 

66 'perm': 'order_items.list', 

67 }, 

68 ], 

69 } 

70 

71 def make_pending_menu(self, request, **kwargs): 

72 """ 

73 Generate a typical Pending menu. 

74 """ 

75 return { 

76 'title': "Pending", 

77 'type': 'menu', 

78 'items': [ 

79 { 

80 'title': "Customers", 

81 'route': 'pending_customers', 

82 'perm': 'pending_customers.list', 

83 }, 

84 { 

85 'title': "Products", 

86 'route': 'pending_products', 

87 'perm': 'pending_products.list', 

88 }, 

89 ], 

90 } 

91 

92 def make_batch_menu(self, request, **kwargs): 

93 """ 

94 Generate a typical Batch menu. 

95 """ 

96 return { 

97 'title': "Batches", 

98 'type': 'menu', 

99 'items': [ 

100 { 

101 'title': "New Orders", 

102 'route': 'neworder_batches', 

103 'perm': 'neworder_batches.list', 

104 }, 

105 ], 

106 } 

107 

108 def make_admin_menu(self, request, **kwargs): 

109 """ """ 

110 kwargs['include_people'] = True 

111 return super().make_admin_menu(request, **kwargs)