Add ability to filter builds by "active" status

This commit is contained in:
Oliver Walters 2020-09-19 20:42:20 +10:00
parent 11a17fb9b1
commit b8509f7533
3 changed files with 19 additions and 7 deletions

View File

@ -12,6 +12,7 @@ from rest_framework import generics, permissions
from django.conf.urls import url, include from django.conf.urls import url, include
from InvenTree.helpers import str2bool from InvenTree.helpers import str2bool
from InvenTree.status_codes import BuildStatus
from .models import Build, BuildItem from .models import Build, BuildItem
from .serializers import BuildSerializer, BuildItemSerializer from .serializers import BuildSerializer, BuildItemSerializer
@ -59,10 +60,18 @@ class BuildList(generics.ListCreateAPIView):
status = self.request.query_params.get('status', None) status = self.request.query_params.get('status', None)
if status is not None: if status is not None:
# Get status codes queryset = queryset.filter(status=status)
codes = status.split('-')
# Filter by codes # Filter by "active" status
queryset = queryset.filter(status__in=codes) 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? # Filter by associated part?
part = self.request.query_params.get('part', None) part = self.request.query_params.get('part', None)

View File

@ -80,8 +80,8 @@ loadSimplePartTable("#bom-invalid-table", "{% url 'api-part-list' %}", {
loadBuildTable("#build-pending-table", { loadBuildTable("#build-pending-table", {
url: "{% url 'api-build-list' %}", url: "{% url 'api-build-list' %}",
params: { params: {
"part_detail": true, part_detail: true,
"status": "10-20", active: true,
} }
}); });

View File

@ -109,7 +109,10 @@ function getAvailableTableFilters(tableKey) {
title: '{% trans "Build status" %}', title: '{% trans "Build status" %}',
options: buildCodes, options: buildCodes,
}, },
pending: {
type: 'bool',
title: '{% trans "Pending" %}',
}
}; };
} }