2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 20:16:44 +00:00

Merge pull request #2828 from SchrodingersGat/installed-in

Adds ability to include tests results from "installed items"
This commit is contained in:
Oliver 2022-04-14 13:17:03 +10:00 committed by GitHub
commit d43158ab1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 67 additions and 11 deletions

View File

@ -12,11 +12,14 @@ import common.models
INVENTREE_SW_VERSION = "0.7.0 dev" INVENTREE_SW_VERSION = "0.7.0 dev"
# InvenTree API version # InvenTree API version
INVENTREE_API_VERSION = 37 INVENTREE_API_VERSION = 38
""" """
Increment this API version number whenever there is a significant change to the API that any clients need to know about Increment this API version number whenever there is a significant change to the API that any clients need to know about
v38 -> 2022-04-14 : https://github.com/inventree/InvenTree/pull/2828
- Adds the ability to include stock test results for "installed items"
v37 -> 2022-04-07 : https://github.com/inventree/InvenTree/pull/2806 v37 -> 2022-04-07 : https://github.com/inventree/InvenTree/pull/2806
- Adds extra stock availability information to the BomItem serializer - Adds extra stock availability information to the BomItem serializer

View File

@ -1105,7 +1105,6 @@ class StockItemTestResultList(generics.ListCreateAPIView):
] ]
filter_fields = [ filter_fields = [
'stock_item',
'test', 'test',
'user', 'user',
'result', 'result',
@ -1114,6 +1113,38 @@ class StockItemTestResultList(generics.ListCreateAPIView):
ordering = 'date' ordering = 'date'
def filter_queryset(self, queryset):
params = self.request.query_params
queryset = super().filter_queryset(queryset)
# Filter by stock item
item = params.get('stock_item', None)
if item is not None:
try:
item = StockItem.objects.get(pk=item)
items = [item]
# Do we wish to also include test results for 'installed' items?
include_installed = str2bool(params.get('include_installed', False))
if include_installed:
# Include items which are installed "underneath" this item
# Note that this function is recursive!
installed_items = item.get_installed_items(cascade=True)
items += [it for it in installed_items]
queryset = queryset.filter(stock_item__in=items)
except (ValueError, StockItem.DoesNotExist):
pass
return queryset
def get_serializer(self, *args, **kwargs): def get_serializer(self, *args, **kwargs):
try: try:
kwargs['user_detail'] = str2bool(self.request.query_params.get('user_detail', False)) kwargs['user_detail'] = str2bool(self.request.query_params.get('user_detail', False))

View File

@ -34,8 +34,8 @@
// Should the ID be rendered for this string // Should the ID be rendered for this string
function renderId(title, pk, parameters={}) { function renderId(title, pk, parameters={}) {
// Default = true // Default = do not display
var render = true; var render = false;
if ('render_pk' in parameters) { if ('render_pk' in parameters) {
render = parameters['render_pk']; render = parameters['render_pk'];

View File

@ -1331,14 +1331,27 @@ function loadStockTestResultsTable(table, options) {
}); });
// Once the test template data are loaded, query for test results // Once the test template data are loaded, query for test results
inventreeGet(
'{% url "api-stock-test-result-list" %}', var filters = loadTableFilters(filterKey);
{
var query_params = {
stock_item: options.stock_item, stock_item: options.stock_item,
user_detail: true, user_detail: true,
attachment_detail: true, attachment_detail: true,
ordering: '-date', ordering: '-date',
}, };
if ('result' in filters) {
query_params.result = filters.result;
}
if ('include_installed' in filters) {
query_params.include_installed = filters.include_installed;
}
inventreeGet(
'{% url "api-stock-test-result-list" %}',
query_params,
{ {
success: function(data) { success: function(data) {
// Iterate through the returned test data // Iterate through the returned test data

View File

@ -265,7 +265,16 @@ function getAvailableTableFilters(tableKey) {
// Filters for the 'stock test' table // Filters for the 'stock test' table
if (tableKey == 'stocktests') { if (tableKey == 'stocktests') {
return {}; return {
result: {
type: 'bool',
title: '{% trans "Test Passed" %}',
},
include_installed: {
type: 'bool',
title: '{% trans "Include Installed Items" %}',
}
};
} }
// Filters for the 'part test template' table // Filters for the 'part test template' table