From b519a1981d9c5cb56769daf0bb1f4df11268256c 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 | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index 15f93c9133..de9d64be1d 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -59,19 +59,24 @@ class TreeSerializer(views.APIView): return data - def get(self, request, *args, **kwargs): + def get_items(self): - top_items = self.model.objects.filter(parent=None).order_by('name') + return self.model.objects.all() + + def generate_tree(self, items): nodes = [] + # Construct the top-level items + top_items = [i for i in items if i.parent is None] + top_count = 0 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 +84,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)