mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +00:00 
			
		
		
		
	[Plugin] Plugin context (#9439)
* Pass more stuff to window * Expose form functions to plugin context * Breaking: Render plugin component in context tree - Required due to createRoot function - Adds necessary context providers * Fix context * Provide MantineThemeContext * Bundle mantine/core * Hack for useNavigate within ApiForm - Errors out if called within plugin context - Workaround to catch the error * Update build cmd * Define config for building "Library" mode * Update package.json * Add basic index file * Factor out ApiEndpoints * factor out ModelType * Factor out role enums * Further refactoring * More refactoring * Cleanup * Expose apiUrl function * Add instance data to plugin context type def * Tweaks for loading plugin components - LanguageContext must be on the inside * Tweak StylishText * Externalize notifications system * Update lingui config * Add functions for checking plugin interface version * Extract package version at build time * Enhance version checking * Revert variable name change * Public package * Add README.md * adjust packge name * Adjust name to include org * Update project files * Add basic changelog info * Refactoring to expose URL functions * Refactor navigation functions * Update package and README * Improve navigateToLink function * Refactor stylish text - Move into ./lib - Do not require user state * Revert changes - StylishText throws error in plugin - Low priority, can work out later * expose function to refresh page index * Provide RemoteComponent with a method to reload itself * Bump version * Cleanup tests * Prevent duplicate --emptyOutDir arg * Tweak playwright tests * Expose role and permission enums * Fix imports * Updated docs * Fix spelling, typos, etc * Include more package version information * Expose more version context * Cleanup * Probably don't need hooks * Fix links * Docs updates * Fix links
This commit is contained in:
		
							
								
								
									
										235
									
								
								src/frontend/lib/enums/ApiEndpoints.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										235
									
								
								src/frontend/lib/enums/ApiEndpoints.tsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,235 @@ | ||||
| /* | ||||
|  * Enumeration of available API endpoints. | ||||
|  * | ||||
|  * In the cases where endpoints can be accessed with a primary key, | ||||
|  * the primary key should be appended to the endpoint. | ||||
|  * The exception to this is when the endpoint provides an :id parameter. | ||||
|  */ | ||||
|  | ||||
| export enum ApiEndpoints { | ||||
|   api_server_info = '', | ||||
|  | ||||
|   // User API endpoints | ||||
|   user_list = 'user/', | ||||
|   user_me = 'user/me/', | ||||
|   user_profile = 'user/profile/', | ||||
|   user_roles = 'user/roles/', | ||||
|   user_token = 'user/token/', | ||||
|   user_tokens = 'user/tokens/', | ||||
|   user_simple_login = 'email/generate/', | ||||
|  | ||||
|   // User auth endpoints | ||||
|   user_reset = 'auth/v1/auth/password/request', | ||||
|   user_reset_set = 'auth/v1/auth/password/reset', | ||||
|   auth_pwd_change = 'auth/v1/account/password/change', | ||||
|   auth_login = 'auth/v1/auth/login', | ||||
|   auth_login_2fa = 'auth/v1/auth/2fa/authenticate', | ||||
|   auth_session = 'auth/v1/auth/session', | ||||
|   auth_signup = 'auth/v1/auth/signup', | ||||
|   auth_authenticators = 'auth/v1/account/authenticators', | ||||
|   auth_recovery = 'auth/v1/account/authenticators/recovery-codes', | ||||
|   auth_mfa_reauthenticate = 'auth/v1/auth/2fa/reauthenticate', | ||||
|   auth_totp = 'auth/v1/account/authenticators/totp', | ||||
|   auth_reauthenticate = 'auth/v1/auth/reauthenticate', | ||||
|   auth_email = 'auth/v1/account/email', | ||||
|   auth_email_verify = 'auth/v1/auth/email/verify', | ||||
|   auth_providers = 'auth/v1/account/providers', | ||||
|   auth_provider_redirect = 'auth/v1/auth/provider/redirect', | ||||
|   auth_config = 'auth/v1/config', | ||||
|  | ||||
|   // Generic API endpoints | ||||
|   currency_list = 'currency/exchange/', | ||||
|   currency_refresh = 'currency/refresh/', | ||||
|   all_units = 'units/all/', | ||||
|   task_overview = 'background-task/', | ||||
|   task_pending_list = 'background-task/pending/', | ||||
|   task_scheduled_list = 'background-task/scheduled/', | ||||
|   task_failed_list = 'background-task/failed/', | ||||
|   api_search = 'search/', | ||||
|   settings_global_list = 'settings/global/', | ||||
|   settings_user_list = 'settings/user/', | ||||
|   news = 'news/', | ||||
|   global_status = 'generic/status/', | ||||
|   custom_state_list = 'generic/status/custom/', | ||||
|   version = 'version/', | ||||
|   license = 'license/', | ||||
|   group_list = 'user/group/', | ||||
|   owner_list = 'user/owner/', | ||||
|   ruleset_list = 'user/ruleset/', | ||||
|   content_type_list = 'contenttype/', | ||||
|   icons = 'icons/', | ||||
|   selectionlist_list = 'selection/', | ||||
|   selectionlist_detail = 'selection/:id/', | ||||
|  | ||||
|   // Barcode API endpoints | ||||
|   barcode = 'barcode/', | ||||
|   barcode_history = 'barcode/history/', | ||||
|   barcode_link = 'barcode/link/', | ||||
|   barcode_unlink = 'barcode/unlink/', | ||||
|   barcode_generate = 'barcode/generate/', | ||||
|  | ||||
|   // Data output endpoints | ||||
|   data_output = 'data-output/', | ||||
|  | ||||
|   // Data import endpoints | ||||
|   import_session_list = 'importer/session/', | ||||
|   import_session_accept_fields = 'importer/session/:id/accept_fields/', | ||||
|   import_session_accept_rows = 'importer/session/:id/accept_rows/', | ||||
|   import_session_column_mapping_list = 'importer/column-mapping/', | ||||
|   import_session_row_list = 'importer/row/', | ||||
|  | ||||
|   // Notification endpoints | ||||
|   notifications_list = 'notifications/', | ||||
|   notifications_readall = 'notifications/readall/', | ||||
|  | ||||
|   // Build API endpoints | ||||
|   build_order_list = 'build/', | ||||
|   build_order_issue = 'build/:id/issue/', | ||||
|   build_order_cancel = 'build/:id/cancel/', | ||||
|   build_order_hold = 'build/:id/hold/', | ||||
|   build_order_complete = 'build/:id/finish/', | ||||
|   build_output_complete = 'build/:id/complete/', | ||||
|   build_output_create = 'build/:id/create-output/', | ||||
|   build_output_scrap = 'build/:id/scrap-outputs/', | ||||
|   build_output_delete = 'build/:id/delete-outputs/', | ||||
|   build_order_auto_allocate = 'build/:id/auto-allocate/', | ||||
|   build_order_allocate = 'build/:id/allocate/', | ||||
|   build_order_deallocate = 'build/:id/unallocate/', | ||||
|  | ||||
|   build_line_list = 'build/line/', | ||||
|   build_item_list = 'build/item/', | ||||
|  | ||||
|   bom_list = 'bom/', | ||||
|   bom_item_validate = 'bom/:id/validate/', | ||||
|   bom_validate = 'part/:id/bom-validate/', | ||||
|  | ||||
|   // Part API endpoints | ||||
|   part_list = 'part/', | ||||
|   part_parameter_list = 'part/parameter/', | ||||
|   part_parameter_template_list = 'part/parameter/template/', | ||||
|   part_thumbs_list = 'part/thumbs/', | ||||
|   part_pricing = 'part/:id/pricing/', | ||||
|   part_serial_numbers = 'part/:id/serial-numbers/', | ||||
|   part_scheduling = 'part/:id/scheduling/', | ||||
|   part_pricing_internal = 'part/internal-price/', | ||||
|   part_pricing_sale = 'part/sale-price/', | ||||
|   part_stocktake_list = 'part/stocktake/', | ||||
|   part_stocktake_report_list = 'part/stocktake/report/', | ||||
|   part_stocktake_report_generate = 'part/stocktake/report/generate/', | ||||
|   category_list = 'part/category/', | ||||
|   category_tree = 'part/category/tree/', | ||||
|   category_parameter_list = 'part/category/parameters/', | ||||
|   related_part_list = 'part/related/', | ||||
|   part_test_template_list = 'part/test-template/', | ||||
|  | ||||
|   // Company API endpoints | ||||
|   company_list = 'company/', | ||||
|   contact_list = 'company/contact/', | ||||
|   address_list = 'company/address/', | ||||
|   supplier_part_list = 'company/part/', | ||||
|   supplier_part_pricing_list = 'company/price-break/', | ||||
|   manufacturer_part_list = 'company/part/manufacturer/', | ||||
|   manufacturer_part_parameter_list = 'company/part/manufacturer/parameter/', | ||||
|  | ||||
|   // Stock location endpoints | ||||
|   stock_location_list = 'stock/location/', | ||||
|   stock_location_type_list = 'stock/location-type/', | ||||
|   stock_location_tree = 'stock/location/tree/', | ||||
|  | ||||
|   // Stock item API endpoints | ||||
|   stock_item_list = 'stock/', | ||||
|   stock_tracking_list = 'stock/track/', | ||||
|   stock_test_result_list = 'stock/test/', | ||||
|   stock_transfer = 'stock/transfer/', | ||||
|   stock_remove = 'stock/remove/', | ||||
|   stock_add = 'stock/add/', | ||||
|   stock_count = 'stock/count/', | ||||
|   stock_change_status = 'stock/change_status/', | ||||
|   stock_merge = 'stock/merge/', | ||||
|   stock_assign = 'stock/assign/', | ||||
|   stock_status = 'stock/status/', | ||||
|   stock_install = 'stock/:id/install/', | ||||
|   stock_uninstall = 'stock/:id/uninstall/', | ||||
|   stock_serialize = 'stock/:id/serialize/', | ||||
|   stock_return = 'stock/:id/return/', | ||||
|   stock_serial_info = 'stock/:id/serial-numbers/', | ||||
|  | ||||
|   // Generator API endpoints | ||||
|   generate_batch_code = 'generate/batch-code/', | ||||
|   generate_serial_number = 'generate/serial-number/', | ||||
|  | ||||
|   // Order API endpoints | ||||
|   purchase_order_list = 'order/po/', | ||||
|   purchase_order_issue = 'order/po/:id/issue/', | ||||
|   purchase_order_hold = 'order/po/:id/hold/', | ||||
|   purchase_order_cancel = 'order/po/:id/cancel/', | ||||
|   purchase_order_complete = 'order/po/:id/complete/', | ||||
|   purchase_order_line_list = 'order/po-line/', | ||||
|   purchase_order_extra_line_list = 'order/po-extra-line/', | ||||
|   purchase_order_receive = 'order/po/:id/receive/', | ||||
|  | ||||
|   sales_order_list = 'order/so/', | ||||
|   sales_order_issue = 'order/so/:id/issue/', | ||||
|   sales_order_hold = 'order/so/:id/hold/', | ||||
|   sales_order_cancel = 'order/so/:id/cancel/', | ||||
|   sales_order_ship = 'order/so/:id/ship/', | ||||
|   sales_order_complete = 'order/so/:id/complete/', | ||||
|   sales_order_allocate = 'order/so/:id/allocate/', | ||||
|   sales_order_allocate_serials = 'order/so/:id/allocate-serials/', | ||||
|  | ||||
|   sales_order_line_list = 'order/so-line/', | ||||
|   sales_order_extra_line_list = 'order/so-extra-line/', | ||||
|   sales_order_allocation_list = 'order/so-allocation/', | ||||
|  | ||||
|   sales_order_shipment_list = 'order/so/shipment/', | ||||
|   sales_order_shipment_complete = 'order/so/shipment/:id/ship/', | ||||
|  | ||||
|   return_order_list = 'order/ro/', | ||||
|   return_order_issue = 'order/ro/:id/issue/', | ||||
|   return_order_hold = 'order/ro/:id/hold/', | ||||
|   return_order_cancel = 'order/ro/:id/cancel/', | ||||
|   return_order_complete = 'order/ro/:id/complete/', | ||||
|   return_order_receive = 'order/ro/:id/receive/', | ||||
|   return_order_line_list = 'order/ro-line/', | ||||
|   return_order_extra_line_list = 'order/ro-extra-line/', | ||||
|  | ||||
|   // Template API endpoints | ||||
|   label_list = 'label/template/', | ||||
|   label_print = 'label/print/', | ||||
|   report_list = 'report/template/', | ||||
|   report_print = 'report/print/', | ||||
|   report_snippet = 'report/snippet/', | ||||
|   report_asset = 'report/asset/', | ||||
|  | ||||
|   // Plugin API endpoints | ||||
|   plugin_list = 'plugins/', | ||||
|   plugin_setting_list = 'plugins/:plugin/settings/', | ||||
|   plugin_registry_status = 'plugins/status/', | ||||
|   plugin_install = 'plugins/install/', | ||||
|   plugin_reload = 'plugins/reload/', | ||||
|   plugin_activate = 'plugins/:key/activate/', | ||||
|   plugin_uninstall = 'plugins/:key/uninstall/', | ||||
|   plugin_admin = 'plugins/:key/admin/', | ||||
|  | ||||
|   // User interface plugin endpoints | ||||
|   plugin_ui_features_list = 'plugins/ui/features/:feature_type/', | ||||
|  | ||||
|   // Special plugin endpoints | ||||
|   plugin_locate_item = 'locate/', | ||||
|  | ||||
|   // Machine API endpoints | ||||
|   machine_types_list = 'machine/types/', | ||||
|   machine_driver_list = 'machine/drivers/', | ||||
|   machine_registry_status = 'machine/status/', | ||||
|   machine_list = 'machine/', | ||||
|   machine_restart = 'machine/:machine/restart/', | ||||
|   machine_setting_list = 'machine/:machine/settings/', | ||||
|   machine_setting_detail = 'machine/:machine/settings/:config_type/', | ||||
|  | ||||
|   // Miscellaneous API endpoints | ||||
|   attachment_list = 'attachment/', | ||||
|   error_report_list = 'error-report/', | ||||
|   project_code_list = 'project-code/', | ||||
|   custom_unit_list = 'units/', | ||||
|   notes_image_upload = 'notes-image-upload/' | ||||
| } | ||||
							
								
								
									
										279
									
								
								src/frontend/lib/enums/ModelInformation.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										279
									
								
								src/frontend/lib/enums/ModelInformation.tsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,279 @@ | ||||
| import { t } from '@lingui/core/macro'; | ||||
| import type { InvenTreeIconType } from '../types/Icons'; | ||||
| import { ApiEndpoints } from './ApiEndpoints'; | ||||
| import type { ModelType } from './ModelType'; | ||||
|  | ||||
| export interface ModelInformationInterface { | ||||
|   label: string; | ||||
|   label_multiple: string; | ||||
|   url_overview?: string; | ||||
|   url_detail?: string; | ||||
|   api_endpoint: ApiEndpoints; | ||||
|   admin_url?: string; | ||||
|   icon: keyof InvenTreeIconType; | ||||
| } | ||||
|  | ||||
| export interface TranslatableModelInformationInterface | ||||
|   extends Omit<ModelInformationInterface, 'label' | 'label_multiple'> { | ||||
|   label: () => string; | ||||
|   label_multiple: () => string; | ||||
| } | ||||
|  | ||||
| export type ModelDict = { | ||||
|   [key in keyof typeof ModelType]: TranslatableModelInformationInterface; | ||||
| }; | ||||
|  | ||||
| export const ModelInformationDict: ModelDict = { | ||||
|   part: { | ||||
|     label: () => t`Part`, | ||||
|     label_multiple: () => t`Parts`, | ||||
|     url_overview: '/part/category/index/parts', | ||||
|     url_detail: '/part/:pk/', | ||||
|     api_endpoint: ApiEndpoints.part_list, | ||||
|     admin_url: '/part/part/', | ||||
|     icon: 'part' | ||||
|   }, | ||||
|   partparametertemplate: { | ||||
|     label: () => t`Part Parameter Template`, | ||||
|     label_multiple: () => t`Part Parameter Templates`, | ||||
|     url_detail: '/partparametertemplate/:pk/', | ||||
|     api_endpoint: ApiEndpoints.part_parameter_template_list, | ||||
|     icon: 'test_templates' | ||||
|   }, | ||||
|   parttesttemplate: { | ||||
|     label: () => t`Part Test Template`, | ||||
|     label_multiple: () => t`Part Test Templates`, | ||||
|     url_detail: '/parttesttemplate/:pk/', | ||||
|     api_endpoint: ApiEndpoints.part_test_template_list, | ||||
|     icon: 'test' | ||||
|   }, | ||||
|   supplierpart: { | ||||
|     label: () => t`Supplier Part`, | ||||
|     label_multiple: () => t`Supplier Parts`, | ||||
|     url_overview: '/purchasing/index/supplier-parts', | ||||
|     url_detail: '/purchasing/supplier-part/:pk/', | ||||
|     api_endpoint: ApiEndpoints.supplier_part_list, | ||||
|     admin_url: '/company/supplierpart/', | ||||
|     icon: 'supplier_part' | ||||
|   }, | ||||
|   manufacturerpart: { | ||||
|     label: () => t`Manufacturer Part`, | ||||
|     label_multiple: () => t`Manufacturer Parts`, | ||||
|     url_overview: '/purchasing/index/manufacturer-parts', | ||||
|     url_detail: '/purchasing/manufacturer-part/:pk/', | ||||
|     api_endpoint: ApiEndpoints.manufacturer_part_list, | ||||
|     admin_url: '/company/manufacturerpart/', | ||||
|     icon: 'manufacturers' | ||||
|   }, | ||||
|   partcategory: { | ||||
|     label: () => t`Part Category`, | ||||
|     label_multiple: () => t`Part Categories`, | ||||
|     url_overview: '/part/category/parts/subcategories', | ||||
|     url_detail: '/part/category/:pk/', | ||||
|     api_endpoint: ApiEndpoints.category_list, | ||||
|     admin_url: '/part/partcategory/', | ||||
|     icon: 'category' | ||||
|   }, | ||||
|   stockitem: { | ||||
|     label: () => t`Stock Item`, | ||||
|     label_multiple: () => t`Stock Items`, | ||||
|     url_overview: '/stock/location/index/stock-items', | ||||
|     url_detail: '/stock/item/:pk/', | ||||
|     api_endpoint: ApiEndpoints.stock_item_list, | ||||
|     admin_url: '/stock/stockitem/', | ||||
|     icon: 'stock' | ||||
|   }, | ||||
|   stocklocation: { | ||||
|     label: () => t`Stock Location`, | ||||
|     label_multiple: () => t`Stock Locations`, | ||||
|     url_overview: '/stock/location', | ||||
|     url_detail: '/stock/location/:pk/', | ||||
|     api_endpoint: ApiEndpoints.stock_location_list, | ||||
|     admin_url: '/stock/stocklocation/', | ||||
|     icon: 'location' | ||||
|   }, | ||||
|   stocklocationtype: { | ||||
|     label: () => t`Stock Location Type`, | ||||
|     label_multiple: () => t`Stock Location Types`, | ||||
|     api_endpoint: ApiEndpoints.stock_location_type_list, | ||||
|     icon: 'location' | ||||
|   }, | ||||
|   stockhistory: { | ||||
|     label: () => t`Stock History`, | ||||
|     label_multiple: () => t`Stock Histories`, | ||||
|     api_endpoint: ApiEndpoints.stock_tracking_list, | ||||
|     icon: 'history' | ||||
|   }, | ||||
|   build: { | ||||
|     label: () => t`Build`, | ||||
|     label_multiple: () => t`Builds`, | ||||
|     url_overview: '/manufacturing/index/buildorders/', | ||||
|     url_detail: '/manufacturing/build-order/:pk/', | ||||
|     api_endpoint: ApiEndpoints.build_order_list, | ||||
|     admin_url: '/build/build/', | ||||
|     icon: 'build_order' | ||||
|   }, | ||||
|   buildline: { | ||||
|     label: () => t`Build Line`, | ||||
|     label_multiple: () => t`Build Lines`, | ||||
|     url_overview: '/build/line', | ||||
|     url_detail: '/build/line/:pk/', | ||||
|     api_endpoint: ApiEndpoints.build_line_list, | ||||
|     icon: 'build_order' | ||||
|   }, | ||||
|   builditem: { | ||||
|     label: () => t`Build Item`, | ||||
|     label_multiple: () => t`Build Items`, | ||||
|     api_endpoint: ApiEndpoints.build_item_list, | ||||
|     icon: 'build_order' | ||||
|   }, | ||||
|   company: { | ||||
|     label: () => t`Company`, | ||||
|     label_multiple: () => t`Companies`, | ||||
|     url_detail: '/company/:pk/', | ||||
|     api_endpoint: ApiEndpoints.company_list, | ||||
|     admin_url: '/company/company/', | ||||
|     icon: 'building' | ||||
|   }, | ||||
|   projectcode: { | ||||
|     label: () => t`Project Code`, | ||||
|     label_multiple: () => t`Project Codes`, | ||||
|     url_detail: '/project-code/:pk/', | ||||
|     api_endpoint: ApiEndpoints.project_code_list, | ||||
|     icon: 'list_details' | ||||
|   }, | ||||
|   purchaseorder: { | ||||
|     label: () => t`Purchase Order`, | ||||
|     label_multiple: () => t`Purchase Orders`, | ||||
|     url_overview: '/purchasing/index/purchaseorders', | ||||
|     url_detail: '/purchasing/purchase-order/:pk/', | ||||
|     api_endpoint: ApiEndpoints.purchase_order_list, | ||||
|     admin_url: '/order/purchaseorder/', | ||||
|     icon: 'purchase_orders' | ||||
|   }, | ||||
|   purchaseorderlineitem: { | ||||
|     label: () => t`Purchase Order Line`, | ||||
|     label_multiple: () => t`Purchase Order Lines`, | ||||
|     api_endpoint: ApiEndpoints.purchase_order_line_list, | ||||
|     icon: 'purchase_orders' | ||||
|   }, | ||||
|   salesorder: { | ||||
|     label: () => t`Sales Order`, | ||||
|     label_multiple: () => t`Sales Orders`, | ||||
|     url_overview: '/sales/index/salesorders', | ||||
|     url_detail: '/sales/sales-order/:pk/', | ||||
|     api_endpoint: ApiEndpoints.sales_order_list, | ||||
|     admin_url: '/order/salesorder/', | ||||
|     icon: 'sales_orders' | ||||
|   }, | ||||
|   salesordershipment: { | ||||
|     label: () => t`Sales Order Shipment`, | ||||
|     label_multiple: () => t`Sales Order Shipments`, | ||||
|     url_detail: '/sales/shipment/:pk/', | ||||
|     api_endpoint: ApiEndpoints.sales_order_shipment_list, | ||||
|     icon: 'sales_orders' | ||||
|   }, | ||||
|   returnorder: { | ||||
|     label: () => t`Return Order`, | ||||
|     label_multiple: () => t`Return Orders`, | ||||
|     url_overview: '/sales/index/returnorders', | ||||
|     url_detail: '/sales/return-order/:pk/', | ||||
|     api_endpoint: ApiEndpoints.return_order_list, | ||||
|     admin_url: '/order/returnorder/', | ||||
|     icon: 'return_orders' | ||||
|   }, | ||||
|   returnorderlineitem: { | ||||
|     label: () => t`Return Order Line Item`, | ||||
|     label_multiple: () => t`Return Order Line Items`, | ||||
|     api_endpoint: ApiEndpoints.return_order_line_list, | ||||
|     icon: 'return_orders' | ||||
|   }, | ||||
|   address: { | ||||
|     label: () => t`Address`, | ||||
|     label_multiple: () => t`Addresses`, | ||||
|     url_detail: '/address/:pk/', | ||||
|     api_endpoint: ApiEndpoints.address_list, | ||||
|     icon: 'address' | ||||
|   }, | ||||
|   contact: { | ||||
|     label: () => t`Contact`, | ||||
|     label_multiple: () => t`Contacts`, | ||||
|     url_detail: '/contact/:pk/', | ||||
|     api_endpoint: ApiEndpoints.contact_list, | ||||
|     icon: 'group' | ||||
|   }, | ||||
|   owner: { | ||||
|     label: () => t`Owner`, | ||||
|     label_multiple: () => t`Owners`, | ||||
|     url_detail: '/owner/:pk/', | ||||
|     api_endpoint: ApiEndpoints.owner_list, | ||||
|     icon: 'group' | ||||
|   }, | ||||
|   user: { | ||||
|     label: () => t`User`, | ||||
|     label_multiple: () => t`Users`, | ||||
|     url_detail: '/core/user/:pk/', | ||||
|     api_endpoint: ApiEndpoints.user_list, | ||||
|     icon: 'user' | ||||
|   }, | ||||
|   group: { | ||||
|     label: () => t`Group`, | ||||
|     label_multiple: () => t`Groups`, | ||||
|     url_detail: '/core/group/:pk/', | ||||
|     api_endpoint: ApiEndpoints.group_list, | ||||
|     admin_url: '/auth/group/', | ||||
|     icon: 'group' | ||||
|   }, | ||||
|   importsession: { | ||||
|     label: () => t`Import Session`, | ||||
|     label_multiple: () => t`Import Sessions`, | ||||
|     url_overview: '/settings/admin/import', | ||||
|     url_detail: '/import/:pk/', | ||||
|     api_endpoint: ApiEndpoints.import_session_list, | ||||
|     icon: 'import' | ||||
|   }, | ||||
|   labeltemplate: { | ||||
|     label: () => t`Label Template`, | ||||
|     label_multiple: () => t`Label Templates`, | ||||
|     url_overview: '/settings/admin/labels', | ||||
|     url_detail: '/settings/admin/labels/:pk/', | ||||
|     api_endpoint: ApiEndpoints.label_list, | ||||
|     icon: 'labels' | ||||
|   }, | ||||
|   reporttemplate: { | ||||
|     label: () => t`Report Template`, | ||||
|     label_multiple: () => t`Report Templates`, | ||||
|     url_overview: '/settings/admin/reports', | ||||
|     url_detail: '/settings/admin/reports/:pk/', | ||||
|     api_endpoint: ApiEndpoints.report_list, | ||||
|     icon: 'reports' | ||||
|   }, | ||||
|   pluginconfig: { | ||||
|     label: () => t`Plugin Configuration`, | ||||
|     label_multiple: () => t`Plugin Configurations`, | ||||
|     url_overview: '/settings/admin/plugin', | ||||
|     url_detail: '/settings/admin/plugin/:pk/', | ||||
|     api_endpoint: ApiEndpoints.plugin_list, | ||||
|     icon: 'plugin' | ||||
|   }, | ||||
|   contenttype: { | ||||
|     label: () => t`Content Type`, | ||||
|     label_multiple: () => t`Content Types`, | ||||
|     api_endpoint: ApiEndpoints.content_type_list, | ||||
|     icon: 'list_details' | ||||
|   }, | ||||
|   selectionlist: { | ||||
|     label: () => t`Selection List`, | ||||
|     label_multiple: () => t`Selection Lists`, | ||||
|     api_endpoint: ApiEndpoints.selectionlist_list, | ||||
|     icon: 'list_details' | ||||
|   }, | ||||
|   error: { | ||||
|     label: () => t`Error`, | ||||
|     label_multiple: () => t`Errors`, | ||||
|     api_endpoint: ApiEndpoints.error_report_list, | ||||
|     url_overview: '/settings/admin/errors', | ||||
|     url_detail: '/settings/admin/errors/:pk/', | ||||
|     icon: 'exclamation' | ||||
|   } | ||||
| }; | ||||
							
								
								
									
										38
									
								
								src/frontend/lib/enums/ModelType.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/frontend/lib/enums/ModelType.tsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| /* | ||||
|  * Enumeration of available API model types | ||||
|  */ | ||||
| export enum ModelType { | ||||
|   part = 'part', | ||||
|   supplierpart = 'supplierpart', | ||||
|   manufacturerpart = 'manufacturerpart', | ||||
|   partcategory = 'partcategory', | ||||
|   partparametertemplate = 'partparametertemplate', | ||||
|   parttesttemplate = 'parttesttemplate', | ||||
|   projectcode = 'projectcode', | ||||
|   stockitem = 'stockitem', | ||||
|   stocklocation = 'stocklocation', | ||||
|   stocklocationtype = 'stocklocationtype', | ||||
|   stockhistory = 'stockhistory', | ||||
|   build = 'build', | ||||
|   buildline = 'buildline', | ||||
|   builditem = 'builditem', | ||||
|   company = 'company', | ||||
|   purchaseorder = 'purchaseorder', | ||||
|   purchaseorderlineitem = 'purchaseorderlineitem', | ||||
|   salesorder = 'salesorder', | ||||
|   salesordershipment = 'salesordershipment', | ||||
|   returnorder = 'returnorder', | ||||
|   returnorderlineitem = 'returnorderlineitem', | ||||
|   importsession = 'importsession', | ||||
|   address = 'address', | ||||
|   contact = 'contact', | ||||
|   owner = 'owner', | ||||
|   user = 'user', | ||||
|   group = 'group', | ||||
|   reporttemplate = 'reporttemplate', | ||||
|   labeltemplate = 'labeltemplate', | ||||
|   pluginconfig = 'pluginconfig', | ||||
|   contenttype = 'contenttype', | ||||
|   selectionlist = 'selectionlist', | ||||
|   error = 'error' | ||||
| } | ||||
							
								
								
									
										54
									
								
								src/frontend/lib/enums/Roles.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/frontend/lib/enums/Roles.tsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| import { t } from '@lingui/core/macro'; | ||||
|  | ||||
| /* | ||||
|  * Enumeration of available user role groups | ||||
|  */ | ||||
| export enum UserRoles { | ||||
|   admin = 'admin', | ||||
|   build = 'build', | ||||
|   part = 'part', | ||||
|   part_category = 'part_category', | ||||
|   purchase_order = 'purchase_order', | ||||
|   return_order = 'return_order', | ||||
|   sales_order = 'sales_order', | ||||
|   stock = 'stock', | ||||
|   stock_location = 'stock_location', | ||||
|   stocktake = 'stocktake' | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Enumeration of available user permissions within each role group | ||||
|  */ | ||||
| export enum UserPermissions { | ||||
|   view = 'view', | ||||
|   add = 'add', | ||||
|   change = 'change', | ||||
|   delete = 'delete' | ||||
| } | ||||
|  | ||||
| export function userRoleLabel(role: UserRoles): string { | ||||
|   switch (role) { | ||||
|     case UserRoles.admin: | ||||
|       return t`Admin`; | ||||
|     case UserRoles.build: | ||||
|       return t`Build Orders`; | ||||
|     case UserRoles.part: | ||||
|       return t`Parts`; | ||||
|     case UserRoles.part_category: | ||||
|       return t`Part Categories`; | ||||
|     case UserRoles.purchase_order: | ||||
|       return t`Purchase Orders`; | ||||
|     case UserRoles.return_order: | ||||
|       return t`Return Orders`; | ||||
|     case UserRoles.sales_order: | ||||
|       return t`Sales Orders`; | ||||
|     case UserRoles.stock: | ||||
|       return t`Stock Items`; | ||||
|     case UserRoles.stock_location: | ||||
|       return t`Stock Location`; | ||||
|     case UserRoles.stocktake: | ||||
|       return t`Stocktake`; | ||||
|     default: | ||||
|       return role as string; | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user