Merge branch 'develop' of github.com:makeplane/plane into dev/migration_priority_drafts_relation_props

This commit is contained in:
NarayanBavisetti 2023-09-13 19:17:38 +05:30
commit b8dd0d8a74
4 changed files with 111 additions and 50 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

@ -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": "",
},
} }

View File

@ -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,
} }

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