Merge pull request #42428 from cogk/fix-sort-before-groupby

fix: Sort lists before calling itertools.groupby
This commit is contained in:
ruthra kumar
2024-08-09 11:52:42 +05:30
committed by GitHub
4 changed files with 9 additions and 4 deletions

View File

@@ -108,7 +108,9 @@ class OpportunitySummaryBySalesStage:
self.grouped_data = []
grouping_key = lambda o: (o["sales_stage"], o[based_on]) # noqa
for (sales_stage, _based_on), rows in groupby(self.query_result, grouping_key):
for (sales_stage, _based_on), rows in groupby(
sorted(self.query_result, key=grouping_key), key=grouping_key
):
self.grouped_data.append(
{
"sales_stage": sales_stage,

View File

@@ -122,7 +122,9 @@ class SalesPipelineAnalytics:
self.grouped_data = []
grouping_key = lambda o: (o.get(self.pipeline_by) or "Not Assigned", o[self.period_by]) # noqa
for (pipeline_by, period_by), rows in groupby(self.query_result, grouping_key):
for (pipeline_by, period_by), rows in groupby(
sorted(self.query_result, key=grouping_key), grouping_key
):
self.grouped_data.append(
{
self.pipeline_by: pipeline_by,

View File

@@ -93,7 +93,7 @@ def get_opp_by_lead_source(from_date, to_date, company):
summary = {}
sales_stages = set()
group_key = lambda o: (o["source"], o["sales_stage"]) # noqa
for (source, sales_stage), rows in groupby(cp_opportunities, group_key):
for (source, sales_stage), rows in groupby(sorted(cp_opportunities, key=group_key), group_key):
summary.setdefault(source, {})[sales_stage] = sum(r["compound_amount"] for r in rows)
sales_stages.add(sales_stage)

View File

@@ -1097,7 +1097,8 @@ def create_delivery_note(source_name, target_doc=None):
)
)
for customer, rows in groupby(sales_orders, key=lambda so: so["customer"]):
group_key = lambda so: so["customer"] # noqa
for customer, rows in groupby(sorted(sales_orders, key=group_key), key=group_key):
sales_dict[customer] = {row.sales_order for row in rows}
if sales_dict: