Skip to content

Commit

Permalink
perf: specify reference doctype in filters (#17703)
Browse files Browse the repository at this point in the history
(cherry picked from commit 183f602)

Co-authored-by: Sagar Vora <sagar@resilient.tech>
  • Loading branch information
mergify[bot] and sagarvora committed Aug 2, 2022
1 parent b4ff5b2 commit 88a59d8
Showing 1 changed file with 23 additions and 15 deletions.
38 changes: 23 additions & 15 deletions frappe/desk/form/document_follow.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,14 @@ def send_document_follow_mails(frequency):

def get_version(doctype, doc_name, frequency, user):
timeline = []
filters = get_filters("docname", doc_name, frequency, user)
version = frappe.get_all(
"Version", filters=filters, fields=["ref_doctype", "data", "modified", "modified_by"]
"Version",
filters=[
["ref_doctype", "=", doctype],
["docname", "=", doc_name],
*_get_filters(frequency, user),
],
fields=["data", "modified", "modified_by"],
)
if version:
for v in version:
Expand All @@ -162,9 +167,14 @@ def get_comments(doctype, doc_name, frequency, user):
from html2text import html2text

timeline = []
filters = get_filters("reference_name", doc_name, frequency, user)
comments = frappe.get_all(
"Comment", filters=filters, fields=["content", "modified", "modified_by", "comment_type"]
"Comment",
filters=[
["reference_doctype", "=", doctype],
["reference_name", "=", doc_name],
*_get_filters(frequency, user),
],
fields=["content", "modified", "modified_by", "comment_type"],
)
for comment in comments:
if comment.comment_type == "Like":
Expand Down Expand Up @@ -282,29 +292,27 @@ def send_weekly_updates():
send_document_follow_mails("Weekly")


def get_filters(search_by, name, frequency, user):
filters = []
def _get_filters(frequency, user):
filters = [
["modified_by", "!=", user],
]

if frequency == "Weekly":
filters = [
[search_by, "=", name],
filters += [
["modified", ">", frappe.utils.add_days(frappe.utils.nowdate(), -7)],
["modified", "<", frappe.utils.nowdate()],
["modified_by", "!=", user],
]

elif frequency == "Daily":
filters = [
[search_by, "=", name],
filters += [
["modified", ">", frappe.utils.add_days(frappe.utils.nowdate(), -1)],
["modified", "<", frappe.utils.nowdate()],
["modified_by", "!=", user],
]

elif frequency == "Hourly":
filters = [
[search_by, "=", name],
filters += [
["modified", ">", frappe.utils.add_to_date(frappe.utils.now_datetime(), hours=-1)],
["modified", "<", frappe.utils.now_datetime()],
["modified_by", "!=", user],
]

return filters

0 comments on commit 88a59d8

Please sign in to comment.