perf: Use lazy doc in a lot more places
This commit is contained in:
parent
beefdb9a1f
commit
49f582ae57
17 changed files with 32 additions and 32 deletions
|
|
@ -312,7 +312,7 @@ def get_doc_permissions(doctype: str, docname: str):
|
|||
:param doctype: DocType of the document to be evaluated
|
||||
:param docname: `name` of the document to be evaluated
|
||||
"""
|
||||
doc = frappe.get_doc(doctype, docname)
|
||||
doc = frappe.get_lazy_doc(doctype, docname)
|
||||
return {"permissions": frappe.permissions.get_doc_permissions(doc)}
|
||||
|
||||
|
||||
|
|
@ -325,7 +325,7 @@ def get_password(doctype: str, name: str, fieldname: str):
|
|||
:param fieldname: `fieldname` of the password property
|
||||
"""
|
||||
frappe.only_for("System Manager")
|
||||
return frappe.get_doc(doctype, name).get_password(fieldname)
|
||||
return frappe.get_lazy_doc(doctype, name).get_password(fieldname)
|
||||
|
||||
|
||||
from frappe.deprecation_dumpster import get_js as _get_js
|
||||
|
|
@ -361,7 +361,7 @@ def attach_file(
|
|||
:param is_private: Attach file as private file (1 or 0)
|
||||
:param docfield: file to attach to (optional)"""
|
||||
|
||||
doc = frappe.get_doc(doctype, docname)
|
||||
doc = frappe.get_lazy_doc(doctype, docname)
|
||||
doc.check_permission()
|
||||
|
||||
file = frappe.get_doc(
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class DocShare(Document):
|
|||
|
||||
def get_doc(self):
|
||||
if not getattr(self, "_doc", None):
|
||||
self._doc = frappe.get_doc(self.share_doctype, self.share_name)
|
||||
self._doc = frappe.get_lazy_doc(self.share_doctype, self.share_name)
|
||||
return self._doc
|
||||
|
||||
def validate_user(self):
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ def get_desktop_icons(user=None):
|
|||
|
||||
user_icons.append(standard_icon)
|
||||
|
||||
user_blocked_modules = frappe.get_doc("User", user).get_blocked_modules()
|
||||
user_blocked_modules = frappe.get_lazy_doc("User", user).get_blocked_modules()
|
||||
for icon in user_icons:
|
||||
if icon.module_name in user_blocked_modules:
|
||||
icon.hidden = 1
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ class DocTags:
|
|||
frappe.db.sql(
|
||||
"update `tab{}` set _user_tags={} where name={}".format(self.dt, "%s", "%s"), (tags, dn)
|
||||
)
|
||||
doc = frappe.get_doc(self.dt, dn)
|
||||
doc = frappe.get_lazy_doc(self.dt, dn)
|
||||
update_tags(doc, tags)
|
||||
except Exception as e:
|
||||
if frappe.db.is_missing_column(e):
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ def get_docinfo(doc=None, doctype=None, name=None):
|
|||
from frappe.share import _get_users as get_docshares
|
||||
|
||||
if not doc:
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
doc = frappe.get_lazy_doc(doctype, name)
|
||||
doc.check_permission("read")
|
||||
|
||||
all_communications = _get_communications(doc.doctype, doc.name, limit=21)
|
||||
|
|
@ -205,7 +205,7 @@ def get_versions(doc: "Document") -> list[dict]:
|
|||
def get_communications(doctype, name, start=0, limit=20):
|
||||
from frappe.utils import cint
|
||||
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
doc = frappe.get_lazy_doc(doctype, name)
|
||||
doc.check_permission("read")
|
||||
|
||||
return _get_communications(doctype, name, cint(start), cint(limit))
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ def add_comment(
|
|||
reference_doctype: str, reference_name: str, content: str, comment_email: str, comment_by: str
|
||||
) -> "Comment":
|
||||
"""Allow logged user with permission to read document to add a comment"""
|
||||
reference_doc = frappe.get_doc(reference_doctype, reference_name)
|
||||
reference_doc = frappe.get_lazy_doc(reference_doctype, reference_name)
|
||||
reference_doc.check_permission()
|
||||
|
||||
comment = frappe.new_doc("Comment")
|
||||
|
|
@ -58,7 +58,7 @@ def update_comment(name, content):
|
|||
frappe.throw(_("Comment can only be edited by the owner"), frappe.PermissionError)
|
||||
|
||||
if doc.reference_doctype and doc.reference_name:
|
||||
reference_doc = frappe.get_doc(doc.reference_doctype, doc.reference_name)
|
||||
reference_doc = frappe.get_lazy_doc(doc.reference_doctype, doc.reference_name)
|
||||
reference_doc.check_permission()
|
||||
|
||||
doc.content = extract_images_from_html(reference_doc, content, is_private=True)
|
||||
|
|
|
|||
|
|
@ -88,5 +88,5 @@ def remove_like(doctype, name):
|
|||
|
||||
|
||||
def add_comment(doctype, name):
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
doc = frappe.get_lazy_doc(doctype, name)
|
||||
doc.add_comment("Like", _("Liked"))
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@ def get_open_count(doctype: str, name: str, items=None):
|
|||
if frappe.flags.in_migrate or frappe.flags.in_install:
|
||||
return {"count": []}
|
||||
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
doc = frappe.get_lazy_doc(doctype, name)
|
||||
doc.check_permission()
|
||||
meta = doc.meta
|
||||
links = meta.get_dashboard_data()
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ def get_context(context):
|
|||
)
|
||||
|
||||
for d in doc_list:
|
||||
doc = frappe.get_doc(self.document_type, d.name)
|
||||
doc = frappe.get_lazy_doc(self.document_type, d.name)
|
||||
|
||||
if self.condition and not frappe.safe_eval(self.condition, None, get_context(doc)):
|
||||
continue
|
||||
|
|
@ -282,7 +282,7 @@ def get_context(context):
|
|||
self.db_set("datetime_last_run", now) # set reference now for next run
|
||||
|
||||
for d in doc_list:
|
||||
doc = frappe.get_doc(self.document_type, d.name)
|
||||
doc = frappe.get_lazy_doc(self.document_type, d.name)
|
||||
|
||||
if self.condition and not frappe.safe_eval(self.condition, None, get_context(doc)):
|
||||
continue
|
||||
|
|
@ -443,7 +443,7 @@ def get_context(context):
|
|||
communication_type="Automated Message",
|
||||
).get("name")
|
||||
# set the outgoing email account because we did in fact send it via sendmail above
|
||||
comm = frappe.get_doc("Communication", communication)
|
||||
comm = frappe.get_lazy_doc("Communication", communication)
|
||||
comm.get_outgoing_email_account()
|
||||
|
||||
frappe.sendmail(
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ def create_email_flag_queue(names, action):
|
|||
"""create email flag queue to mark email either as read or unread"""
|
||||
|
||||
def mark_as_seen_unseen(name, action):
|
||||
doc = frappe.get_doc("Communication", name)
|
||||
doc = frappe.get_lazy_doc("Communication", name)
|
||||
if action == "Read":
|
||||
doc.add_seen()
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ def upload_file():
|
|||
else:
|
||||
raise frappe.PermissionError
|
||||
else:
|
||||
user: User = frappe.get_doc("User", frappe.session.user)
|
||||
user: User = frappe.get_lazy_doc("User", frappe.session.user)
|
||||
ignore_permissions = False
|
||||
|
||||
files = frappe.request.files
|
||||
|
|
@ -210,7 +210,7 @@ def check_write_permission(doctype: str | None = None, name: str | None = None):
|
|||
return
|
||||
|
||||
try:
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
doc = frappe.get_lazy_doc(doctype, name)
|
||||
except frappe.DoesNotExistError:
|
||||
# doc has not been inserted yet, name is set to "new-some-doctype"
|
||||
# If doc inserts fine then only this attachment will be linked see file/utils.py:relink_mismatched_files
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ def get_doc_from_dict(data: dict[str, Any], **kwargs) -> "Document":
|
|||
raise ImportError(data["doctype"])
|
||||
|
||||
|
||||
def get_lazy_doc(doctype: str, name: str):
|
||||
def get_lazy_doc(doctype: str, name: str) -> "Document":
|
||||
assert doctype != "DocType", "DocType can not be lazy loaded"
|
||||
|
||||
controller = get_lazy_controller(doctype)
|
||||
|
|
@ -1944,7 +1944,7 @@ def _document_values_generator(
|
|||
|
||||
@frappe.whitelist()
|
||||
def unlock_document(doctype: str, name: str):
|
||||
frappe.get_doc(doctype, name).unlock()
|
||||
frappe.get_lazy_doc(doctype, name).unlock()
|
||||
frappe.msgprint(frappe._("Document Unlocked"), alert=True)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ class Session:
|
|||
self.insert_session_record()
|
||||
|
||||
# update user
|
||||
user = frappe.get_doc("User", self.data["user"])
|
||||
user = frappe.get_lazy_doc("User", self.data["user"])
|
||||
user_doctype = frappe.qb.DocType("User")
|
||||
(
|
||||
frappe.qb.update(user_doctype)
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ def set_docshare_permission(doctype, name, user, permission_to, value=1, everyon
|
|||
@frappe.whitelist()
|
||||
def get_users(doctype: str, name: str) -> list:
|
||||
"""Get list of users with which this document is shared"""
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
doc = frappe.get_lazy_doc(doctype, name)
|
||||
return _get_users(doc)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -483,7 +483,7 @@ def get_context(context):
|
|||
return False
|
||||
|
||||
if self.apply_document_permissions:
|
||||
return frappe.get_doc(doctype, name).has_permission(permtype=ptype)
|
||||
return frappe.get_last_doc(doctype, name).has_permission(permtype=ptype)
|
||||
|
||||
# owner matches
|
||||
elif frappe.db.get_value(doctype, name, "owner") == frappe.session.user:
|
||||
|
|
@ -558,7 +558,7 @@ def accept(web_form, data):
|
|||
files = []
|
||||
files_to_delete = []
|
||||
|
||||
web_form = frappe.get_doc("Web Form", web_form)
|
||||
web_form = frappe.get_lazy_doc("Web Form", web_form)
|
||||
doctype = web_form.doc_type
|
||||
user = frappe.session.user
|
||||
|
||||
|
|
@ -654,7 +654,7 @@ def accept(web_form, data):
|
|||
|
||||
@frappe.whitelist()
|
||||
def delete(web_form_name: str, docname: str | int):
|
||||
web_form = frappe.get_doc("Web Form", web_form_name)
|
||||
web_form = frappe.get_lazy_doc("Web Form", web_form_name)
|
||||
|
||||
owner = frappe.db.get_value(web_form.doc_type, docname, "owner")
|
||||
if frappe.session.user == owner and web_form.allow_delete:
|
||||
|
|
@ -665,7 +665,7 @@ def delete(web_form_name: str, docname: str | int):
|
|||
|
||||
@frappe.whitelist()
|
||||
def delete_multiple(web_form_name: str, docnames):
|
||||
web_form = frappe.get_doc("Web Form", web_form_name)
|
||||
web_form = frappe.get_lazy_doc("Web Form", web_form_name)
|
||||
|
||||
docnames = json.loads(docnames)
|
||||
|
||||
|
|
@ -691,7 +691,7 @@ def delete_multiple(web_form_name: str, docnames):
|
|||
|
||||
|
||||
def check_webform_perm(doctype, name):
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
doc = frappe.get_lazy_doc(doctype, name)
|
||||
if hasattr(doc, "has_webform_permission"):
|
||||
if doc.has_webform_permission():
|
||||
return True
|
||||
|
|
@ -762,7 +762,7 @@ def get_in_list_view_fields(doctype):
|
|||
|
||||
|
||||
def get_link_options(web_form_name, doctype, allow_read_on_all_link_options=False):
|
||||
web_form: WebForm = frappe.get_doc("Web Form", web_form_name)
|
||||
web_form: WebForm = frappe.get_lazy_doc("Web Form", web_form_name)
|
||||
|
||||
if web_form.login_required and frappe.session.user == "Guest":
|
||||
frappe.throw(_("You must be logged in to use this form."), frappe.PermissionError)
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ def get_list_context(context, doctype, web_form_name=None):
|
|||
|
||||
# get context from web form module
|
||||
if web_form_name:
|
||||
web_form = frappe.get_doc("Web Form", web_form_name)
|
||||
web_form = frappe.get_lazy_doc("Web Form", web_form_name)
|
||||
list_context = update_context_from_module(get_web_form_module(web_form), list_context)
|
||||
|
||||
# get path from '/templates/' folder of the doctype
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ def get_context(context) -> PrintContext:
|
|||
if frappe.form_dict.doc:
|
||||
doc = frappe.form_dict.doc
|
||||
else:
|
||||
doc = frappe.get_doc(frappe.form_dict.doctype, frappe.form_dict.name)
|
||||
doc = frappe.get_lazy_doc(frappe.form_dict.doctype, frappe.form_dict.name)
|
||||
|
||||
set_link_titles(doc)
|
||||
|
||||
|
|
@ -340,7 +340,7 @@ def get_html_and_style(
|
|||
"""Return `html` and `style` of print format, used in PDF etc."""
|
||||
|
||||
if isinstance(name, str):
|
||||
document = frappe.get_doc(doc, name)
|
||||
document = frappe.get_lazy_doc(doc, name)
|
||||
else:
|
||||
document = frappe.get_doc(json.loads(doc))
|
||||
|
||||
|
|
@ -371,7 +371,7 @@ def get_rendered_raw_commands(doc: str, name: str | None = None, print_format: s
|
|||
"""Return Rendered Raw Commands of print format, used to send directly to printer."""
|
||||
|
||||
if isinstance(name, str):
|
||||
document = frappe.get_doc(doc, name)
|
||||
document = frappe.get_lazy_doc(doc, name)
|
||||
else:
|
||||
document = frappe.get_doc(json.loads(doc))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue