From eaf42b8abe4aad5824a13fd301e50030cf1c7ad4 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 19 Sep 2020 20:26:17 +1000 Subject: [PATCH 1/8] Instead of creating a custom filter for "latest" parts, simply make use of the existing "ordering" query as part of DRF --- InvenTree/part/api.py | 19 ++++++++++++------- InvenTree/templates/InvenTree/index.html | 8 +++++--- InvenTree/templates/js/part.html | 10 +++++++++- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index cf260d7bfa..93cc013da7 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -405,13 +405,6 @@ class PartList(generics.ListCreateAPIView): except (ValueError, Part.DoesNotExist): pass - # Filter by latest part creation date - latest_parts = params.get('latest_parts', None) - - if latest_parts is not None: - # Get the last 5 created parts - queryset = queryset.order_by('-creation_date')[:5] - # Filter invalid BOMs bom_invalid = params.get('bom_invalid', None) @@ -514,6 +507,17 @@ class PartList(generics.ListCreateAPIView): queryset = queryset.filter(pk__in=parts_need_stock) + # Limit choices + limit = params.get('limit', None) + + if limit is not None: + try: + limit = int(limit) + if limit > 0: + queryset = queryset[:limit] + except ValueError: + pass + return queryset permission_classes = [ @@ -539,6 +543,7 @@ class PartList(generics.ListCreateAPIView): ordering_fields = [ 'name', + 'creation_date', ] # Default ordering diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index fa9818069e..a3f99d8b45 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -55,10 +55,12 @@ InvenTree | Index {{ block.super }} -loadPartTable("#latest-parts-table", "{% url 'api-part-list' %}", { +loadSimplePartTable("#latest-parts-table", "{% url 'api-part-list' %}", { params: { - "latest_parts": true, - } + ordering: "-creation_date", + limit: 10, + }, + name: 'latest_parts', }); loadPartTable("#starred-parts-table", "{% url 'api-part-list' %}", { diff --git a/InvenTree/templates/js/part.html b/InvenTree/templates/js/part.html index 03c98e09a4..5576d91367 100644 --- a/InvenTree/templates/js/part.html +++ b/InvenTree/templates/js/part.html @@ -155,6 +155,14 @@ function loadPartVariantTable(table, partId, options) { } +function loadSimplePartTable(table, url, options={}) { + + options.disableFilters = true; + + loadPartTable(table, url, options); +} + + function loadPartTable(table, url, options={}) { /* Load part listing data into specified table. * @@ -332,7 +340,7 @@ function loadPartTable(table, url, options={}) { method: 'get', queryParams: filters, groupBy: false, - name: 'part', + name: options.name || 'part', original: params, formatNoMatches: function() { return "{% trans "No parts found" %}"; }, columns: columns, From 11a17fb9b181e2229821c0b311f4377dac1d2c17 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 19 Sep 2020 20:35:30 +1000 Subject: [PATCH 2/8] Implement a "simplified" part table which does not enforce extra filtering --- InvenTree/templates/InvenTree/index.html | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index a3f99d8b45..910c296eca 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -63,16 +63,18 @@ loadSimplePartTable("#latest-parts-table", "{% url 'api-part-list' %}", { name: 'latest_parts', }); -loadPartTable("#starred-parts-table", "{% url 'api-part-list' %}", { +loadSimplePartTable("#starred-parts-table", "{% url 'api-part-list' %}", { params: { "starred": true, - } + }, + name: 'starred_parts', }); -loadPartTable("#bom-invalid-table", "{% url 'api-part-list' %}", { +loadSimplePartTable("#bom-invalid-table", "{% url 'api-part-list' %}", { params: { "bom_invalid": true, - } + }, + name: 'bom_invalid_parts', }); loadBuildTable("#build-pending-table", { @@ -83,16 +85,18 @@ loadBuildTable("#build-pending-table", { } }); -loadPartTable("#low-stock-table", "{% url 'api-part-list' %}", { +loadSimplePartTable("#low-stock-table", "{% url 'api-part-list' %}", { params: { "low_stock": true, - } + }, + name: "low_stock_parts", }); -loadPartTable("#stock-to-build-table", "{% url 'api-part-list' %}", { +loadSimplePartTable("#stock-to-build-table", "{% url 'api-part-list' %}", { params: { "stock_to_build": true, - } + }, + name: "to_build_parts", }); loadPurchaseOrderTable("#po-outstanding-table", { From b8509f75333157edd6180a92a95706e4761c632c Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 19 Sep 2020 20:42:20 +1000 Subject: [PATCH 3/8] Add ability to filter builds by "active" status --- InvenTree/build/api.py | 17 +++++++++++++---- InvenTree/templates/InvenTree/index.html | 4 ++-- InvenTree/templates/js/table_filters.html | 5 ++++- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 592ff5dc16..c0faee6c15 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -12,6 +12,7 @@ from rest_framework import generics, permissions from django.conf.urls import url, include from InvenTree.helpers import str2bool +from InvenTree.status_codes import BuildStatus from .models import Build, BuildItem from .serializers import BuildSerializer, BuildItemSerializer @@ -59,10 +60,18 @@ class BuildList(generics.ListCreateAPIView): status = self.request.query_params.get('status', None) if status is not None: - # Get status codes - codes = status.split('-') - # Filter by codes - queryset = queryset.filter(status__in=codes) + queryset = queryset.filter(status=status) + + # Filter by "active" status + active = self.request.query_params.get('active', None) + + if active is not None: + active = str2bool(active) + + if active: + queryset = queryset.filter(status__in=BuildStatus.ACTIVE_CODES) + else: + queryset = queryset.exclude(status__in=BuildStatus.ACTIVE_CODES) # Filter by associated part? part = self.request.query_params.get('part', None) diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index 910c296eca..7b4118185a 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -80,8 +80,8 @@ loadSimplePartTable("#bom-invalid-table", "{% url 'api-part-list' %}", { loadBuildTable("#build-pending-table", { url: "{% url 'api-build-list' %}", params: { - "part_detail": true, - "status": "10-20", + part_detail: true, + active: true, } }); diff --git a/InvenTree/templates/js/table_filters.html b/InvenTree/templates/js/table_filters.html index 9050edba6f..8fdb6c391c 100644 --- a/InvenTree/templates/js/table_filters.html +++ b/InvenTree/templates/js/table_filters.html @@ -109,7 +109,10 @@ function getAvailableTableFilters(tableKey) { title: '{% trans "Build status" %}', options: buildCodes, }, - + pending: { + type: 'bool', + title: '{% trans "Pending" %}', + } }; } From 87d0d872e023d4d8990e27ecd4fc6bc285db1377 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 19 Sep 2020 20:45:00 +1000 Subject: [PATCH 4/8] Fix spelling mistakes --- InvenTree/templates/InvenTree/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index 7b4118185a..0e777e72d7 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -103,7 +103,7 @@ loadPurchaseOrderTable("#po-outstanding-table", { url: "{% url 'api-po-list' %}", params: { "supplier_detail": true, - "oustanding": true, + "outstanding": true, } }); @@ -111,7 +111,7 @@ loadSalesOrderTable("#so-outstanding-table", { url: "{% url 'api-so-list' %}", params: { "customer_detail": true, - "oustanding": true, + "outstanding": true, } }); From 1b6843e72db779164e505251c70e50df185049a4 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 19 Sep 2020 21:03:49 +1000 Subject: [PATCH 5/8] Cleanup "bom_invalid" filter - Allow filtering by bom either valid or invalid - Use "bom_valid" as the filter (positive tense) --- InvenTree/part/api.py | 25 ++++++++++++++---------- InvenTree/part/models.py | 1 - InvenTree/templates/InvenTree/index.html | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 93cc013da7..79cb557450 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -405,19 +405,23 @@ class PartList(generics.ListCreateAPIView): except (ValueError, Part.DoesNotExist): pass - # Filter invalid BOMs - bom_invalid = params.get('bom_invalid', None) + # Filter by whether the BOM has been validated (or not) + bom_valid = params.get('bom_valid', None) - if bom_invalid is not None: - # Get assemblies with invalid BOMs - assemblies = queryset.filter(active=True).filter(assembly=True) - valid_boms = [] + if bom_valid is not None: - for part in assemblies: - if part.is_bom_valid: - valid_boms.append(part.pk) + bom_valid = str2bool(bom_valid) - queryset = assemblies.exclude(pk__in=valid_boms) + # Limit queryset to active assemblies + queryset = queryset.filter(active=True, assembly=True) + + pks = [] + + for part in queryset: + if part.is_bom_valid() == bom_valid: + pks.append(part.pk) + + queryset = queryset.filter(pk__in=pks) # Filter by 'starred' parts? starred = params.get('starred', None) @@ -468,6 +472,7 @@ class PartList(generics.ListCreateAPIView): # Filter by whether the part has stock has_stock = params.get("has_stock", None) + if has_stock is not None: has_stock = str2bool(has_stock) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index f1b0890cba..dc9c3102f0 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -845,7 +845,6 @@ class Part(MPTTModel): return str(hash.digest()) - @property def is_bom_valid(self): """ Check if the BOM is 'valid' - if the calculated checksum matches the stored value """ diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index 0e777e72d7..71c95045b4 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -72,7 +72,7 @@ loadSimplePartTable("#starred-parts-table", "{% url 'api-part-list' %}", { loadSimplePartTable("#bom-invalid-table", "{% url 'api-part-list' %}", { params: { - "bom_invalid": true, + "bom_valid": false, }, name: 'bom_invalid_parts', }); From 597ab37ba6dae8cd4f598dc6c10028ebd0eb4158 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 19 Sep 2020 21:18:29 +1000 Subject: [PATCH 6/8] Further cleanup --- InvenTree/part/api.py | 7 +++++++ InvenTree/templates/InvenTree/index.html | 17 +++++++++-------- InvenTree/templates/js/build.html | 6 +++++- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 79cb557450..9d9d56d253 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -408,6 +408,10 @@ class PartList(generics.ListCreateAPIView): # Filter by whether the BOM has been validated (or not) bom_valid = params.get('bom_valid', None) + # TODO: Querying bom_valid status may be quite expensive + # TODO: (It needs to be profiled!) + # TODO: It might be worth caching the bom_valid status to a database column + if bom_valid is not None: bom_valid = str2bool(bom_valid) @@ -499,6 +503,9 @@ class PartList(generics.ListCreateAPIView): # Filter by "parts which need stock to complete build" stock_to_build = params.get('stock_to_build', None) + # TODO: This is super expensive, database query wise... + # TODO: Need to figure out a cheaper way of making this filter query + if stock_to_build is not None: # Filter only active parts queryset = queryset.filter(active=True) diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index 71c95045b4..df2ae1414a 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -82,19 +82,20 @@ loadBuildTable("#build-pending-table", { params: { part_detail: true, active: true, - } + }, + disableFilters: true, }); loadSimplePartTable("#low-stock-table", "{% url 'api-part-list' %}", { params: { - "low_stock": true, + low_stock: true, }, name: "low_stock_parts", }); loadSimplePartTable("#stock-to-build-table", "{% url 'api-part-list' %}", { params: { - "stock_to_build": true, + stock_to_build: true, }, name: "to_build_parts", }); @@ -102,17 +103,17 @@ loadSimplePartTable("#stock-to-build-table", "{% url 'api-part-list' %}", { loadPurchaseOrderTable("#po-outstanding-table", { url: "{% url 'api-po-list' %}", params: { - "supplier_detail": true, - "outstanding": true, + supplier_detail: true, + outstanding: true, } }); loadSalesOrderTable("#so-outstanding-table", { url: "{% url 'api-so-list' %}", params: { - "customer_detail": true, - "outstanding": true, - } + customer_detail: true, + outstanding: true, + }, }); $("#latest-parts-table").on('load-success.bs.table', function() { diff --git a/InvenTree/templates/js/build.html b/InvenTree/templates/js/build.html index 10c017a776..e36e15ddeb 100644 --- a/InvenTree/templates/js/build.html +++ b/InvenTree/templates/js/build.html @@ -5,7 +5,11 @@ function loadBuildTable(table, options) { var params = options.params || {}; - var filters = loadTableFilters("build"); + var filters = {}; + + if (!options.disableFilters) { + loadTableFilters("build"); + } for (var key in params) { filters[key] = params[key]; From b9594db83233a7d343bdf13a18a5a04aba7d43ca Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 19 Sep 2020 21:23:36 +1000 Subject: [PATCH 7/8] Add some hourglass loading icons --- InvenTree/templates/InvenTree/bom_invalid.html | 2 +- InvenTree/templates/InvenTree/build_pending.html | 2 +- InvenTree/templates/InvenTree/latest_parts.html | 2 +- InvenTree/templates/InvenTree/low_stock.html | 2 +- InvenTree/templates/InvenTree/po_outstanding.html | 2 +- InvenTree/templates/InvenTree/required_stock_build.html | 2 +- InvenTree/templates/InvenTree/so_outstanding.html | 2 +- InvenTree/templates/InvenTree/starred_parts.html | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/InvenTree/templates/InvenTree/bom_invalid.html b/InvenTree/templates/InvenTree/bom_invalid.html index 84f4fd7938..d32d17598c 100644 --- a/InvenTree/templates/InvenTree/bom_invalid.html +++ b/InvenTree/templates/InvenTree/bom_invalid.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "BOM Waiting Validation" %}0 +{% trans "BOM Waiting Validation" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/build_pending.html b/InvenTree/templates/InvenTree/build_pending.html index 31a083cfc0..9404c0772b 100644 --- a/InvenTree/templates/InvenTree/build_pending.html +++ b/InvenTree/templates/InvenTree/build_pending.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Pending Builds" %}0 +{% trans "Pending Builds" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/latest_parts.html b/InvenTree/templates/InvenTree/latest_parts.html index e9c9879740..7316c27f7b 100644 --- a/InvenTree/templates/InvenTree/latest_parts.html +++ b/InvenTree/templates/InvenTree/latest_parts.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Latest Parts" %}0 +{% trans "Latest Parts" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/low_stock.html b/InvenTree/templates/InvenTree/low_stock.html index 333dbded27..959e9607a9 100644 --- a/InvenTree/templates/InvenTree/low_stock.html +++ b/InvenTree/templates/InvenTree/low_stock.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Low Stock" %}0 +{% trans "Low Stock" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/po_outstanding.html b/InvenTree/templates/InvenTree/po_outstanding.html index 063915a414..3753576889 100644 --- a/InvenTree/templates/InvenTree/po_outstanding.html +++ b/InvenTree/templates/InvenTree/po_outstanding.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Outstanding Purchase Orders" %}0 +{% trans "Outstanding Purchase Orders" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/required_stock_build.html b/InvenTree/templates/InvenTree/required_stock_build.html index 8202766ec1..4e5bfe6ca5 100644 --- a/InvenTree/templates/InvenTree/required_stock_build.html +++ b/InvenTree/templates/InvenTree/required_stock_build.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Require Stock To Complete Build" %}0 +{% trans "Require Stock To Complete Build" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/so_outstanding.html b/InvenTree/templates/InvenTree/so_outstanding.html index 023abb2b6a..7c1c2637cf 100644 --- a/InvenTree/templates/InvenTree/so_outstanding.html +++ b/InvenTree/templates/InvenTree/so_outstanding.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Outstanding Sales Orders" %}0 +{% trans "Outstanding Sales Orders" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/starred_parts.html b/InvenTree/templates/InvenTree/starred_parts.html index 74f6edafb1..4e87764237 100644 --- a/InvenTree/templates/InvenTree/starred_parts.html +++ b/InvenTree/templates/InvenTree/starred_parts.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Starred Parts" %}0 +{% trans "Starred Parts" %} {% endblock %} {% block collapse_content %} From b30754f5617fbdbd05ad7c100b0e7b1898ee3af8 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 19 Sep 2020 21:26:34 +1000 Subject: [PATCH 8/8] Animate hourglass icons --- InvenTree/templates/InvenTree/bom_invalid.html | 2 +- InvenTree/templates/InvenTree/build_pending.html | 2 +- InvenTree/templates/InvenTree/latest_parts.html | 2 +- InvenTree/templates/InvenTree/low_stock.html | 2 +- InvenTree/templates/InvenTree/parts_to_build.html | 15 --------------- InvenTree/templates/InvenTree/po_outstanding.html | 2 +- .../templates/InvenTree/required_stock_build.html | 2 +- InvenTree/templates/InvenTree/so_outstanding.html | 2 +- InvenTree/templates/InvenTree/starred_parts.html | 2 +- 9 files changed, 8 insertions(+), 23 deletions(-) delete mode 100644 InvenTree/templates/InvenTree/parts_to_build.html diff --git a/InvenTree/templates/InvenTree/bom_invalid.html b/InvenTree/templates/InvenTree/bom_invalid.html index d32d17598c..4a2fe5856c 100644 --- a/InvenTree/templates/InvenTree/bom_invalid.html +++ b/InvenTree/templates/InvenTree/bom_invalid.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "BOM Waiting Validation" %} +{% trans "BOM Waiting Validation" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/build_pending.html b/InvenTree/templates/InvenTree/build_pending.html index 9404c0772b..1b8ebc19c2 100644 --- a/InvenTree/templates/InvenTree/build_pending.html +++ b/InvenTree/templates/InvenTree/build_pending.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Pending Builds" %} +{% trans "Pending Builds" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/latest_parts.html b/InvenTree/templates/InvenTree/latest_parts.html index 7316c27f7b..35e55b7cd2 100644 --- a/InvenTree/templates/InvenTree/latest_parts.html +++ b/InvenTree/templates/InvenTree/latest_parts.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Latest Parts" %} +{% trans "Latest Parts" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/low_stock.html b/InvenTree/templates/InvenTree/low_stock.html index 959e9607a9..e7a3dbddc7 100644 --- a/InvenTree/templates/InvenTree/low_stock.html +++ b/InvenTree/templates/InvenTree/low_stock.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Low Stock" %} +{% trans "Low Stock" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/parts_to_build.html b/InvenTree/templates/InvenTree/parts_to_build.html deleted file mode 100644 index 156e3dda22..0000000000 --- a/InvenTree/templates/InvenTree/parts_to_build.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "collapse.html" %} -{% block collapse_title %} - -Parts to Build{{ to_build | length }} -{% endblock %} - -{% block collapse_heading %} -There are {{ to_build | length }} parts which need building. -{% endblock %} - -{% block collapse_content %} - -{% include "required_part_table.html" with parts=to_build table_id="to-build-table" %} - -{% endblock %} \ No newline at end of file diff --git a/InvenTree/templates/InvenTree/po_outstanding.html b/InvenTree/templates/InvenTree/po_outstanding.html index 3753576889..628695fa68 100644 --- a/InvenTree/templates/InvenTree/po_outstanding.html +++ b/InvenTree/templates/InvenTree/po_outstanding.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Outstanding Purchase Orders" %} +{% trans "Outstanding Purchase Orders" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/required_stock_build.html b/InvenTree/templates/InvenTree/required_stock_build.html index 4e5bfe6ca5..fd6ade4a4e 100644 --- a/InvenTree/templates/InvenTree/required_stock_build.html +++ b/InvenTree/templates/InvenTree/required_stock_build.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Require Stock To Complete Build" %} +{% trans "Require Stock To Complete Build" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/so_outstanding.html b/InvenTree/templates/InvenTree/so_outstanding.html index 7c1c2637cf..29d0261b8b 100644 --- a/InvenTree/templates/InvenTree/so_outstanding.html +++ b/InvenTree/templates/InvenTree/so_outstanding.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Outstanding Sales Orders" %} +{% trans "Outstanding Sales Orders" %} {% endblock %} {% block collapse_content %} diff --git a/InvenTree/templates/InvenTree/starred_parts.html b/InvenTree/templates/InvenTree/starred_parts.html index 4e87764237..a0801566c2 100644 --- a/InvenTree/templates/InvenTree/starred_parts.html +++ b/InvenTree/templates/InvenTree/starred_parts.html @@ -4,7 +4,7 @@ {% block collapse_title %} -{% trans "Starred Parts" %} +{% trans "Starred Parts" %} {% endblock %} {% block collapse_content %}