mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
* add assigned_to filter to Build API * extend API to filter build orders by assigned owner * rename API filter to 'responsible' * add 'Responsible' filter to build oders table * add user/group icon to owners in 'Responsible' column * remove unused python class import * bump API version number * fix handling of invalid IDs * refactor filter options as a callback function * fix JS styling
This commit is contained in:
parent
c46f153449
commit
f523fb44f6
@ -2,11 +2,14 @@
|
||||
|
||||
|
||||
# InvenTree API version
|
||||
INVENTREE_API_VERSION = 97
|
||||
INVENTREE_API_VERSION = 98
|
||||
|
||||
"""
|
||||
Increment this API version number whenever there is a significant change to the API that any clients need to know about
|
||||
|
||||
v98 -> 2023-02-24 : https://github.com/inventree/InvenTree/pull/4408
|
||||
- Adds "responsible" filter to Build API
|
||||
|
||||
v97 -> 2023-02-20 : https://github.com/inventree/InvenTree/pull/4377
|
||||
- Adds "external" attribute to StockLocation model
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
from django.urls import include, re_path
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from rest_framework import filters
|
||||
from rest_framework.exceptions import ValidationError
|
||||
@ -65,6 +66,20 @@ class BuildFilter(rest_filters.FilterSet):
|
||||
|
||||
return queryset
|
||||
|
||||
assigned_to = rest_filters.NumberFilter(label='responsible', method='filter_responsible')
|
||||
|
||||
def filter_responsible(self, queryset, name, value):
|
||||
"""Filter by orders which are assigned to the specified owner."""
|
||||
owners = list(Owner.objects.filter(pk=value))
|
||||
|
||||
# if we query by a user, also find all ownerships through group memberships
|
||||
if len(owners) > 0 and owners[0].label() == 'user':
|
||||
owners = Owner.get_owners_matching_user(User.objects.get(pk=owners[0].owner_id))
|
||||
|
||||
queryset = queryset.filter(responsible__in=owners)
|
||||
|
||||
return queryset
|
||||
|
||||
# Exact match for reference
|
||||
reference = rest_filters.CharFilter(
|
||||
label='Filter by exact reference',
|
||||
|
@ -2695,11 +2695,19 @@ function loadBuildTable(table, options) {
|
||||
title: '{% trans "Responsible" %}',
|
||||
sortable: true,
|
||||
formatter: function(value, row) {
|
||||
if (value) {
|
||||
return row.responsible_detail.name;
|
||||
} else {
|
||||
if (!row.responsible_detail) {
|
||||
return '-';
|
||||
}
|
||||
|
||||
var html = row.responsible_detail.name;
|
||||
|
||||
if (row.responsible_detail.label == 'group') {
|
||||
html += `<span class='float-right fas fa-users'></span>`;
|
||||
} else {
|
||||
html += `<span class='float-right fas fa-user'></span>`;
|
||||
}
|
||||
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -241,6 +241,11 @@ function generateFilterInput(tableKey, filterKey) {
|
||||
// Return a 'select' input with the available values
|
||||
html = `<select class='form-control filter-input' id='${id}' name='value'>`;
|
||||
|
||||
// options can be an object or a function, in which case we need to run
|
||||
// this callback first
|
||||
if (options instanceof Function) {
|
||||
options = options();
|
||||
}
|
||||
for (var key in options) {
|
||||
var option = options[key];
|
||||
html += `<option value='${key}'>${option.value}</option>`;
|
||||
|
@ -359,6 +359,25 @@ function getAvailableTableFilters(tableKey) {
|
||||
type: 'bool',
|
||||
title: '{% trans "Assigned to me" %}',
|
||||
},
|
||||
assigned_to: {
|
||||
title: '{% trans "Responsible" %}',
|
||||
options: function() {
|
||||
var ownersList = {};
|
||||
inventreeGet(`/api/user/owner/`, {}, {
|
||||
async: false,
|
||||
success: function(response) {
|
||||
for (key in response) {
|
||||
var owner = response[key];
|
||||
ownersList[owner.pk] = {
|
||||
key: owner.pk,
|
||||
value: `${owner.name} (${owner.label})`,
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
return ownersList;
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user