Merge pull request #16538 from resilient-tech/fix-read-only
fix: Read Only fields visible despite no value
This commit is contained in:
commit
096110e14d
6 changed files with 25 additions and 22 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import './table';
|
|||
import './color';
|
||||
import './signature';
|
||||
import './password';
|
||||
import './read_only';
|
||||
import './button';
|
||||
import './html';
|
||||
import './markdown_editor';
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue