diff --git a/cypress/integration/control_attach.js b/cypress/integration/control_attach.js
index 6714f6c24e..ddaa22884d 100644
--- a/cypress/integration/control_attach.js
+++ b/cypress/integration/control_attach.js
@@ -29,7 +29,8 @@ context("Attach Control", () => {
//Clicking on "Link" button to attach a file using the "Link" button
cy.findByRole("button", { name: "Link" }).click();
cy.findByPlaceholderText("Attach a web link").type(
- "https://wallpaperplay.com/walls/full/8/2/b/72402.jpg"
+ "https://wallpaperplay.com/walls/full/8/2/b/72402.jpg",
+ { force: true }
);
//Clicking on the Upload button to upload the file
diff --git a/cypress/integration/sidebar.js b/cypress/integration/sidebar.js
index c8aa2a441b..7510425db3 100644
--- a/cypress/integration/sidebar.js
+++ b/cypress/integration/sidebar.js
@@ -81,7 +81,7 @@ context("Sidebar", () => {
// test "Show All" button
cy.get(".attachment-row").should("have.length", 10);
- cy.get(".show-all-btn").click();
+ cy.get(".show-all-btn").click({ force: true });
cy.get(".attachment-row").should("have.length", 12);
});
});
@@ -120,7 +120,7 @@ context("Sidebar", () => {
).click();
//To check if filter is applied
- cy.click_filter_button().should("contain", "1 filter");
+ cy.click_filter_button().get(".filter-label").should("contain", "1");
cy.get(".fieldname-select-area > .awesomplete > .form-control").should(
"have.value",
"Assigned To"
diff --git a/cypress/integration/theme_switcher_dialog.js b/cypress/integration/theme_switcher_dialog.js
index 158ff3e244..53c3323a6d 100644
--- a/cypress/integration/theme_switcher_dialog.js
+++ b/cypress/integration/theme_switcher_dialog.js
@@ -7,22 +7,30 @@ context("Theme Switcher Shortcut", () => {
cy.reload();
});
it("Check Toggle", () => {
- cy.open_theme_dialog("{ctrl+shift+g}");
+ cy.open_theme_dialog();
cy.get(".modal-backdrop").should("exist");
- cy.get(".theme-grid > div").first().click();
+ cy.intercept("POST", "/api/method/frappe.core.doctype.user.user.switch_theme").as(
+ "set_theme"
+ );
+ cy.findByText("Timeless Night").click();
+ cy.wait("@set_theme");
cy.close_theme("{ctrl+shift+g}");
cy.get(".modal-backdrop").should("not.exist");
});
it("Check Enter", () => {
- cy.open_theme_dialog("{ctrl+shift+g}");
- cy.get(".theme-grid > div").first().click();
+ cy.open_theme_dialog();
+ cy.intercept("POST", "/api/method/frappe.core.doctype.user.user.switch_theme").as(
+ "set_theme"
+ );
+ cy.findByText("Frappe Light").click();
+ cy.wait("@set_theme");
cy.close_theme("{enter}");
cy.get(".modal-backdrop").should("not.exist");
});
});
-Cypress.Commands.add("open_theme_dialog", (shortcut_keys) => {
- cy.get("body").type(shortcut_keys);
+Cypress.Commands.add("open_theme_dialog", () => {
+ cy.get("body").type("{ctrl+shift+g}");
});
Cypress.Commands.add("close_theme", (shortcut_keys) => {
cy.get(".modal-header").type(shortcut_keys);
diff --git a/frappe/contacts/doctype/address/address.py b/frappe/contacts/doctype/address/address.py
index e81a80fb65..ea6e9772fd 100644
--- a/frappe/contacts/doctype/address/address.py
+++ b/frappe/contacts/doctype/address/address.py
@@ -170,7 +170,9 @@ def get_address_display(address_dict: dict | str | None) -> str | None:
return
if not isinstance(address_dict, dict):
- address_dict = frappe.db.get_value("Address", address_dict, "*", as_dict=True, cache=True) or {}
+ address = frappe.get_cached_doc("Address", address_dict)
+ address.check_permission()
+ address_dict = address.as_dict()
name, template = get_address_templates(address_dict)
diff --git a/frappe/contacts/doctype/contact/contact.py b/frappe/contacts/doctype/contact/contact.py
index e78f1b006c..c1bd2f55ec 100644
--- a/frappe/contacts/doctype/contact/contact.py
+++ b/frappe/contacts/doctype/contact/contact.py
@@ -217,6 +217,8 @@ def invite_user(contact):
@frappe.whitelist()
def get_contact_details(contact):
contact = frappe.get_doc("Contact", contact)
+ contact.check_permission()
+
return {
"contact_person": contact.get("name"),
"contact_display": contact.get("full_name"),
diff --git a/frappe/permissions.py b/frappe/permissions.py
index 0e7c0d6480..1f0d182b07 100644
--- a/frappe/permissions.py
+++ b/frappe/permissions.py
@@ -172,7 +172,7 @@ def get_doc_permissions(doc, user=None, ptype=None):
return (doc.get("owner") or "").lower() == user.lower()
if has_controller_permissions(doc, ptype, user=user) is False:
- push_perm_check_log("Not allowed via controller permission check")
+ push_perm_check_log(_("Not allowed via controller permission check"))
return {ptype: 0}
permissions = copy.deepcopy(get_role_permissions(meta, user=user, is_owner=is_user_owner()))
@@ -686,7 +686,7 @@ def push_perm_check_log(log):
if frappe.flags.get("has_permission_check_logs") is None:
return
- frappe.flags.get("has_permission_check_logs").append(_(log))
+ frappe.flags.get("has_permission_check_logs").append(log)
def has_child_permission(
diff --git a/frappe/public/icons/espresso/icons.svg b/frappe/public/icons/espresso/icons.svg
index 7508cd717f..3cd91a3791 100644
--- a/frappe/public/icons/espresso/icons.svg
+++ b/frappe/public/icons/espresso/icons.svg
@@ -522,6 +522,13 @@
+
+
+
+
+
+
+
@@ -989,6 +996,12 @@
+
+
+
+
+
+
diff --git a/frappe/public/js/frappe/form/templates/form_sidebar.html b/frappe/public/js/frappe/form/templates/form_sidebar.html
index 0fe6ca16d5..60d2a4ae60 100644
--- a/frappe/public/js/frappe/form/templates/form_sidebar.html
+++ b/frappe/public/js/frappe/form/templates/form_sidebar.html
@@ -45,7 +45,7 @@
@@ -56,21 +56,22 @@
-
-
-
+
+