Merge branch 'develop' into socket_io-refactor

This commit is contained in:
gavin 2022-11-17 15:21:20 +05:30 committed by GitHub
commit dbed3e4788
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 26 additions and 13 deletions

View file

@ -1432,6 +1432,8 @@ def get_doc_hooks():
@request_cache
def _load_app_hooks(app_name: str | None = None):
import types
hooks = {}
apps = [app_name] if app_name else get_installed_apps(sort=True)
@ -1447,9 +1449,13 @@ def _load_app_hooks(app_name: str | None = None):
if not request:
raise SystemExit
raise
for key in dir(app_hooks):
def _is_valid_hook(obj):
return not isinstance(obj, (types.ModuleType, types.FunctionType, type))
for key, value in inspect.getmembers(app_hooks, predicate=_is_valid_hook):
if not key.startswith("_"):
append_hook(hooks, key, getattr(app_hooks, key))
append_hook(hooks, key, value)
return hooks

View file

@ -21,7 +21,7 @@ from frappe import _
from frappe.auth import SAFE_HTTP_METHODS, UNSAFE_HTTP_METHODS, HTTPRequest
from frappe.core.doctype.comment.comment import update_comments_in_parent_after_request
from frappe.middlewares import StaticDataMiddleware
from frappe.utils import get_site_name, sanitize_html
from frappe.utils import cint, get_site_name, sanitize_html
from frappe.utils.error import make_error_snapshot
from frappe.website.serve import get_response
@ -112,7 +112,7 @@ def init_request(request):
else:
frappe.connect(set_admin_as_user=False)
request.max_content_length = frappe.local.conf.get("max_file_size") or 10 * 1024 * 1024
request.max_content_length = cint(frappe.local.conf.get("max_file_size")) or 10 * 1024 * 1024
make_form_dict(request)

View file

@ -101,8 +101,8 @@ class File(Document):
if not self.attached_to_doctype:
return
if self.attached_to_name and not isinstance(self.attached_to_name, str):
frappe.throw(_("Attached To Name must be a string"), TypeError)
if not self.attached_to_name or not isinstance(self.attached_to_name, (str, int)):
frappe.throw(_("Attached To Name must be a string or an integer"), frappe.ValidationError)
if not self.attached_to_field:
return

View file

@ -85,7 +85,7 @@ class TestBase64File(FrappeTestCase):
"doctype": "File",
"file_name": "test_base64.txt",
"attached_to_doctype": self.attached_to_doctype,
"attached_to_docname": self.attached_to_docname,
"attached_to_name": self.attached_to_docname,
"content": self.test_content,
"decode": True,
}

View file

@ -206,11 +206,16 @@ def search_widget(
)
order_by = f"_relevance, {order_by}"
ptype = "select" if frappe.only_has_select_perm(doctype) else "read"
ignore_permissions = (
True
if doctype == "DocType"
else (cint(ignore_user_permissions) and has_permission(doctype, ptype=ptype))
else (
cint(ignore_user_permissions)
and has_permission(
doctype,
ptype="select" if frappe.only_has_select_perm(doctype) else "read",
)
)
)
values = frappe.get_list(

View file

@ -455,10 +455,10 @@ class DatabaseQuery:
)
def check_read_permission(self, doctype):
ptype = "select" if frappe.only_has_select_perm(doctype) else "read"
if not self.flags.ignore_permissions and not frappe.has_permission(
doctype, ptype=ptype, parent_doctype=self.doctype
doctype,
ptype="select" if frappe.only_has_select_perm(doctype) else "read",
parent_doctype=self.doctype,
):
frappe.flags.error_message = _("Insufficient Permission for {0}").format(frappe.bold(doctype))
raise frappe.PermissionError(doctype)

View file

@ -61,4 +61,6 @@ class DiscussionReply(Document):
@frappe.whitelist()
def delete_message(reply_name):
frappe.delete_doc("Discussion Reply", reply_name, ignore_permissions=True)
owner = frappe.db.get_value("Discussion Reply", reply_name, "owner")
if owner == frappe.session.user:
frappe.delete_doc("Discussion Reply", reply_name)