From 1cbbe9e7c66ea32016023aedddece8c9ae360bbd Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Mon, 17 Jun 2019 23:39:43 +1000 Subject: [PATCH] Split tree generation off into a separate function --- InvenTree/InvenTree/views.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index 15f93c9133..3df50ac0f8 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -59,19 +59,20 @@ class TreeSerializer(views.APIView): return data - def get(self, request, *args, **kwargs): - - top_items = self.model.objects.filter(parent=None).order_by('name') + def generate_tree(self, items): nodes = [] top_count = 0 + # Construct the top-level items + top_items = [i for i in items if i.parent is None] + for item in top_items: nodes.append(self.itemToJson(item)) top_count += item.item_count - top = { + self.tree = { 'pk': None, 'text': self.title, 'href': self.root_url, @@ -79,8 +80,15 @@ class TreeSerializer(views.APIView): 'tags': [top_count], } + def get(self, request, *args, **kwargs): + """ Respond to a GET request for the Tree """ + + items = self.model.objects.all() + + self.generate_tree(items) + response = { - 'tree': [top] + 'tree': [self.tree] } return JsonResponse(response, safe=False)