From 596532f312e1ef2adbf691cafe4023a84c45d6d8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 8 Dec 2021 00:05:34 +0100 Subject: [PATCH] only one api call --- InvenTree/part/api.py | 33 --------------------------- InvenTree/part/serializers.py | 30 ++++++++++++------------ InvenTree/templates/js/dynamic/nav.js | 8 +------ 3 files changed, 17 insertions(+), 54 deletions(-) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 079e0dbe81..3fcd0a3956 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -246,38 +246,6 @@ class CategoryTree(generics.ListAPIView): queryset = PartCategory.objects.all() serializer_class = part_serializers.CategoryTree - def filter_queryset(self, queryset): - """ - """ - queryset = super().filter_queryset(queryset) - - params = self.request.query_params - cat_id = params.get('id', None) - - if cat_id in (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_serializer_context(self): - context = super().get_serializer_context() - if 'ancestors' in self.kwargs: - context['ancestors'] = self.kwargs['ancestors'] - return context - class PartSalePriceList(generics.ListCreateAPIView): """ @@ -1555,7 +1523,6 @@ part_api_urls = [ # Base URL for PartCategory API endpoints url(r'^category/', include([ - url(r'^tree/(?P[-\w]+)/(?P\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'), diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index eb274f70af..6a2e9136de 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -79,25 +79,27 @@ class CategoryTree(InvenTreeModelSerializer): parent = serializers.SerializerMethodField() - children = serializers.SerializerMethodField() - - a_attr = serializers.SerializerMethodField() - - state = serializers.SerializerMethodField() - def get_parent(self, obj): return obj.parent.pk if obj.parent else '#' - def get_children(self, obj): - return True if obj.has_children else False + # children = serializers.SerializerMethodField() + + # def get_children(self, obj): + # return True if obj.has_children else False + + a_attr = serializers.SerializerMethodField() 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 {} + # state = serializers.SerializerMethodField() + + # def get_state(self, obj): + # state = {} + # if 'ancestors' in self.context: + # state['opened'] = obj in self.context['ancestors'] or obj == self.context['root'] + # state['selected'] = obj == self.context['active'] + # return state class Meta: model = PartCategory @@ -105,9 +107,9 @@ class CategoryTree(InvenTreeModelSerializer): 'id', 'text', 'parent', - 'children', + #'children', 'a_attr', - 'state', + #'state', ] diff --git a/InvenTree/templates/js/dynamic/nav.js b/InvenTree/templates/js/dynamic/nav.js index 5577e60d3a..68ea3979d1 100644 --- a/InvenTree/templates/js/dynamic/nav.js +++ b/InvenTree/templates/js/dynamic/nav.js @@ -153,13 +153,7 @@ function enableSidetree(label) { $('#tree').jstree({ 'core': { 'data': { - '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/' - }, + 'url': '/api/part/category/tree/', 'data': function(node) { return {'id': node.id}; }