From 1e55fc8b6d1937621b64365b23f931b91881d276 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 8 Sep 2023 09:10:42 +1000 Subject: [PATCH] Issued by filter (#5515) * Construct dynamic user filter for issued-by * Allow "build order" table to be filtered by "issued_by" field * Bump API version * Fix API version --- InvenTree/InvenTree/api_version.py | 5 +++- InvenTree/build/api.py | 1 + .../templates/js/translated/table_filters.js | 25 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index 934e20526b..4a50d1331f 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -2,11 +2,14 @@ # InvenTree API version -INVENTREE_API_VERSION = 131 +INVENTREE_API_VERSION = 132 """ Increment this API version number whenever there is a significant change to the API that any clients need to know about +v132 -> 2023-09-07 : https://github.com/inventree/InvenTree/pull/5515 + - Add 'issued_by' filter to BuildOrder API list endpoint + v131 -> 2023-08-09 : https://github.com/inventree/InvenTree/pull/5415 - Annotate 'available_variant_stock' to the SalesOrderLine serializer diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 8f00b12716..3575f32ed7 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -35,6 +35,7 @@ class BuildFilter(rest_filters.FilterSet): 'parent', 'sales_order', 'part', + 'issued_by', ] status = rest_filters.NumberFilter(label='Status') diff --git a/InvenTree/templates/js/translated/table_filters.js b/InvenTree/templates/js/translated/table_filters.js index fba4ff52d1..5ede626341 100644 --- a/InvenTree/templates/js/translated/table_filters.js +++ b/InvenTree/templates/js/translated/table_filters.js @@ -18,6 +18,30 @@ */ +// Construct a dynamic API filter for the "issued by" field +function constructIssuedByFilter() { + return { + title: '{% trans "Issued By" %}', + options: function() { + let users = {}; + + inventreeGet('{% url "api-user-list" %}', {}, { + async: false, + success: function(response) { + for (let user of response) { + users[user.pk] = { + key: user.pk, + value: user.username + }; + } + } + }); + + return users; + } + } +} + // Construct a dynamic API filter for the "project" field function constructProjectCodeFilter() { return { @@ -482,6 +506,7 @@ function getBuildTableFilters() { return ownersList; }, }, + issued_by: constructIssuedByFilter(), }; if (global_settings.PROJECT_CODES_ENABLED) {