Add more views, menus to default set
This commit is contained in:
		
							parent
							
								
									e4c2336659
								
							
						
					
					
						commit
						23dea7bced
					
				
					 2 changed files with 231 additions and 87 deletions
				
			
		|  | @ -259,6 +259,7 @@ class MenuHandler(GenericHandler): | |||
|         is expected for most apps to override it. | ||||
|         """ | ||||
|         menus = [ | ||||
|             self.make_custorders_menu(request), | ||||
|             self.make_people_menu(request), | ||||
|             self.make_products_menu(request), | ||||
|             self.make_vendors_menu(request), | ||||
|  | @ -269,9 +270,9 @@ class MenuHandler(GenericHandler): | |||
|             menus.extend(integration_menus) | ||||
| 
 | ||||
|         menus.extend([ | ||||
|             # TODO: add reporting menu | ||||
|             self.make_reports_menu(request, include_trainwreck=True), | ||||
|             self.make_batches_menu(request), | ||||
|             self.make_admin_menu(request), | ||||
|             self.make_admin_menu(request, include_stores=True), | ||||
|         ]) | ||||
| 
 | ||||
|         return menus | ||||
|  | @ -288,6 +289,38 @@ class MenuHandler(GenericHandler): | |||
|         menus.sort(key=lambda menu: menu['title'].lower()) | ||||
|         return menus | ||||
| 
 | ||||
|     def make_custorders_menu(self, request, **kwargs): | ||||
|         """ | ||||
|         Generate a typical Customer Orders menu | ||||
|         """ | ||||
|         return { | ||||
|             'title': "Orders", | ||||
|             'type': 'menu', | ||||
|             'items': [ | ||||
|                 { | ||||
|                     'title': "New Customer Order", | ||||
|                     'route': 'custorders.create', | ||||
|                     'perm': 'custorders.create', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "All New Orders", | ||||
|                     'route': 'new_custorders', | ||||
|                     'perm': 'new_custorders.list', | ||||
|                 }, | ||||
|                 {'type': 'sep'}, | ||||
|                 { | ||||
|                     'title': "All Customer Orders", | ||||
|                     'route': 'custorders', | ||||
|                     'perm': 'custorders.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "All Order Items", | ||||
|                     'route': 'custorders.items', | ||||
|                     'perm': 'custorders.items.list', | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
| 
 | ||||
|     def make_people_menu(self, request, **kwargs): | ||||
|         """ | ||||
|         Generate a typical People menu | ||||
|  | @ -321,6 +354,12 @@ class MenuHandler(GenericHandler): | |||
|                     'route': 'people', | ||||
|                     'perm': 'people.list', | ||||
|                 }, | ||||
|                 {'type': 'sep'}, | ||||
|                 { | ||||
|                     'title': "Pending Customers", | ||||
|                     'route': 'pending_customers', | ||||
|                     'perm': 'pending_customers.list', | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
| 
 | ||||
|  | @ -362,6 +401,17 @@ class MenuHandler(GenericHandler): | |||
|                     'route': 'reportcodes', | ||||
|                     'perm': 'reportcodes.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Units of Measure", | ||||
|                     'route': 'uoms', | ||||
|                     'perm': 'uoms.list', | ||||
|                 }, | ||||
|                 {'type': 'sep'}, | ||||
|                 { | ||||
|                     'title': "Pending Products", | ||||
|                     'route': 'pending_products', | ||||
|                     'perm': 'pending_products.list', | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
| 
 | ||||
|  | @ -400,13 +450,13 @@ class MenuHandler(GenericHandler): | |||
|                     'route': 'purchases.credits', | ||||
|                     'perm': 'purchases.credits.list', | ||||
|                 }, | ||||
|                 # {'type': 'sep'}, | ||||
|                 # { | ||||
|                 #     'title': "Catalogs", | ||||
|                 #     'route': 'vendorcatalogs', | ||||
|                 #     'perm': 'vendorcatalogs.list', | ||||
|                 # }, | ||||
|                 ], | ||||
|                 {'type': 'sep'}, | ||||
|                 { | ||||
|                     'title': "Catalog Batches", | ||||
|                     'route': 'vendorcatalogs', | ||||
|                     'perm': 'vendorcatalogs.list', | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
| 
 | ||||
|     def make_batches_menu(self, request, **kwargs): | ||||
|  | @ -422,95 +472,184 @@ class MenuHandler(GenericHandler): | |||
|                     'route': 'batch.handheld', | ||||
|                     'perm': 'batch.handheld.list', | ||||
|                 }, | ||||
|                 # { | ||||
|                 #     'title': "Inventory", | ||||
|                 #     'route': 'batch.inventory', | ||||
|                 #     'perm': 'batch.inventory.list', | ||||
|                 # }, | ||||
|                 ], | ||||
|                 { | ||||
|                     'title': "Inventory", | ||||
|                     'route': 'batch.inventory', | ||||
|                     'perm': 'batch.inventory.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Import / Export", | ||||
|                     'route': 'batch.importer', | ||||
|                     'perm': 'batch.importer.list', | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
| 
 | ||||
|     def make_reports_menu(self, request, **kwargs): | ||||
|         """ | ||||
|         Generate a typical Reports menu | ||||
|         """ | ||||
|         items = [ | ||||
|             { | ||||
|                 'title': "New Report", | ||||
|                 'route': 'report_output.create', | ||||
|                 'perm': 'report_output.create', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Generated Reports", | ||||
|                 'route': 'report_output', | ||||
|                 'perm': 'report_output.list', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Problem Reports", | ||||
|                 'route': 'problem_reports', | ||||
|                 'perm': 'problem_reports.list', | ||||
|             }, | ||||
|         ] | ||||
| 
 | ||||
|         if kwargs.get('include_poser', False): | ||||
|             items.extend([ | ||||
|                 {'type': 'sep'}, | ||||
|                 { | ||||
|                     'title': "Poser Reports", | ||||
|                     'route': 'poser_reports', | ||||
|                     'perm': 'poser_reports.list', | ||||
|                 }, | ||||
|             ]) | ||||
| 
 | ||||
|         if kwargs.get('include_trainwreck', False): | ||||
|             items.extend([ | ||||
|                 {'type': 'sep'}, | ||||
|                 { | ||||
|                     'title': "Trainwreck", | ||||
|                     'route': 'trainwreck.transactions', | ||||
|                     'perm': 'trainwreck.transactions.list', | ||||
|                 }, | ||||
|             ]) | ||||
| 
 | ||||
|         return { | ||||
|             'title': "Reports", | ||||
|             'type': 'menu', | ||||
|             'items': items, | ||||
|         } | ||||
| 
 | ||||
|     def make_tempmon_menu(self, request, **kwargs): | ||||
|         """ | ||||
|         Generate a typical TempMon menu | ||||
|         """ | ||||
|         return { | ||||
|             'title': "TempMon", | ||||
|             'type': 'menu', | ||||
|             'items': [ | ||||
|                 { | ||||
|                     'title': "Appliances", | ||||
|                     'route': 'tempmon.appliances', | ||||
|                     'perm': 'tempmon.appliances.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Clients", | ||||
|                     'route': 'tempmon.clients', | ||||
|                     'perm': 'tempmon.clients.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Probes", | ||||
|                     'route': 'tempmon.probes', | ||||
|                     'perm': 'tempmon.probes.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Readings", | ||||
|                     'route': 'tempmon.readings', | ||||
|                     'perm': 'tempmon.readings.list', | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
| 
 | ||||
|     def make_admin_menu(self, request, **kwargs): | ||||
|         """ | ||||
|         Generate a typical Admin menu | ||||
|         """ | ||||
|         return { | ||||
|             'title': "Admin", | ||||
|             'type': 'menu', | ||||
|             'items': [ | ||||
|         items = [] | ||||
| 
 | ||||
|         if kwargs.get('include_stores', True): | ||||
|             items.extend([ | ||||
|                 { | ||||
|                     'title': "Stores", | ||||
|                     'route': 'stores', | ||||
|                     'perm': 'stores.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Users", | ||||
|                     'route': 'users', | ||||
|                     'perm': 'users.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "User Events", | ||||
|                     'route': 'userevents', | ||||
|                     'perm': 'userevents.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Roles", | ||||
|                     'route': 'roles', | ||||
|                     'perm': 'roles.list', | ||||
|                 }, | ||||
|                 {'type': 'sep'}, | ||||
|                 { | ||||
|                     'title': "App Settings", | ||||
|                     'route': 'appsettings', | ||||
|                     'perm': 'settings.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Email Settings", | ||||
|                     'route': 'emailprofiles', | ||||
|                     'perm': 'emailprofiles.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Email Attempts", | ||||
|                     'route': 'email_attempts', | ||||
|                     'perm': 'email_attempts.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Raw Settings", | ||||
|                     'route': 'settings', | ||||
|                     'perm': 'settings.list', | ||||
|                 }, | ||||
|                 {'type': 'sep'}, | ||||
|                 { | ||||
|                     'title': "DataSync Changes", | ||||
|                     'route': 'datasyncchanges', | ||||
|                     'perm': 'datasync_changes.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "DataSync Status", | ||||
|                     'route': 'datasync.status', | ||||
|                     'perm': 'datasync.status', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Importing / Exporting", | ||||
|                     'route': 'importing', | ||||
|                     'perm': 'importing.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Luigi Tasks", | ||||
|                     'route': 'luigi', | ||||
|                     'perm': 'luigi.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "App Details", | ||||
|                     'route': 'appinfo', | ||||
|                     'perm': 'appinfo.list', | ||||
|                 }, | ||||
|                 { | ||||
|                     'title': "Upgrades", | ||||
|                     'route': 'upgrades', | ||||
|                     'perm': 'upgrades.list', | ||||
|                 }, | ||||
|             ], | ||||
|             ]) | ||||
| 
 | ||||
|         items.extend([ | ||||
|             { | ||||
|                 'title': "Users", | ||||
|                 'route': 'users', | ||||
|                 'perm': 'users.list', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Roles", | ||||
|                 'route': 'roles', | ||||
|                 'perm': 'roles.list', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Raw Permissions", | ||||
|                 'route': 'permissions', | ||||
|                 'perm': 'permissions.list', | ||||
|             }, | ||||
|             {'type': 'sep'}, | ||||
|             { | ||||
|                 'title': "Email Settings", | ||||
|                 'route': 'emailprofiles', | ||||
|                 'perm': 'emailprofiles.list', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Email Attempts", | ||||
|                 'route': 'email_attempts', | ||||
|                 'perm': 'email_attempts.list', | ||||
|             }, | ||||
|             {'type': 'sep'}, | ||||
|             { | ||||
|                 'title': "DataSync Status", | ||||
|                 'route': 'datasync.status', | ||||
|                 'perm': 'datasync.status', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "DataSync Changes", | ||||
|                 'route': 'datasyncchanges', | ||||
|                 'perm': 'datasync_changes.list', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Importing / Exporting", | ||||
|                 'route': 'importing', | ||||
|                 'perm': 'importing.list', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Luigi Tasks", | ||||
|                 'route': 'luigi', | ||||
|                 'perm': 'luigi.list', | ||||
|             }, | ||||
|             {'type': 'sep'}, | ||||
|             { | ||||
|                 'title': "App Details", | ||||
|                 'route': 'appinfo', | ||||
|                 'perm': 'appinfo.list', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Raw Settings", | ||||
|                 'route': 'settings', | ||||
|                 'perm': 'settings.list', | ||||
|             }, | ||||
|             { | ||||
|                 'title': "Upgrades", | ||||
|                 'route': 'upgrades', | ||||
|                 'perm': 'upgrades.list', | ||||
|             }, | ||||
|         ]) | ||||
| 
 | ||||
|         return { | ||||
|             'title': "Admin", | ||||
|             'type': 'menu', | ||||
|             'items': items, | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| ################################################################################ | ||||
| # | ||||
| #  Rattail -- Retail Software Framework | ||||
| #  Copyright © 2010-2022 Lance Edgar | ||||
| #  Copyright © 2010-2023 Lance Edgar | ||||
| # | ||||
| #  This file is part of Rattail. | ||||
| # | ||||
|  | @ -30,12 +30,17 @@ from __future__ import unicode_literals, absolute_import | |||
| def includeme(config): | ||||
|     config.include('tailbone.views.auth') | ||||
|     config.include('tailbone.views.common') | ||||
|     config.include('tailbone.views.datasync') | ||||
|     config.include('tailbone.views.email') | ||||
|     config.include('tailbone.views.importing') | ||||
|     config.include('tailbone.views.luigi') | ||||
|     config.include('tailbone.views.menus') | ||||
|     config.include('tailbone.views.people') | ||||
|     config.include('tailbone.views.progress') | ||||
|     config.include('tailbone.views.reports') | ||||
|     config.include('tailbone.views.roles') | ||||
|     config.include('tailbone.views.settings') | ||||
|     config.include('tailbone.views.tables') | ||||
|     config.include('tailbone.views.upgrades') | ||||
|     config.include('tailbone.views.users') | ||||
|     config.include('tailbone.views.views') | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lance Edgar
						Lance Edgar