old_contents: # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors
  # License: MIT. See LICENSE
  from typing import Dict, List
  
  import frappe
  from frappe.query_builder.functions import Count
  from frappe.query_builder.terms import subqry
  from frappe.query_builder.utils import DocType
  
  
  @frappe.whitelist()
  def get_list_settings(doctype):
  	try:
  		return frappe.get_cached_doc("List View Settings", doctype)
  	except frappe.DoesNotExistError:
  		frappe.clear_messages()
  
  
  @frappe.whitelist()
  def set_list_settings(doctype, values):
  	try:
  		doc = frappe.get_doc("List View Settings", doctype)
  	except frappe.DoesNotExistError:
  		doc = frappe.new_doc("List View Settings")
  		doc.name = doctype
  		frappe.clear_messages()
  	doc.update(frappe.parse_json(values))
  	doc.save()
  
  
  @frappe.whitelist()
  def get_group_by_count(doctype: str, current_filters: str, field: str) -> List[Dict]:
  	current_filters = frappe.parse_json(current_filters)
  
  	if field == "assigned_to":
  		ToDo = DocType("ToDo")
  		User = DocType("User")
  		count = Count("*").as_("count")
  		filtered_records = frappe.db.query.build_conditions(doctype, current_filters).select("name")
  
  		return (
  			frappe.qb.from_(ToDo)
  			.from_(User)
  			.select(ToDo.allocated_to.as_("name"), count)
  			.where(
  				(ToDo.status != "Cancelled")
  				& (ToDo.allocated_to == User.name)
  				& (User.user_type == "System User")
  				& (ToDo.reference_name.isin(subqry(filtered_records)))
  			)
  			.groupby(ToDo.allocated_to)
  			.orderby(count)
  			.limit(50)
  			.run(as_dict=True)
  		)
  
  	return frappe.get_list(
  		doctype,
  		filters=current_filters,
  		group_by=f"`tab{doctype}`.{field}",
  		fields=["count(*) as count", f"`{field}` as name"],
  		order_by="count desc",
  		limit=50,
  	)
  
new_contents: # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors
  # License: MIT. See LICENSE
  from typing import Dict, List
  
  import frappe
  from frappe.query_builder.functions import Count
  from frappe.query_builder.terms import SubQuery
  from frappe.query_builder.utils import DocType
  
  
  @frappe.whitelist()
  def get_list_settings(doctype):
  	try:
  		return frappe.get_cached_doc("List View Settings", doctype)
  	except frappe.DoesNotExistError:
  		frappe.clear_messages()
  
  
  @frappe.whitelist()
  def set_list_settings(doctype, values):
  	try:
  		doc = frappe.get_doc("List View Settings", doctype)
  	except frappe.DoesNotExistError:
  		doc = frappe.new_doc("List View Settings")
  		doc.name = doctype
  		frappe.clear_messages()
  	doc.update(frappe.parse_json(values))
  	doc.save()
  
  
  @frappe.whitelist()
  def get_group_by_count(doctype: str, current_filters: str, field: str) -> List[Dict]:
  	current_filters = frappe.parse_json(current_filters)
  
  	if field == "assigned_to":
  		ToDo = DocType("ToDo")
  		User = DocType("User")
  		count = Count("*").as_("count")
  		filtered_records = frappe.db.query.build_conditions(doctype, current_filters).select("name")
  
  		return (
  			frappe.qb.from_(ToDo)
  			.from_(User)
  			.select(ToDo.allocated_to.as_("name"), count)
  			.where(
  				(ToDo.status != "Cancelled")
  				& (ToDo.allocated_to == User.name)
  				& (User.user_type == "System User")
  				& (ToDo.reference_name.isin(SubQuery(filtered_records)))
  			)
  			.groupby(ToDo.allocated_to)
  			.orderby(count)
  			.limit(50)
  			.run(as_dict=True)
  		)
  
  	return frappe.get_list(
  		doctype,
  		filters=current_filters,
  		group_by=f"`tab{doctype}`.{field}",
  		fields=["count(*) as count", f"`{field}` as name"],
  		order_by="count desc",
  		limit=50,
  	)
  
subject: Use SubQuery term instead of subqry