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

Merge remote-tracking branch 'inventree/master'

This commit is contained in:
Oliver Walters 2020-07-18 13:31:07 +10:00
commit 6994af411d
4 changed files with 49 additions and 6 deletions

View File

@ -9,6 +9,12 @@
<h4>{% trans "Assigned Stock" %}</h4> <h4>{% trans "Assigned Stock" %}</h4>
<hr> <hr>
<div id='button-toolbar'>
<div class='filter-list' id='filter-list-stock'>
<!-- An empty div in which the filter list will be constructed -->
</div>
</div>
<table class='table table-striped table-condensed' id='stock-table'></table> <table class='table table-striped table-condensed' id='stock-table'></table>
{% endblock %} {% endblock %}
@ -18,12 +24,12 @@
loadStockTable($("#stock-table"), { loadStockTable($("#stock-table"), {
params: { params: {
test: 7,
customer: {{ company.id }}, customer: {{ company.id }},
part_detail: true, part_detail: true,
location_detail: true, location_detail: true,
}, },
url: "{% url 'api-stock-list' %}", url: "{% url 'api-stock-list' %}",
filterKey: "customerstock",
}); });
{% endblock %} {% endblock %}

View File

@ -190,7 +190,7 @@ class PartThumbs(generics.ListAPIView):
return Response(data) return Response(data)
class PartDetail(generics.RetrieveUpdateAPIView): class PartDetail(generics.RetrieveUpdateDestroyAPIView):
""" API endpoint for detail view of a single Part object """ """ API endpoint for detail view of a single Part object """
queryset = Part.objects.all() queryset = Part.objects.all()
@ -229,6 +229,18 @@ class PartDetail(generics.RetrieveUpdateAPIView):
return self.serializer_class(*args, **kwargs) return self.serializer_class(*args, **kwargs)
def destroy(self, request, *args, **kwargs):
# Retrieve part
part = Part.objects.get(pk=int(kwargs['pk']))
# Check if inactive
if not part.active:
# Delete
return super(PartDetail, self).destroy(request, *args, **kwargs)
else:
# Return 405 error
message = f'Part \'{part.name}\' (pk = {part.pk}) is active: cannot delete'
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED, data=message)
class PartList(generics.ListCreateAPIView): class PartList(generics.ListCreateAPIView):
""" API endpoint for accessing a list of Part objects """ API endpoint for accessing a list of Part objects
@ -363,9 +375,10 @@ class PartList(generics.ListCreateAPIView):
queryset = super().filter_queryset(queryset) queryset = super().filter_queryset(queryset)
# Filter by 'starred' parts? # Filter by 'starred' parts?
starred = str2bool(self.request.query_params.get('starred', None)) starred = self.request.query_params.get('starred', None)
if starred is not None: if starred is not None:
starred = str2bool(starred)
starred_parts = [star.part.pk for star in self.request.user.starred_parts.all()] starred_parts = [star.part.pk for star in self.request.user.starred_parts.all()]
if starred: if starred:

View File

@ -235,8 +235,10 @@ function loadStockTable(table, options) {
var filters = {}; var filters = {};
var filterKey = options.filterKey || "stock";
if (!options.disableFilters) { if (!options.disableFilters) {
filters = loadTableFilters("stock"); filters = loadTableFilters(filterKey);
} }
var original = {}; var original = {};
@ -245,7 +247,7 @@ function loadStockTable(table, options) {
original[key] = params[key]; original[key] = params[key];
} }
setupFilterList("stock", table, filterListElement); setupFilterList(filterKey, table, filterListElement);
// Override the default values, or add new ones // Override the default values, or add new ones
for (var key in params) { for (var key in params) {

View File

@ -11,6 +11,24 @@ function getAvailableTableFilters(tableKey) {
tableKey = tableKey.toLowerCase(); tableKey = tableKey.toLowerCase();
// Filters for the "customer stock" table (really a subset of "stock")
if (tableKey == "customerstock") {
return {
serialized: {
type: 'bool',
title: '{% trans "Is Serialized" %}',
},
serial_gte: {
title: "{% trans "Serial number GTE" %}",
description: "{% trans "Serial number greater than or equal to" %}"
},
serial_lte: {
title: "{% trans "Serial number LTE" %}",
description: "{% trans "Serial number less than or equal to" %}",
},
};
}
// Filters for the "Stock" table // Filters for the "Stock" table
if (tableKey == 'stock') { if (tableKey == 'stock') {
return { return {
@ -39,6 +57,10 @@ function getAvailableTableFilters(tableKey) {
title: '{% trans "Is allocated" %}', title: '{% trans "Is allocated" %}',
description: '{% trans "Item has been alloacted" %}', description: '{% trans "Item has been alloacted" %}',
}, },
serialized: {
type: 'bool',
title: '{% trans "Is Serialized" %}',
},
serial_gte: { serial_gte: {
title: "{% trans "Serial number GTE" %}", title: "{% trans "Serial number GTE" %}",
description: "{% trans "Serial number greater than or equal to" %}" description: "{% trans "Serial number greater than or equal to" %}"