From 42183a3a3f03ed27022be85ffa0abcfb28c1ae21 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 10 Aug 2024 09:26:03 +1000 Subject: [PATCH] Build order rules (#7842) * Add new global setting * Check if there are open children before completing a build * Adds management command to export settings definition * Fix settings export * Extract settings data into documentation * Add global settings spec * User settings * Revert strict mode * Tweak unit test * Remove unreachable code * Always export settings first * Remove unused macro * Remove old images * Re-add missing docs strings * Tweak docs * Remove unused import --- .gitignore | 1 + .../images/settings/user_notifications.png | Bin 56836 -> 0 bytes .../assets/images/settings/user_reporting.png | Bin 85459 -> 0 bytes docs/docs/build/build.md | 24 +- docs/docs/order/purchase_order.md | 11 + docs/docs/order/return_order.md | 11 + docs/docs/order/sales_order.md | 12 + docs/docs/settings/currency.md | 7 +- docs/docs/settings/global.md | 266 ++++++++++-------- docs/docs/settings/user.md | 44 ++- docs/main.py | 49 ++++ readthedocs.yml | 1 + .../commands/export_settings_definitions.py | 53 ++++ src/backend/InvenTree/build/models.py | 23 +- src/backend/InvenTree/build/serializers.py | 4 + src/backend/InvenTree/build/test_api.py | 2 +- src/backend/InvenTree/common/models.py | 8 + .../templates/InvenTree/settings/build.html | 1 + .../pages/Index/Settings/SystemSettings.tsx | 1 + tasks.py | 15 + 20 files changed, 375 insertions(+), 158 deletions(-) delete mode 100644 docs/docs/assets/images/settings/user_notifications.png delete mode 100644 docs/docs/assets/images/settings/user_reporting.png create mode 100644 src/backend/InvenTree/InvenTree/management/commands/export_settings_definitions.py diff --git a/.gitignore b/.gitignore index 4bc362f653..8541ce79a3 100644 --- a/.gitignore +++ b/.gitignore @@ -111,3 +111,4 @@ InvenTree/web/static docs/schema.yml docs/docs/api/*.yml docs/docs/api/schema/*.yml +inventree_settings.json diff --git a/docs/docs/assets/images/settings/user_notifications.png b/docs/docs/assets/images/settings/user_notifications.png deleted file mode 100644 index ef1b8294f0f0827c9771c7cd76011cb752f5413d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56836 zcmeFZcT|&E_dn{qjxqxxGlHU0GN_1%fC@+_1L!bPl_*HfAkupYon#aN1tACmLV$=U z2uSFJ9s%i1dMA|7ArMMJASCzT`@Rl-zrXv(UF)uO|G8Nfp7=cHoM)eXcKPhj_W2!M z4Nms6?1v5=;=KLmP5ncMjt?9<^smgH{sq2SA3qWR{`$c~UqkH>u7iI8T>NOGs-t@7 zP(GT2VQ~ap|Lppwk;kD!0-^iAe?ZSrtiYEiJa0Ylgt=IIdRw?#9nx^OvU2vYb@4R6 z{}Xs*%>VXH)q6hX%X_==_qLMfSypG<WId*olLFaN$Yc=U%`66R6iqlfLe9n*jQ zNs~-m#Z`IVUl~R$INK)TW+@LkWzHAxe{tVzA>Dj$mcU?vW&Zc$SIcw#zds*3^hGK? z>W6Qaf2UjvKKAYE(B=!#NB>;CvC$Sf{LiJbCHt9wuIA6cn*O=^z4Nu&(SI)e8vfs# zvUG9z$8RH-pU@k-{}=n2(#6lKk>9@k-HOs{c7!$asYX4zm#DB44o?bT?V%-1pAobD z?r+Ze?2I0{9ev@zuY1PQw!B}5GSVlINxQ3!E{0ViejeIYmYUz)`0j)47m1Ye>3S!;jclIr!Y~>%gCNZ&Mu7Qq5$l>$u8Ww734)ZGX41j@`|G(_v9?6y z51hMs2Rv|h>Ic%D|GNj2f*ir{EB)cHCe(Hvc-*B?{NR!A?R(Rbp0rwO(xJxaJQph_i}v6!9vza`w8om*WF78AtAHOuxg?RKTlb;*5! zbM~6Rnh0D8YH{DaS*9i!jx$Qak6qqxfP=)VcH@68aqF^<5Ze@83Dy*C|JFQ7jXAc8 z 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�@>!1}vI;Dnl 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 viP_#p^7NIW9UUdIwX+L382zL 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

n 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
This will let users reset their passwords on their own. For this feature to work you need to configure E-mail | True | -| E-Mail required | Boolean | Require user to supply e-mail on signup.

Without a way (e-mail) to contact the user notifications and security features might not work! | False | -| Enforce MFA | Boolean | Users must use multifactor security.

This forces each user to setup MFA and use it on each authentication | False | -| Mail twice | Boolean | On signup ask users twice for their mail | False | -| Password twice | Boolean | On signup ask users twice for their password | True | -| Auto-fill SSO users | Boolean | Automatically fill out user-details from SSO account-data.

If this feature is enabled the user is only asked for their username, first- and surname if those values can not be gathered from their SSO profile. This might lead to unwanted usernames bleeding over. | True | -| Allowed domains | String | Restrict signup to certain domains (comma-separated, starting with @) | | +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ globalsetting("LOGIN_ENABLE_PWD_FORGOT") }} +{{ globalsetting("LOGIN_MAIL_REQUIRED") }} +{{ globalsetting("LOGIN_ENFORCE_MFA") }} +{{ globalsetting("LOGIN_ENABLE_REG") }} +{{ globalsetting("LOGIN_SIGNUP_MAIL_TWICE") }} +{{ globalsetting("LOGIN_SIGNUP_PWD_TWICE") }} +{{ globalsetting("SIGNUP_GROUP") }} +{{ globalsetting("LOGIN_SIGNUP_MAIL_RESTRICTION") }} +{{ globalsetting("LOGIN_ENABLE_SSO") }} +{{ globalsetting("LOGIN_ENABLE_SSO_REG") }} +{{ globalsetting("LOGIN_SIGNUP_SSO_AUTO") }} +{{ globalsetting("LOGIN_ENABLE_SSO_GROUP_SYNC") }} +{{ globalsetting("SSO_GROUP_MAP") }} +{{ globalsetting("SSO_GROUP_KEY") }} +{{ globalsetting("SSO_REMOVE_GROUPS") }} +#### Require User Email + +If this setting is enabled, users must provide an email address when signing up. Note that some notification and security features require a valid email address. + +#### Forgot Password + +If this setting is enabled, users can reset their password via email. This requires a valid email address to be associated with the user account. + +#### Enforce Multi-Factor Authentication + +If this setting is enabled, users must have multi-factor authentication enabled to log in. + +#### Auto Fil SSO Users + +Automatically fill out user-details from SSO account-data. If this feature is enabled the user is only asked for their username, first- and surname if those values can not be gathered from their SSO profile. This might lead to unwanted usernames bleeding over. ### Barcodes -Configuration of barcode functionality +Configuration of barcode functionality: -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Barcode Support | Boolean | Enable barcode functionality in web interface | True | +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ globalsetting("BARCODE_ENABLE") }} +{{ globalsetting("BARCODE_INPUT_DELAY") }} +{{ globalsetting("BARCODE_WEBCAM_SUPPORT") }} +{{ globalsetting("BARCODE_SHOW_TEXT") }} +{{ globalsetting("BARCODE_GENERATION_PLUGIN") }} -### Currencies +### Pricing and Currency -Configuration of currency support +Configuration of pricing data and currency support: -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Default Currency | Currency | Default currency | USD | +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ globalsetting("INVENTREE_DEFAULT_CURRENCY") }} +{{ globalsetting("CURRENCY_CODES") }} +{{ globalsetting("PART_INTERNAL_PRICE") }} +{{ globalsetting("PART_BOM_USE_INTERNAL_PRICE") }} +{{ globalsetting("PRICING_DECIMAL_PLACES_MIN") }} +{{ globalsetting("PRICING_DECIMAL_PLACES") }} +{{ globalsetting("PRICING_UPDATE_DAYS") }} +{{ globalsetting("PRICING_USE_SUPPLIER_PRICING") }} +{{ globalsetting("PRICING_PURCHASE_HISTORY_OVERRIDES_SUPPLIER") }} +{{ globalsetting("PRICING_USE_STOCK_PRICING") }} +{{ globalsetting("PRICING_STOCK_ITEM_AGE_DAYS") }} +{{ globalsetting("PRICING_USE_VARIANT_PRICING") }} +{{ globalsetting("PRICING_ACTIVE_VARIANTS") }} ### Reporting -Configuration of report generation +Configuration of report generation: -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Enable Reports | Boolean | Enable report generation | False | -| Page Size | String | Default page size | A4 | -| Debug Mode | Boolean | Generate reports in debug mode (HTML output) | False | -| Test Reports | Boolean | Enable generation of test reports | False | +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ globalsetting("REPORT_ENABLE") }} +{{ globalsetting("REPORT_DEFAULT_PAGE_SIZE") }} +{{ globalsetting("REPORT_DEBUG_MODE") }} +{{ globalsetting("REPORT_LOG_ERRORS") }} +{{ globalsetting("REPORT_ENABLE_TEST_REPORT") }} +{{ globalsetting("REPORT_ATTACH_TEST_REPORT") }} ### Parts -#### Main Settings - -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| IPN Regex | String | Regular expression pattern for matching Part IPN | *blank* | -| Allow Duplicate IPN | Boolean | Allow multiple parts to share the same IPN | True | -| Allow Editing IPN | Boolean | Allow changing the IPN value while editing a part | True | -| Part Name Display Format | String | Format to display the part name | {% raw %}`{{ part.id if part.id }}{{ ' | ' if part.id }}{{ part.name }}{{ ' | ' if part.revision }}{{ part.revision if part.revision }}`{% endraw %} | -| Show Price History | Boolean | Display historical pricing for Part | False | -| Show Price in Forms | Boolean | Display part price in some forms | True | -| Show Price in BOM | Boolean | Include pricing information in BOM tables | True | -| Show related parts | Boolean | Display related parts for a part | True | -| Create initial stock | Boolean | Create initial stock on part creation | True | - -#### Creation Settings - -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Template | Boolean | Parts are templates by default | False | -| Assembly | Boolean | Parts can be assembled from other components by default | False | -| Component | Boolean | Parts can be used as sub-components by default | True | -| Trackable | Boolean | Parts are trackable by default | False | -| Purchaseable | Boolean | Parts are purchaseable by default | True | -| Salable | Boolean | Parts are salable by default | False | -| Virtual | Boolean | Parts are virtual by default | False | - -#### Copy Settings - -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Copy Part BOM Data | Boolean | Copy BOM data by default when duplicating a part | True | -| Copy Part Parameter Data | Boolean | Copy parameter data by default when duplicating a part | True | -| Copy Part Test Data | Boolean | Copy test data by default when duplicating a part | True | -| Copy Category Parameter Templates | Boolean | Copy category parameter templates when creating a part | True | - -#### Internal Price Settings - -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Internal Prices | Boolean | Enable internal prices for parts | False | -| Internal Price as BOM-Price | Boolean | Use the internal price (if set) in BOM-price calculations | False | - -#### Part Import Setting - -This section of the part settings allows staff users to: - -- import parts to InvenTree clicking the Import Part button -- enable the ["Import Parts" tab in the part category view](../part/part.md#part-import). - -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Show Import in Views | Boolean | Display the import wizard in some part views | True | +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ globalsetting("PART_IPN_REGEX") }} +{{ globalsetting("PART_ALLOW_DUPLICATE_IPN") }} +{{ globalsetting("PART_ALLOW_EDIT_IPN") }} +{{ globalsetting("PART_ALLOW_DELETE_FROM_ASSEMBLY") }} +{{ globalsetting("PART_ENABLE_REVISION") }} +{{ globalsetting("PART_REVISION_ASSEMBLY_ONLY") }} +{{ globalsetting("PART_NAME_FORMAT") }} +{{ globalsetting("PART_SHOW_RELATED") }} +{{ globalsetting("PART_CREATE_INITIAL") }} +{{ globalsetting("PART_CREATE_SUPPLIER") }} +{{ globalsetting("PART_TEMPLATE") }} +{{ globalsetting("PART_ASSEMBLY") }} +{{ globalsetting("PART_COMPONENT") }} +{{ globalsetting("PART_TRACKABLE") }} +{{ globalsetting("PART_PURCHASEABLE") }} +{{ globalsetting("PART_SALABLE") }} +{{ globalsetting("PART_VIRTUAL") }} +{{ globalsetting("PART_COPY_BOM") }} +{{ globalsetting("PART_COPY_PARAMETERS") }} +{{ globalsetting("PART_COPY_TESTS") }} +{{ globalsetting("PART_CATEGORY_PARAMETERS") }} +{{ globalsetting("PART_CATEGORY_DEFAULT_ICON") }} #### Part Parameter Templates @@ -153,45 +172,48 @@ After a list of parameters is added to a part category and upon creation of a ne Configuration of stock item options -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Stock Expiry | Boolean | Enable stock expiry functionality | False | -| Stock Stale Time | Days | Number of days stock items are considered stale before expiring | 90 | -| Sell Expired Stock | Boolean | Allow sale of expired stock | False | -| Build Expired Stock | Boolean | Allow building with expired stock | False | -| Stock Ownership Control | Boolean | Enable ownership control functionality | False | +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ globalsetting("SERIAL_NUMBER_GLOBALLY_UNIQUE") }} +{{ globalsetting("SERIAL_NUMBER_AUTOFILL") }} +{{ globalsetting("STOCK_DELETE_DEPLETED_DEFAULT") }} +{{ globalsetting("STOCK_BATCH_CODE_TEMPLATE") }} +{{ globalsetting("STOCK_ENABLE_EXPIRY") }} +{{ globalsetting("STOCK_STALE_DAYS") }} +{{ globalsetting("STOCK_ALLOW_EXPIRED_SALE") }} +{{ globalsetting("STOCK_ALLOW_EXPIRED_BUILD") }} +{{ globalsetting("STOCK_OWNERSHIP_CONTROL") }} +{{ globalsetting("STOCK_LOCATION_DEFAULT_ICON") }} +{{ globalsetting("STOCK_SHOW_INSTALLED_ITEMS") }} +{{ globalsetting("STOCK_ENFORCE_BOM_INSTALLATION") }} +{{ globalsetting("STOCK_ALLOW_OUT_OF_STOCK_TRANSFER") }} +{{ globalsetting("TEST_STATION_DATA") }} ### Build Orders -Options for build orders - -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Reference Pattern | String | Pattern for defining Build Order reference values | {% raw %}BO-{ref:04d}{% endraw %} | +Refer to the [build order settings](../build/build.md#build-order-settings). ### Purchase Orders -Options for purchase orders +Refer to the [purchase order settings](../order/purchase_order.md#purchase-order-settings). -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Reference Pattern | String | Pattern for defining Purchase Order reference values | {% raw %}PO-{ref:04d}{% endraw %} | +### Sales Orders -### Sales orders +Refer to the [sales order settings](../order/sales_order.md#sales-order-settings). -Options for sales orders +### Return Orders -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Reference Pattern | String | Pattern for defining Sales Order reference values | {% raw %}SO-{ref:04d}{% endraw %} | +Refer to the [return order settings](../order/return_order.md#return-order-settings). ### Plugin Settings -Change into what parts plugins can integrate into. -| Setting | Type | Description | Default | -| --- | --- | --- | --- | -| Enable URL integration | Boolean | Enable plugins to add URL routes | False | -| Enable navigation integration | Boolean | Enable plugins to integrate into navigation | False | -| Enable setting integration | Boolean | Enable plugins to integrate into inventree settings | False | -| Enable app integration | Boolean | Enable plugins to add apps | False | +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ globalsetting("PLUGIN_ON_STARTUP") }} +{{ globalsetting("PLUGIN_UPDATE_CHECK") }} +{{ globalsetting("ENABLE_PLUGINS_URL") }} +{{ globalsetting("ENABLE_PLUGINS_NAVIGATION") }} +{{ globalsetting("ENABLE_PLUGINS_APP") }} +{{ globalsetting("ENABLE_PLUGINS_SCHEDULE") }} +{{ globalsetting("ENABLE_PLUGINS_EVENTS") }} diff --git a/docs/docs/settings/user.md b/docs/docs/settings/user.md index c9f74b97ed..fdb6cb0aca 100644 --- a/docs/docs/settings/user.md +++ b/docs/docs/settings/user.md @@ -32,24 +32,44 @@ This screen allows the user to customize display of items on the InvenTree home ### Search Settings -Customize settings for search results +Customize settings for search results: -{% with id="user-search", url="settings/user_search.png", description="User Search Settings" %} -{% include 'img.html' %} -{% endwith %} +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ usersetting("SEARCH_WHOLE") }} +{{ usersetting("SEARCH_REGEX") }} +{{ usersetting("SEARCH_PREVIEW_RESULTS") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_PARTS") }} +{{ usersetting("SEARCH_HIDE_INACTIVE_PARTS") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_SUPPLIER_PARTS") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_MANUFACTURER_PARTS") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_CATEGORIES") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_STOCK") }} +{{ usersetting("SEARCH_PREVIEW_HIDE_UNAVAILABLE_STOCK") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_LOCATIONS") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_COMPANIES") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_BUILD_ORDERS") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_PURCHASE_ORDERS") }} +{{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_PURCHASE_ORDERS") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_SALES_ORDERS") }} +{{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_SALES_ORDERS") }} +{{ usersetting("SEARCH_PREVIEW_SHOW_RETURN_ORDERS") }} +{{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_RETURN_ORDERS") }} ### Notifications -Settings related to notification messages +Settings related to notification messages: -{% with id="user-notification", url="settings/user_notifications.png", description="User Notification Settings" %} -{% include 'img.html' %} -{% endwith %} +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ usersetting("NOTIFICATION_ERROR_REPORT") }} ### Reporting -Settings for label printing and report generation +Settings for label printing and report generation: -{% with id="user-reporting", url="settings/user_reporting.png", description="User Reporting Settings" %} -{% include 'img.html' %} -{% endwith %} +| Name | Description | Default | Units | +| ---- | ----------- | ------- | ----- | +{{ usersetting("REPORT_INLINE") }} +{{ usersetting("LABEL_INLINE") }} +{{ usersetting("LABEL_DEFAULT_PRINTER") }} diff --git a/docs/main.py b/docs/main.py index 11066c4057..b09b8b0da2 100644 --- a/docs/main.py +++ b/docs/main.py @@ -1,5 +1,6 @@ """Main entry point for the documentation build process.""" +import json import os import subprocess import textwrap @@ -7,6 +8,20 @@ import textwrap import requests import yaml +# Cached settings dict values +global GLOBAL_SETTINGS +global USER_SETTINGS + +# Read in the InvenTree settings file +here = os.path.dirname(__file__) +settings_file = os.path.join(here, 'inventree_settings.json') + +with open(settings_file, 'r') as sf: + settings = json.load(sf) + + GLOBAL_SETTINGS = settings['global'] + USER_SETTINGS = settings['user'] + def get_repo_url(raw=False): """Return the repository URL for the current project.""" @@ -219,3 +234,37 @@ def define_env(env): ) return includefile(fn, f'Template: {base}', format='html') + + @env.macro + def rendersetting(setting: dict): + """Render a provided setting object into a table row.""" + name = setting['name'] + description = setting['description'] + default = setting.get('default', None) + units = setting.get('units', None) + + return f'| {name} | {description} | {default if default is not None else ""} | {units if units is not None else ""} |' + + @env.macro + def globalsetting(key: str): + """Extract information on a particular global setting. + + Arguments: + - key: The name of the global setting to extract information for. + """ + global GLOBAL_SETTINGS + setting = GLOBAL_SETTINGS[key] + + return rendersetting(setting) + + @env.macro + def usersetting(key: str): + """Extract information on a particular user setting. + + Arguments: + - key: The name of the user setting to extract information for. + """ + global USER_SETTINGS + setting = USER_SETTINGS[key] + + return rendersetting(setting) diff --git a/readthedocs.yml b/readthedocs.yml index 003ca95426..f9a08ce2a9 100644 --- a/readthedocs.yml +++ b/readthedocs.yml @@ -17,5 +17,6 @@ build: - echo "Generating API schema file" - pip install -U invoke - invoke migrate + - invoke export-settings-definitions --filename docs/inventree_settings.json --overwrite - invoke schema --filename docs/schema.yml --ignore-warnings - python docs/extract_schema.py docs/schema.yml diff --git a/src/backend/InvenTree/InvenTree/management/commands/export_settings_definitions.py b/src/backend/InvenTree/InvenTree/management/commands/export_settings_definitions.py new file mode 100644 index 0000000000..8587e936d0 --- /dev/null +++ b/src/backend/InvenTree/InvenTree/management/commands/export_settings_definitions.py @@ -0,0 +1,53 @@ +"""Custom management command to export settings definitions. + +This is used to generate a JSON file which contains all of the settings, +so that they can be introspected by the InvenTree documentation system. + +This in turn allows settings to be documented in the InvenTree documentation, +without having to manually duplicate the information in multiple places. +""" + +import json + +from django.core.management.base import BaseCommand + + +class Command(BaseCommand): + """Extract settings information, and export to a JSON file.""" + + def add_arguments(self, parser): + """Add custom arguments for this command.""" + parser.add_argument( + 'filename', type=str, help='Output filename for settings definitions' + ) + + def handle(self, *args, **kwargs): + """Export settings information to a JSON file.""" + from common.models import InvenTreeSetting, InvenTreeUserSetting + + settings = {'global': {}, 'user': {}} + + # Global settings + for key, setting in InvenTreeSetting.SETTINGS.items(): + settings['global'][key] = { + 'name': str(setting['name']), + 'description': str(setting['description']), + 'default': str(InvenTreeSetting.get_setting_default(key)), + 'units': str(setting.get('units', '')), + } + + # User settings + for key, setting in InvenTreeUserSetting.SETTINGS.items(): + settings['user'][key] = { + 'name': str(setting['name']), + 'description': str(setting['description']), + 'default': str(InvenTreeUserSetting.get_setting_default(key)), + 'units': str(setting.get('units', '')), + } + + filename = kwargs.get('filename', 'inventree_settings.json') + + with open(filename, 'w') as f: + json.dump(settings, f, indent=4) + + print(f"Exported InvenTree settings definitions to '{filename}'") diff --git a/src/backend/InvenTree/build/models.py b/src/backend/InvenTree/build/models.py index eb0449ea94..adde7080da 100644 --- a/src/backend/InvenTree/build/models.py +++ b/src/backend/InvenTree/build/models.py @@ -395,9 +395,9 @@ class Build( def sub_builds(self, cascade=True): """Return all Build Order objects under this one.""" if cascade: - return Build.objects.filter(parent=self.pk) - descendants = self.get_descendants(include_self=True) - Build.objects.filter(parent__pk__in=[d.pk for d in descendants]) + return self.get_descendants(include_self=False) + else: + return self.get_children() def sub_build_count(self, cascade=True): """Return the number of sub builds under this one. @@ -407,6 +407,11 @@ class Build( """ return self.sub_builds(cascade=cascade).count() + @property + def has_open_child_builds(self): + """Return True if this build order has any open child builds.""" + return self.sub_builds().filter(status__in=BuildStatusGroups.ACTIVE_CODES).exists() + @property def is_overdue(self): """Returns true if this build is "overdue". @@ -576,6 +581,9 @@ class Build( - Untracked parts must be allocated """ + if get_global_setting('BUILDORDER_REQUIRE_CLOSED_CHILDS') and self.has_open_child_builds: + return False + if self.status != BuildStatus.PRODUCTION.value: return False @@ -619,6 +627,10 @@ class Build( trim_allocated_stock = kwargs.pop('trim_allocated_stock', False) user = kwargs.pop('user', None) + # Prevent completion if there are open child builds + if get_global_setting('BUILDORDER_REQUIRE_CLOSED_CHILDS') and self.has_open_child_builds: + return + if self.incomplete_count > 0: return @@ -974,7 +986,10 @@ class Build( items_to_save = [] items_to_delete = [] - for build_line in self.untracked_line_items: + lines = self.untracked_line_items + lines = lines.prefetch_related('allocations') + + for build_line in lines: reduce_by = build_line.allocated_quantity() - build_line.quantity diff --git a/src/backend/InvenTree/build/serializers.py b/src/backend/InvenTree/build/serializers.py index 38f6b43adf..ef73686a9b 100644 --- a/src/backend/InvenTree/build/serializers.py +++ b/src/backend/InvenTree/build/serializers.py @@ -27,6 +27,7 @@ from stock.serializers import StockItemSerializerBrief, LocationBriefSerializer import common.models from common.serializers import ProjectCodeSerializer +from common.settings import get_global_setting from importer.mixins import DataImportExportSerializerMixin import company.serializers import part.filters @@ -765,6 +766,9 @@ class BuildCompleteSerializer(serializers.Serializer): """Perform validation of this serializer prior to saving""" build = self.context['build'] + if get_global_setting('BUILDORDER_REQUIRE_CLOSED_CHILDS') and build.has_open_child_builds: + raise ValidationError(_("Build order has open child build orders")) + if build.status != BuildStatus.PRODUCTION.value: raise ValidationError(_("Build order must be in production state")) diff --git a/src/backend/InvenTree/build/test_api.py b/src/backend/InvenTree/build/test_api.py index acb75c25f3..518d4c4098 100644 --- a/src/backend/InvenTree/build/test_api.py +++ b/src/backend/InvenTree/build/test_api.py @@ -1015,7 +1015,7 @@ class BuildOverallocationTest(BuildAPITest): 'accept_overallocated': 'trim', }, expected_code=201, - max_query_count=555, # TODO: Come back and refactor this + max_query_count=600, # TODO: Come back and refactor this ) self.build.refresh_from_db() diff --git a/src/backend/InvenTree/common/models.py b/src/backend/InvenTree/common/models.py index 46e38b03d8..9b34a4c37b 100644 --- a/src/backend/InvenTree/common/models.py +++ b/src/backend/InvenTree/common/models.py @@ -1838,6 +1838,14 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': False, 'validator': bool, }, + 'BUILDORDER_REQUIRE_CLOSED_CHILDS': { + 'name': _('Require Closed Child Orders'), + 'description': _( + 'Prevent build order completion until all child orders are closed' + ), + 'default': False, + 'validator': bool, + }, 'PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS': { 'name': _('Block Until Tests Pass'), 'description': _( diff --git a/src/backend/InvenTree/templates/InvenTree/settings/build.html b/src/backend/InvenTree/templates/InvenTree/settings/build.html index 9eb1ce47bb..cce783b372 100644 --- a/src/backend/InvenTree/templates/InvenTree/settings/build.html +++ b/src/backend/InvenTree/templates/InvenTree/settings/build.html @@ -17,6 +17,7 @@ {% include "InvenTree/settings/setting.html" with key="BUILDORDER_REQUIRE_ACTIVE_PART" %} {% include "InvenTree/settings/setting.html" with key="BUILDORDER_REQUIRE_LOCKED_PART" %} {% include "InvenTree/settings/setting.html" with key="BUILDORDER_REQUIRE_VALID_BOM" %} + {% include "InvenTree/settings/setting.html" with key="BUILDORDER_REQUIRE_CLOSED_CHILDS" %} {% include "InvenTree/settings/setting.html" with key="PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS" %} diff --git a/src/frontend/src/pages/Index/Settings/SystemSettings.tsx b/src/frontend/src/pages/Index/Settings/SystemSettings.tsx index 0db6114592..fe4d7a49e4 100644 --- a/src/frontend/src/pages/Index/Settings/SystemSettings.tsx +++ b/src/frontend/src/pages/Index/Settings/SystemSettings.tsx @@ -244,6 +244,7 @@ export default function SystemSettings() { 'BUILDORDER_REQUIRE_ACTIVE_PART', 'BUILDORDER_REQUIRE_LOCKED_PART', 'BUILDORDER_REQUIRE_VALID_BOM', + 'BUILDORDER_REQUIRE_CLOSED_CHILDS', 'PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS' ]} /> diff --git a/tasks.py b/tasks.py index 57c2ceed30..b665daec7a 100644 --- a/tasks.py +++ b/tasks.py @@ -1074,6 +1074,16 @@ def schema( print('Schema export completed:', filename) +@task +def export_settings_definitions(c, filename='inventree_settings.json', overwrite=False): + """Export settings definition to a JSON file.""" + filename = Path(filename).resolve() + check_file_existance(filename, overwrite) + + print(f"Exporting settings definition to '{filename}'...") + manage(c, f'export_settings_definitions {filename}', pty=True) + + @task(default=True) def version(c): """Show the current version of InvenTree.""" @@ -1406,6 +1416,11 @@ via your signed in browser, or consider using a point release download via invok ) def docs_server(c, address='localhost:8080', compile_schema=False): """Start a local mkdocs server to view the documentation.""" + # Extract settings definitions + export_settings_definitions( + c, filename='docs/inventree_settings.json', overwrite=True + ) + if compile_schema: # Build the schema docs first schema(c, ignore_warnings=True, overwrite=True, filename='docs/schema.yml')