From 6a0efb0365350ed47fa4f6ca6b7e921bb507d156 Mon Sep 17 00:00:00 2001 From: Bben <47628473+Bbillyben@users.noreply.github.com> Date: Wed, 4 Jan 2023 20:48:16 +0100 Subject: [PATCH] Add Date input for table filter (#4067) * Add Date input for table filter * Update filters.js * Update filters.js * Expiry date filter on stock item * JS whitespace * Timezone from JS * Move to timestamp timezoned * Revert to YYYY-MM-DD iso format * Remove setting/ getFilterSettings from addTableFilter --- InvenTree/InvenTree/api_version.py | 4 +++- InvenTree/stock/api.py | 15 +++++++++++++++ InvenTree/templates/js/translated/filters.js | 4 ++++ .../templates/js/translated/table_filters.js | 8 ++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index dcf30151d5..3265a258ac 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -2,10 +2,12 @@ # InvenTree API version -INVENTREE_API_VERSION = 86 +INVENTREE_API_VERSION = 87 """ Increment this API version number whenever there is a significant change to the API that any clients need to know about +v87 -> 2023-01-04 : https://github.com/inventree/InvenTree/pull/4067 + - Add API date filter for stock table on Expiry date v86 -> 2022-12-22 : https://github.com/inventree/InvenTree/pull/4069 - Adds API endpoints for part stocktake diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index 9778ceaebe..78bbf891d6 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -830,7 +830,22 @@ class StockList(APIDownloadMixin, ListCreateDestroyAPIView): queryset = queryset.filter(StockItem.EXPIRED_FILTER) else: queryset = queryset.exclude(StockItem.EXPIRED_FILTER) + # Filter by 'expiry date' + expired_date_lte = params.get('expiry_date_lte', None) + if expired_date_lte is not None: + try: + date_lte = datetime.fromisoformat(expired_date_lte) + queryset = queryset.filter(expiry_date__lte=date_lte) + except (ValueError, TypeError): + pass + expiry_date_gte = params.get('expiry_date_gte', None) + if expiry_date_gte is not None: + try: + date_gte = datetime.fromisoformat(expiry_date_gte) + queryset = queryset.filter(expiry_date__gte=date_gte) + except (ValueError, TypeError): + pass # Filter by 'stale' status stale = params.get('stale', None) diff --git a/InvenTree/templates/js/translated/filters.js b/InvenTree/templates/js/translated/filters.js index d2edcaf5fe..78dd67043d 100644 --- a/InvenTree/templates/js/translated/filters.js +++ b/InvenTree/templates/js/translated/filters.js @@ -182,6 +182,8 @@ function getFilterOptionList(tableKey, filterKey) { value: '{% trans "false" %}', }, }; + } else if (settings.type == 'date') { + return 'date'; } else if ('options' in settings) { return settings.options; } @@ -233,6 +235,8 @@ function generateFilterInput(tableKey, filterKey) { // A 'null' options list means that a simple text-input dialog should be used if (options == null) { html = ``; + } else if (options == 'date') { + html = ``; } else { // Return a 'select' input with the available values html = `