def set_user_and_static_default_values(doc): user_permissions = get_user_permissions() defaults = frappe.defaults.get_defaults() for df in doc.meta.get("fields"): if df.fieldtype in type_map: # user permissions for link options doctype_user_permissions = user_permissions.get(df.options, []) # Allowed records for the reference doctype (link field) allowed_records = get_allowed_docs_for_doctype( doctype_user_permissions, df.parent) user_default_value = get_user_default_value( df, defaults, doctype_user_permissions, allowed_records) if user_default_value != None: # do not set default if the field on which current field is dependent is not set if is_dependent_field_set(df.depends_on, doc): doc.set(df.fieldname, user_default_value) else: if df.fieldname != doc.meta.title_field: static_default_value = get_static_default_value( df, doctype_user_permissions, allowed_records) if static_default_value != None and is_dependent_field_set( df.depends_on, doc): doc.set(df.fieldname, static_default_value)
def get_default_based_on_another_field(df, user_permissions, parent_doc): # default value based on another document from frappe.permissions import get_allowed_docs_for_doctype ref_doctype = df.default[1:] ref_fieldname = ref_doctype.lower().replace(" ", "_") reference_name = parent_doc.get(ref_fieldname) if parent_doc else frappe.db.get_default(ref_fieldname) default_value = frappe.db.get_value(ref_doctype, reference_name, df.fieldname) is_allowed_default_value = (not user_permissions_exist(df, user_permissions.get(df.options)) or (default_value in get_allowed_docs_for_doctype(user_permissions[df.options], df.parent))) # is this allowed as per user permissions if is_allowed_default_value: return default_value
def get_default_based_on_another_field(df, user_permissions, parent_doc): # default value based on another document from frappe.permissions import get_allowed_docs_for_doctype ref_doctype = df.default[1:] ref_fieldname = ref_doctype.lower().replace(" ", "_") reference_name = parent_doc.get(ref_fieldname) if parent_doc else frappe.db.get_default(ref_fieldname) default_value = frappe.db.get_value(ref_doctype, reference_name, df.fieldname) is_allowed_default_value = (not user_permissions_exist(df, user_permissions.get(df.options)) or (default_value in get_allowed_docs_for_doctype(user_permissions[df.options], df.parent))) # is this allowed as per user permissions if is_allowed_default_value: return default_value
def set_user_and_static_default_values(doc): user_permissions = get_user_permissions() defaults = frappe.defaults.get_defaults() for df in doc.meta.get("fields"): if df.fieldtype in type_map: # user permissions for link options doctype_user_permissions = user_permissions.get(df.options, []) # Allowed records for the reference doctype (link field) allowed_records = get_allowed_docs_for_doctype(doctype_user_permissions, df.parent) user_default_value = get_user_default_value(df, defaults, doctype_user_permissions, allowed_records) if user_default_value is not None: doc.set(df.fieldname, user_default_value) else: if df.fieldname != doc.meta.title_field: static_default_value = get_static_default_value(df, doctype_user_permissions, allowed_records) if static_default_value is not None: doc.set(df.fieldname, static_default_value)
def set_user_and_static_default_values(doc): user_permissions = get_user_permissions() defaults = frappe.defaults.get_defaults() for df in doc.meta.get("fields"): if df.fieldtype in data_fieldtypes: # user permissions for link options doctype_user_permissions = user_permissions.get(df.options, []) # Allowed records for the reference doctype (link field) allowed_records = get_allowed_docs_for_doctype( doctype_user_permissions, df.parent) user_default_value = get_user_default_value( df, defaults, doctype_user_permissions, allowed_records) if user_default_value is not None: doc.set(df.fieldname, user_default_value) else: if df.fieldname != doc.meta.title_field: static_default_value = get_static_default_value( df, doctype_user_permissions, allowed_records) if static_default_value is not None: doc.set(df.fieldname, static_default_value)