From 92d57499971a2776382b95c27662fabe3ff929ce Mon Sep 17 00:00:00 2001 From: pablohashescobar <118773738+pablohashescobar@users.noreply.github.com> Date: Tue, 14 Feb 2023 01:16:35 +0530 Subject: [PATCH] feat: state grouping and ordering list (#253) * feat: state grouping and ordering list * fix: state grouping in state list endpoint --- apiserver/plane/api/views/state.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/apiserver/plane/api/views/state.py b/apiserver/plane/api/views/state.py index 21ca6c714..4616fcee7 100644 --- a/apiserver/plane/api/views/state.py +++ b/apiserver/plane/api/views/state.py @@ -1,6 +1,11 @@ +# Python imports +from itertools import groupby + # Third party imports -from rest_framework import status from rest_framework.response import Response +from rest_framework import status +from sentry_sdk import capture_exception + # Module imports from . import BaseViewSet @@ -31,6 +36,25 @@ class StateViewSet(BaseViewSet): .distinct() ) + def list(self, request, slug, project_id): + try: + state_dict = dict() + states = StateSerializer(self.get_queryset(), many=True).data + + for key, value in groupby( + sorted(states, key=lambda state: state["group"]), + lambda state: state.get("group"), + ): + state_dict[str(key)] = list(value) + + return Response(state_dict, status=status.HTTP_200_OK) + except Exception as e: + capture_exception(e) + return Response( + {"error": "Something went wrong please try again later"}, + status=status.HTTP_400_BAD_REQUEST, + ) + def destroy(self, request, slug, project_id, pk): try: state = State.objects.get(