Merge pull request #16538 from resilient-tech/fix-read-only

fix: Read Only fields visible despite no value
This commit is contained in:
mergify[bot] 2022-04-07 08:06:26 +00:00 committed by GitHub
commit 096110e14d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 25 additions and 22 deletions

View file

@ -44,6 +44,8 @@ frappe.ui.form.Control = class BaseControl {
}
if ((!this.doctype && !this.docname) || this.df.parenttype === 'Web Form' || this.df.is_web_form) {
let status = "Write";
// like in case of a dialog box
if (cint(this.df.hidden)) {
// eslint-disable-next-line
@ -55,10 +57,10 @@ frappe.ui.form.Control = class BaseControl {
if(explain) console.log("By Hidden Dependency: None"); // eslint-disable-line no-console
return "None";
} else if (cint(this.df.read_only || this.df.is_virtual)) {
} else if (cint(this.df.read_only || this.df.is_virtual || this.df.fieldtype === "Read Only")) {
// eslint-disable-next-line
if (explain) console.log("By Read Only: Read"); // eslint-disable-line no-console
return "Read";
status = "Read";
} else if ((this.grid &&
this.grid.display_status == 'Read') ||
@ -67,10 +69,16 @@ frappe.ui.form.Control = class BaseControl {
this.layout.grid.display_status == 'Read')) {
// parent grid is read
if (explain) console.log("By Parent Grid Read-only: Read"); // eslint-disable-line no-console
return "Read";
status = "Read";
}
return "Write";
if (
status === "Read" &&
is_null(this.value) &&
!in_list(["HTML", "Image", "Button"], this.df.fieldtype)
) status = "None";
return status;
}
var status = frappe.perm.get_field_display_status(this.df,

View file

@ -23,7 +23,6 @@ import './table';
import './color';
import './signature';
import './password';
import './read_only';
import './button';
import './html';
import './markdown_editor';

View file

@ -262,3 +262,5 @@ frappe.ui.form.ControlData = class ControlData extends frappe.ui.form.ControlInp
return this.grid || this.layout && this.layout.grid;
}
};
frappe.ui.form.ControlReadOnly = frappe.ui.form.ControlData;

View file

@ -1,8 +0,0 @@
frappe.ui.form.ControlReadOnly = class ControlReadOnly extends frappe.ui.form.ControlData {
get_status(explain) {
var status = super.get_status(explain);
if(status==="Write")
status = "Read";
return;
}
};

View file

@ -225,7 +225,10 @@ $.extend(frappe.perm, {
if (explain) console.log("By Workflow:" + status);
// read only field is checked
if (status === "Write" && cint(df.read_only)) {
if (status === "Write" && (
cint(df.read_only) ||
df.fieldtype === "Read Only"
)) {
status = "Read";
}
if (explain) console.log("By Read Only:" + status);
@ -276,4 +279,4 @@ $.extend(frappe.perm, {
return allowed_docs;
}
}
});
});

View file

@ -22,17 +22,15 @@ frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout {
super.make();
this.refresh();
// set default
$.each(this.fields_list, function(i, field) {
if (field.df["default"]) {
let def_value = field.df["default"];
$.each(this.fields_list, (_, field) => {
if (!is_null(field.df.default)) {
let def_value = field.df.default;
if (def_value == 'Today' && field.df["fieldtype"] == 'Date') {
if (def_value === "Today" && field.df.fieldtype === "Date") {
def_value = frappe.datetime.get_today();
}
field.set_input(def_value);
// if default and has depends_on, render its fields.
me.refresh_dependency();
this.set_value(field.df.fieldname, def_value);
}
})
@ -129,6 +127,7 @@ frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout {
if (f) {
f.set_value(val).then(() => {
f.set_input(val);
f.refresh();
this.refresh_dependency();
resolve();
});