mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
add stuff to mark starting endpoint
This commit is contained in:
parent
2cf4e20d9a
commit
948270bbcb
@ -255,14 +255,28 @@ class CategoryTree(generics.ListAPIView):
|
||||
cat_id = params.get('id', None)
|
||||
|
||||
if cat_id in (None, '', '#', ):
|
||||
queryset = queryset.filter(parent=None)
|
||||
filter_kwargs = {}
|
||||
# get whole tree
|
||||
if 'ref_type' in self.kwargs and 'ref' in self.kwargs:
|
||||
if 'part' in self.kwargs['ref_type']:
|
||||
filter_kwargs['parts__id'] = self.kwargs['ref']
|
||||
elif 'category' in self.kwargs['ref_type']:
|
||||
filter_kwargs['id'] = self.kwargs['ref']
|
||||
else:
|
||||
filter_kwargs['id'] = None
|
||||
branch = queryset.model.objects.filter(**filter_kwargs).get_ancestors(include_self=True)
|
||||
queryset = queryset.filter(parent=None) | branch
|
||||
self.kwargs['ancestors'] = branch
|
||||
else:
|
||||
queryset = queryset.filter(parent_id=cat_id)
|
||||
|
||||
return queryset
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
return super().get(request, *args, **kwargs)
|
||||
def get_serializer_context(self):
|
||||
context = super().get_serializer_context()
|
||||
if 'ancestors' in self.kwargs:
|
||||
context['ancestors'] = self.kwargs['ancestors']
|
||||
return context
|
||||
|
||||
|
||||
class PartSalePriceList(generics.ListCreateAPIView):
|
||||
@ -1541,6 +1555,7 @@ part_api_urls = [
|
||||
|
||||
# Base URL for PartCategory API endpoints
|
||||
url(r'^category/', include([
|
||||
url(r'^tree/(?P<ref_type>[-\w]+)/(?P<ref>\d+)/', CategoryTree.as_view(), name='api-part-category-root-tree'),
|
||||
url(r'^tree/', CategoryTree.as_view(), name='api-part-category-tree'),
|
||||
url(r'^parameters/', CategoryParameterList.as_view(), name='api-part-category-parameter-list'),
|
||||
|
||||
|
@ -83,6 +83,8 @@ class CategoryTree(InvenTreeModelSerializer):
|
||||
|
||||
a_attr = serializers.SerializerMethodField()
|
||||
|
||||
state = serializers.SerializerMethodField()
|
||||
|
||||
def get_parent(self, obj):
|
||||
return obj.parent.pk if obj.parent else '#'
|
||||
|
||||
@ -92,6 +94,11 @@ class CategoryTree(InvenTreeModelSerializer):
|
||||
def get_a_attr(self, obj):
|
||||
return {'href': obj.get_absolute_url()}
|
||||
|
||||
def get_state(self, obj):
|
||||
if 'ancestors' in self.context:
|
||||
return {'opened': obj in self.context['ancestors'] }
|
||||
return {}
|
||||
|
||||
class Meta:
|
||||
model = PartCategory
|
||||
fields = [
|
||||
@ -100,6 +107,7 @@ class CategoryTree(InvenTreeModelSerializer):
|
||||
'parent',
|
||||
'children',
|
||||
'a_attr',
|
||||
'state',
|
||||
]
|
||||
|
||||
|
||||
|
@ -153,7 +153,13 @@ function enableSidetree(label) {
|
||||
$('#tree').jstree({
|
||||
'core': {
|
||||
'data': {
|
||||
'url': '/api/part/category/tree/',
|
||||
'url': function(node) {
|
||||
if (node.id == '#') {
|
||||
var url_parts = String(window.location).split("/").slice(-3);
|
||||
return `/api/part/category/tree/${url_parts[0]}/${url_parts[1]}/`;
|
||||
}
|
||||
return '/api/part/category/tree/'
|
||||
},
|
||||
'data': function(node) {
|
||||
return {'id': node.id};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user