mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-04 07:05:41 +00:00 
			
		
		
		
	Cleanup old settings (#8709)
* Use LABEL_ENABLE and REPORT_ENABLE settings in PUI * Cleanup base.html - Should reduce db hits slightly * Remove defunct homepage settings * Cleanup old settings * Adjust unit test
This commit is contained in:
		@@ -31,9 +31,7 @@ Configuration of basic server settings:
 | 
				
			|||||||
{{ globalsetting("INVENTREE_DOWNLOAD_FROM_URL") }}
 | 
					{{ globalsetting("INVENTREE_DOWNLOAD_FROM_URL") }}
 | 
				
			||||||
{{ globalsetting("INVENTREE_DOWNLOAD_IMAGE_MAX_SIZE") }}
 | 
					{{ globalsetting("INVENTREE_DOWNLOAD_IMAGE_MAX_SIZE") }}
 | 
				
			||||||
{{ globalsetting("INVENTREE_DOWNLOAD_FROM_URL_USER_AGENT") }}
 | 
					{{ globalsetting("INVENTREE_DOWNLOAD_FROM_URL_USER_AGENT") }}
 | 
				
			||||||
{{ globalsetting("INVENTREE_REQUIRE_CONFIRM") }}
 | 
					 | 
				
			||||||
{{ globalsetting("INVENTREE_STRICT_URLS") }}
 | 
					{{ globalsetting("INVENTREE_STRICT_URLS") }}
 | 
				
			||||||
{{ globalsetting("INVENTREE_TREE_DEPTH") }}
 | 
					 | 
				
			||||||
{{ globalsetting("INVENTREE_BACKUP_ENABLE") }}
 | 
					{{ globalsetting("INVENTREE_BACKUP_ENABLE") }}
 | 
				
			||||||
{{ globalsetting("INVENTREE_BACKUP_DAYS") }}
 | 
					{{ globalsetting("INVENTREE_BACKUP_DAYS") }}
 | 
				
			||||||
{{ globalsetting("INVENTREE_DELETE_TASKS_DAYS") }}
 | 
					{{ globalsetting("INVENTREE_DELETE_TASKS_DAYS") }}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -253,20 +253,6 @@ SYSTEM_SETTINGS: dict[str, InvenTreeSettingsKeyType] = {
 | 
				
			|||||||
        'validator': bool,
 | 
					        'validator': bool,
 | 
				
			||||||
        'default': True,
 | 
					        'default': True,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    'INVENTREE_REQUIRE_CONFIRM': {
 | 
					 | 
				
			||||||
        'name': _('Require confirm'),
 | 
					 | 
				
			||||||
        'description': _('Require explicit user confirmation for certain action.'),
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'INVENTREE_TREE_DEPTH': {
 | 
					 | 
				
			||||||
        'name': _('Tree Depth'),
 | 
					 | 
				
			||||||
        'description': _(
 | 
					 | 
				
			||||||
            'Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed.'
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        'default': 1,
 | 
					 | 
				
			||||||
        'validator': [int, MinValueValidator(0)],
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'INVENTREE_UPDATE_CHECK_INTERVAL': {
 | 
					    'INVENTREE_UPDATE_CHECK_INTERVAL': {
 | 
				
			||||||
        'name': _('Update Check Interval'),
 | 
					        'name': _('Update Check Interval'),
 | 
				
			||||||
        'description': _('How often to check for updates (set to zero to disable)'),
 | 
					        'description': _('How often to check for updates (set to zero to disable)'),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,120 +19,6 @@ def label_printer_options():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
USER_SETTINGS: dict[str, InvenTreeSettingsKeyType] = {
 | 
					USER_SETTINGS: dict[str, InvenTreeSettingsKeyType] = {
 | 
				
			||||||
    'HOMEPAGE_HIDE_INACTIVE': {
 | 
					 | 
				
			||||||
        'name': _('Hide inactive parts'),
 | 
					 | 
				
			||||||
        'description': _('Hide inactive parts in results displayed on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_PART_STARRED': {
 | 
					 | 
				
			||||||
        'name': _('Show subscribed parts'),
 | 
					 | 
				
			||||||
        'description': _('Show subscribed parts on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_CATEGORY_STARRED': {
 | 
					 | 
				
			||||||
        'name': _('Show subscribed categories'),
 | 
					 | 
				
			||||||
        'description': _('Show subscribed part categories on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_PART_LATEST': {
 | 
					 | 
				
			||||||
        'name': _('Show latest parts'),
 | 
					 | 
				
			||||||
        'description': _('Show latest parts on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_BOM_REQUIRES_VALIDATION': {
 | 
					 | 
				
			||||||
        'name': _('Show invalid BOMs'),
 | 
					 | 
				
			||||||
        'description': _('Show BOMs that await validation on the homepage'),
 | 
					 | 
				
			||||||
        'default': False,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_STOCK_RECENT': {
 | 
					 | 
				
			||||||
        'name': _('Show recent stock changes'),
 | 
					 | 
				
			||||||
        'description': _('Show recently changed stock items on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_STOCK_LOW': {
 | 
					 | 
				
			||||||
        'name': _('Show low stock'),
 | 
					 | 
				
			||||||
        'description': _('Show low stock items on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_SHOW_STOCK_DEPLETED': {
 | 
					 | 
				
			||||||
        'name': _('Show depleted stock'),
 | 
					 | 
				
			||||||
        'description': _('Show depleted stock items on the homepage'),
 | 
					 | 
				
			||||||
        'default': False,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_BUILD_STOCK_NEEDED': {
 | 
					 | 
				
			||||||
        'name': _('Show needed stock'),
 | 
					 | 
				
			||||||
        'description': _('Show stock items needed for builds on the homepage'),
 | 
					 | 
				
			||||||
        'default': False,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_STOCK_EXPIRED': {
 | 
					 | 
				
			||||||
        'name': _('Show expired stock'),
 | 
					 | 
				
			||||||
        'description': _('Show expired stock items on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_STOCK_STALE': {
 | 
					 | 
				
			||||||
        'name': _('Show stale stock'),
 | 
					 | 
				
			||||||
        'description': _('Show stale stock items on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_BUILD_PENDING': {
 | 
					 | 
				
			||||||
        'name': _('Show pending builds'),
 | 
					 | 
				
			||||||
        'description': _('Show pending builds on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_BUILD_OVERDUE': {
 | 
					 | 
				
			||||||
        'name': _('Show overdue builds'),
 | 
					 | 
				
			||||||
        'description': _('Show overdue builds on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_PO_OUTSTANDING': {
 | 
					 | 
				
			||||||
        'name': _('Show outstanding POs'),
 | 
					 | 
				
			||||||
        'description': _('Show outstanding POs on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_PO_OVERDUE': {
 | 
					 | 
				
			||||||
        'name': _('Show overdue POs'),
 | 
					 | 
				
			||||||
        'description': _('Show overdue POs on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_SO_OUTSTANDING': {
 | 
					 | 
				
			||||||
        'name': _('Show outstanding SOs'),
 | 
					 | 
				
			||||||
        'description': _('Show outstanding SOs on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_SO_OVERDUE': {
 | 
					 | 
				
			||||||
        'name': _('Show overdue SOs'),
 | 
					 | 
				
			||||||
        'description': _('Show overdue SOs on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_SO_SHIPMENTS_PENDING': {
 | 
					 | 
				
			||||||
        'name': _('Show pending SO shipments'),
 | 
					 | 
				
			||||||
        'description': _('Show pending SO shipments on the homepage'),
 | 
					 | 
				
			||||||
        'default': True,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'HOMEPAGE_NEWS': {
 | 
					 | 
				
			||||||
        'name': _('Show News'),
 | 
					 | 
				
			||||||
        'description': _('Show news on the homepage'),
 | 
					 | 
				
			||||||
        'default': False,
 | 
					 | 
				
			||||||
        'validator': bool,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'LABEL_INLINE': {
 | 
					    'LABEL_INLINE': {
 | 
				
			||||||
        'name': _('Inline label display'),
 | 
					        'name': _('Inline label display'),
 | 
				
			||||||
        'description': _(
 | 
					        'description': _(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -628,7 +628,7 @@ class UserSettingsApiTest(InvenTreeAPITestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def test_user_setting_init(self):
 | 
					    def test_user_setting_init(self):
 | 
				
			||||||
        """Test we can retrieve a setting which has not yet been initialized."""
 | 
					        """Test we can retrieve a setting which has not yet been initialized."""
 | 
				
			||||||
        key = 'HOMEPAGE_PART_LATEST'
 | 
					        key = 'LABEL_INLINE'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Ensure it does not actually exist in the database
 | 
					        # Ensure it does not actually exist in the database
 | 
				
			||||||
        self.assertFalse(InvenTreeUserSetting.objects.filter(key=key).exists())
 | 
					        self.assertFalse(InvenTreeUserSetting.objects.filter(key=key).exists())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,14 +2,8 @@
 | 
				
			|||||||
{% load i18n %}
 | 
					{% load i18n %}
 | 
				
			||||||
{% load inventree_extras %}
 | 
					{% load inventree_extras %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% plugins_enabled as plugins_enabled %}
 | 
					 | 
				
			||||||
{% settings_value 'BARCODE_ENABLE' as barcodes %}
 | 
					 | 
				
			||||||
{% settings_value 'RETURNORDER_ENABLED' as return_order_enabled %}
 | 
					 | 
				
			||||||
{% settings_value "REPORT_ENABLE" as report_enabled %}
 | 
					 | 
				
			||||||
{% settings_value "SERVER_RESTART_REQUIRED" as server_restart_required %}
 | 
					{% settings_value "SERVER_RESTART_REQUIRED" as server_restart_required %}
 | 
				
			||||||
{% settings_value "_PENDING_MIGRATIONS" as pending_migrations %}
 | 
					{% settings_value "_PENDING_MIGRATIONS" as pending_migrations %}
 | 
				
			||||||
{% settings_value "LABEL_ENABLE" as labels_enabled %}
 | 
					 | 
				
			||||||
{% inventree_show_about user as show_about %}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!DOCTYPE html>
 | 
					<!DOCTYPE html>
 | 
				
			||||||
<html lang="en">
 | 
					<html lang="en">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,10 @@ import { extractAvailableFields } from '../../functions/forms';
 | 
				
			|||||||
import { generateUrl } from '../../functions/urls';
 | 
					import { generateUrl } from '../../functions/urls';
 | 
				
			||||||
import { useCreateApiFormModal } from '../../hooks/UseForm';
 | 
					import { useCreateApiFormModal } from '../../hooks/UseForm';
 | 
				
			||||||
import { apiUrl } from '../../states/ApiState';
 | 
					import { apiUrl } from '../../states/ApiState';
 | 
				
			||||||
import { useUserSettingsState } from '../../states/SettingsState';
 | 
					import {
 | 
				
			||||||
 | 
					  useGlobalSettingsState,
 | 
				
			||||||
 | 
					  useUserSettingsState
 | 
				
			||||||
 | 
					} from '../../states/SettingsState';
 | 
				
			||||||
import type { ApiFormFieldSet } from '../forms/fields/ApiFormField';
 | 
					import type { ApiFormFieldSet } from '../forms/fields/ApiFormField';
 | 
				
			||||||
import { ActionDropdown } from '../items/ActionDropdown';
 | 
					import { ActionDropdown } from '../items/ActionDropdown';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,14 +32,23 @@ export function PrintingActions({
 | 
				
			|||||||
  modelType?: ModelType;
 | 
					  modelType?: ModelType;
 | 
				
			||||||
}) {
 | 
					}) {
 | 
				
			||||||
  const userSettings = useUserSettingsState();
 | 
					  const userSettings = useUserSettingsState();
 | 
				
			||||||
 | 
					  const globalSettings = useGlobalSettingsState();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const enabled = useMemo(() => items.length > 0, [items]);
 | 
					  const enabled = useMemo(() => items.length > 0, [items]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const [pluginKey, setPluginKey] = useState<string>('');
 | 
					  const [pluginKey, setPluginKey] = useState<string>('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const labelPrintingEnabled = useMemo(() => {
 | 
				
			||||||
 | 
					    return enableLabels && globalSettings.isSet('LABEL_ENABLE');
 | 
				
			||||||
 | 
					  }, [enableLabels, globalSettings]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const reportPrintingEnabled = useMemo(() => {
 | 
				
			||||||
 | 
					    return enableReports && globalSettings.isSet('REPORT_ENABLE');
 | 
				
			||||||
 | 
					  }, [enableReports, globalSettings]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Fetch available printing fields via OPTIONS request
 | 
					  // Fetch available printing fields via OPTIONS request
 | 
				
			||||||
  const printingFields = useQuery({
 | 
					  const printingFields = useQuery({
 | 
				
			||||||
    enabled: enableLabels,
 | 
					    enabled: labelPrintingEnabled,
 | 
				
			||||||
    queryKey: ['printingFields', modelType, pluginKey],
 | 
					    queryKey: ['printingFields', modelType, pluginKey],
 | 
				
			||||||
    gcTime: 500,
 | 
					    gcTime: 500,
 | 
				
			||||||
    queryFn: () =>
 | 
					    queryFn: () =>
 | 
				
			||||||
@@ -162,7 +174,7 @@ export function PrintingActions({
 | 
				
			|||||||
    return null;
 | 
					    return null;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!enableLabels && !enableReports) {
 | 
					  if (!labelPrintingEnabled && !reportPrintingEnabled) {
 | 
				
			||||||
    return null;
 | 
					    return null;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -180,13 +192,13 @@ export function PrintingActions({
 | 
				
			|||||||
              name: t`Print Labels`,
 | 
					              name: t`Print Labels`,
 | 
				
			||||||
              icon: <IconTags />,
 | 
					              icon: <IconTags />,
 | 
				
			||||||
              onClick: () => labelModal.open(),
 | 
					              onClick: () => labelModal.open(),
 | 
				
			||||||
              hidden: !enableLabels
 | 
					              hidden: !labelPrintingEnabled
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
              name: t`Print Reports`,
 | 
					              name: t`Print Reports`,
 | 
				
			||||||
              icon: <IconReport />,
 | 
					              icon: <IconReport />,
 | 
				
			||||||
              onClick: () => reportModal.open(),
 | 
					              onClick: () => reportModal.open(),
 | 
				
			||||||
              hidden: !enableReports
 | 
					              hidden: !reportPrintingEnabled
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          ]}
 | 
					          ]}
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,9 +50,7 @@ export default function SystemSettings() {
 | 
				
			|||||||
              'INVENTREE_DOWNLOAD_FROM_URL',
 | 
					              'INVENTREE_DOWNLOAD_FROM_URL',
 | 
				
			||||||
              'INVENTREE_DOWNLOAD_IMAGE_MAX_SIZE',
 | 
					              'INVENTREE_DOWNLOAD_IMAGE_MAX_SIZE',
 | 
				
			||||||
              'INVENTREE_DOWNLOAD_FROM_URL_USER_AGENT',
 | 
					              'INVENTREE_DOWNLOAD_FROM_URL_USER_AGENT',
 | 
				
			||||||
              'INVENTREE_REQUIRE_CONFIRM',
 | 
					 | 
				
			||||||
              'INVENTREE_STRICT_URLS',
 | 
					              'INVENTREE_STRICT_URLS',
 | 
				
			||||||
              'INVENTREE_TREE_DEPTH',
 | 
					 | 
				
			||||||
              'INVENTREE_BACKUP_ENABLE',
 | 
					              'INVENTREE_BACKUP_ENABLE',
 | 
				
			||||||
              'INVENTREE_BACKUP_DAYS',
 | 
					              'INVENTREE_BACKUP_DAYS',
 | 
				
			||||||
              'INVENTREE_DELETE_TASKS_DAYS',
 | 
					              'INVENTREE_DELETE_TASKS_DAYS',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,6 @@ import { Skeleton, Stack } from '@mantine/core';
 | 
				
			|||||||
import {
 | 
					import {
 | 
				
			||||||
  IconBellCog,
 | 
					  IconBellCog,
 | 
				
			||||||
  IconDeviceDesktop,
 | 
					  IconDeviceDesktop,
 | 
				
			||||||
  IconDeviceDesktopAnalytics,
 | 
					 | 
				
			||||||
  IconFileAnalytics,
 | 
					  IconFileAnalytics,
 | 
				
			||||||
  IconLock,
 | 
					  IconLock,
 | 
				
			||||||
  IconSearch,
 | 
					  IconSearch,
 | 
				
			||||||
@@ -43,38 +42,6 @@ export default function UserSettings() {
 | 
				
			|||||||
        icon: <IconLock />,
 | 
					        icon: <IconLock />,
 | 
				
			||||||
        content: <SecurityContent />
 | 
					        content: <SecurityContent />
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
        name: 'dashboard',
 | 
					 | 
				
			||||||
        label: t`Dashboard`,
 | 
					 | 
				
			||||||
        icon: <IconDeviceDesktopAnalytics />,
 | 
					 | 
				
			||||||
        content: (
 | 
					 | 
				
			||||||
          <UserSettingList
 | 
					 | 
				
			||||||
            keys={[
 | 
					 | 
				
			||||||
              // TODO: These will be replaced with "dashboard" settings,
 | 
					 | 
				
			||||||
              // once the new dashboard is implemented
 | 
					 | 
				
			||||||
              'HOMEPAGE_HIDE_INACTIVE',
 | 
					 | 
				
			||||||
              'HOMEPAGE_PART_STARRED',
 | 
					 | 
				
			||||||
              'HOMEPAGE_CATEGORY_STARRED',
 | 
					 | 
				
			||||||
              'HOMEPAGE_PART_LATEST',
 | 
					 | 
				
			||||||
              'HOMEPAGE_BOM_REQUIRES_VALIDATION',
 | 
					 | 
				
			||||||
              'HOMEPAGE_STOCK_RECENT',
 | 
					 | 
				
			||||||
              'HOMEPAGE_STOCK_LOW',
 | 
					 | 
				
			||||||
              'HOMEPAGE_SHOW_STOCK_DEPLETED',
 | 
					 | 
				
			||||||
              'HOMEPAGE_BUILD_STOCK_NEEDED',
 | 
					 | 
				
			||||||
              'HOMEPAGE_STOCK_EXPIRED',
 | 
					 | 
				
			||||||
              'HOMEPAGE_STOCK_STALE',
 | 
					 | 
				
			||||||
              'HOMEPAGE_BUILD_PENDING',
 | 
					 | 
				
			||||||
              'HOMEPAGE_BUILD_OVERDUE',
 | 
					 | 
				
			||||||
              'HOMEPAGE_PO_OUTSTANDING',
 | 
					 | 
				
			||||||
              'HOMEPAGE_PO_OVERDUE',
 | 
					 | 
				
			||||||
              'HOMEPAGE_SO_OUTSTANDING',
 | 
					 | 
				
			||||||
              'HOMEPAGE_SO_OVERDUE',
 | 
					 | 
				
			||||||
              'HOMEPAGE_SO_SHIPMENTS_PENDING',
 | 
					 | 
				
			||||||
              'HOMEPAGE_NEWS'
 | 
					 | 
				
			||||||
            ]}
 | 
					 | 
				
			||||||
          />
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        name: 'display',
 | 
					        name: 'display',
 | 
				
			||||||
        label: t`Display Options`,
 | 
					        label: t`Display Options`,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user