feat: changed payload for swimlanes (#2173)

This commit is contained in:
Bavisetti Narayan 2023-09-13 18:25:57 +05:30 committed by GitHub
parent 61672f47ac
commit 42d38f7531
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 31 deletions

View File

@ -269,9 +269,16 @@ class IssueViewSet(BaseViewSet):
## Grouping the results ## Grouping the results
group_by = request.GET.get("group_by", False) group_by = request.GET.get("group_by", False)
sub_group_by = request.GET.get("sub_group_by", False)
if sub_group_by and sub_group_by == group_by:
return Response(
{"error": "Group by and sub group by cannot be same"},
status=status.HTTP_400_BAD_REQUEST,
)
if group_by: if group_by:
return Response( return Response(
group_results(issues, group_by), status=status.HTTP_200_OK group_results(issues, group_by, sub_group_by), status=status.HTTP_200_OK
) )
return Response(issues, status=status.HTTP_200_OK) return Response(issues, status=status.HTTP_200_OK)

View File

@ -15,7 +15,7 @@ def resolve_keys(group_keys, value):
return value return value
def group_results(results_data, group_by): def group_results(results_data, group_by, sub_group_by=False):
"""group results data into certain group_by """group results data into certain group_by
Args: Args:
@ -25,38 +25,64 @@ def group_results(results_data, group_by):
Returns: Returns:
obj: grouped results obj: grouped results
""" """
response_dict = dict() if sub_group_by:
main_responsive_dict = dict()
if group_by == "priority": if sub_group_by == "priority":
response_dict = { main_responsive_dict = {
"urgent": [], "urgent": {},
"high": [], "high": {},
"medium": [], "medium": {},
"low": [], "low": {},
"None": [], "none": {},
} }
for value in results_data: for value in results_data:
group_attribute = resolve_keys(group_by, value) main_group_attribute = resolve_keys(sub_group_by, value)
if isinstance(group_attribute, list): if str(main_group_attribute) not in main_responsive_dict:
if len(group_attribute): main_responsive_dict[str(main_group_attribute)] = {}
for attrib in group_attribute: group_attribute = resolve_keys(group_by, value)
if str(attrib) in response_dict: if str(group_attribute) in main_responsive_dict:
response_dict[str(attrib)].append(value) main_responsive_dict[str(main_group_attribute)][str(group_attribute)].append(value)
else:
response_dict[str(attrib)] = []
response_dict[str(attrib)].append(value)
else: else:
if str(None) in response_dict: main_responsive_dict[str(main_group_attribute)][str(group_attribute)] = []
response_dict[str(None)].append(value) main_responsive_dict[str(main_group_attribute)][str(group_attribute)].append(value)
return main_responsive_dict
else:
response_dict = dict()
if group_by == "priority":
response_dict = {
"urgent": [],
"high": [],
"medium": [],
"low": [],
"none": [],
}
for value in results_data:
group_attribute = resolve_keys(group_by, value)
if isinstance(group_attribute, list):
if len(group_attribute):
for attrib in group_attribute:
if str(attrib) in response_dict:
response_dict[str(attrib)].append(value)
else:
response_dict[str(attrib)] = []
response_dict[str(attrib)].append(value)
else: else:
response_dict[str(None)] = [] if str(None) in response_dict:
response_dict[str(None)].append(value) response_dict[str(None)].append(value)
else: else:
if str(group_attribute) in response_dict: response_dict[str(None)] = []
response_dict[str(group_attribute)].append(value) response_dict[str(None)].append(value)
else: else:
response_dict[str(group_attribute)] = [] if str(group_attribute) in response_dict:
response_dict[str(group_attribute)].append(value) response_dict[str(group_attribute)].append(value)
else:
response_dict[str(group_attribute)] = []
response_dict[str(group_attribute)].append(value)
return response_dict return response_dict