mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
Merge branch 'develop' of github.com:makeplane/plane into dev/migration_priority_drafts_relation_props
This commit is contained in:
commit
b8dd0d8a74
@ -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)
|
||||||
|
@ -25,13 +25,26 @@ ROLE_CHOICES = (
|
|||||||
|
|
||||||
def get_default_props():
|
def get_default_props():
|
||||||
return {
|
return {
|
||||||
"filters": {"type": None},
|
"filters": {
|
||||||
"orderBy": "-created_at",
|
"priority": None,
|
||||||
"collapsed": True,
|
"state": None,
|
||||||
"issueView": "list",
|
"state_group": None,
|
||||||
"filterIssue": None,
|
"assignees": None,
|
||||||
"groupByProperty": None,
|
"created_by": None,
|
||||||
"showEmptyGroups": True,
|
"labels": None,
|
||||||
|
"start_date": None,
|
||||||
|
"target_date": None,
|
||||||
|
"subscriber": None,
|
||||||
|
},
|
||||||
|
"display_filters": {
|
||||||
|
"group_by": None,
|
||||||
|
"order_by": '-created_at',
|
||||||
|
"type": None,
|
||||||
|
"sub_issue": True,
|
||||||
|
"show_empty_groups": True,
|
||||||
|
"layout": "list",
|
||||||
|
"calendar_date_range": "",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,26 +16,41 @@ ROLE_CHOICES = (
|
|||||||
|
|
||||||
def get_default_props():
|
def get_default_props():
|
||||||
return {
|
return {
|
||||||
"filters": {"type": None},
|
"filters": {
|
||||||
"groupByProperty": None,
|
"priority": None,
|
||||||
"issueView": "list",
|
"state": None,
|
||||||
"orderBy": "-created_at",
|
"state_group": None,
|
||||||
"properties": {
|
"assignees": None,
|
||||||
|
"created_by": None,
|
||||||
|
"labels": None,
|
||||||
|
"start_date": None,
|
||||||
|
"target_date": None,
|
||||||
|
"subscriber": None,
|
||||||
|
},
|
||||||
|
"display_filters": {
|
||||||
|
"group_by": None,
|
||||||
|
"order_by": '-created_at',
|
||||||
|
"type": None,
|
||||||
|
"sub_issue": True,
|
||||||
|
"show_empty_groups": True,
|
||||||
|
"layout": "list",
|
||||||
|
"calendar_date_range": "",
|
||||||
|
},
|
||||||
|
"display_properties": {
|
||||||
"assignee": True,
|
"assignee": True,
|
||||||
|
"attachment_count": True,
|
||||||
|
"created_on": True,
|
||||||
"due_date": True,
|
"due_date": True,
|
||||||
|
"estimate": True,
|
||||||
"key": True,
|
"key": True,
|
||||||
"labels": True,
|
"labels": True,
|
||||||
|
"link": True,
|
||||||
"priority": True,
|
"priority": True,
|
||||||
|
"start_date": True,
|
||||||
"state": True,
|
"state": True,
|
||||||
"sub_issue_count": True,
|
"sub_issue_count": True,
|
||||||
"attachment_count": True,
|
|
||||||
"link": True,
|
|
||||||
"estimate": True,
|
|
||||||
"created_on": True,
|
|
||||||
"updated_on": True,
|
"updated_on": True,
|
||||||
"start_date": True,
|
}
|
||||||
},
|
|
||||||
"showEmptyGroups": True,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user