import frappe from frappe.model.naming import get_default_naming_series class NamingSeriesNotSetError(frappe.ValidationError): pass def set_by_naming_series( doctype, fieldname, naming_series, hide_name_field=True, make_mandatory=1 ): """Change a doctype's naming to user naming series""" from frappe.custom.doctype.property_setter.property_setter import make_property_setter if naming_series: make_property_setter( doctype, "naming_series", "hidden", 0, "Check", validate_fields_for_doctype=False ) make_property_setter( doctype, "naming_series", "reqd", make_mandatory, "Check", validate_fields_for_doctype=False ) # set values for mandatory try: frappe.db.sql( """update `tab{doctype}` set naming_series={s} where ifnull(naming_series, '')=''""".format( doctype=doctype, s="%s" ), get_default_naming_series(doctype), ) except NamingSeriesNotSetError: pass if hide_name_field: make_property_setter(doctype, fieldname, "reqd", 0, "Check", validate_fields_for_doctype=False) make_property_setter( doctype, fieldname, "hidden", 1, "Check", validate_fields_for_doctype=False ) else: make_property_setter( doctype, "naming_series", "reqd", 0, "Check", validate_fields_for_doctype=False ) make_property_setter( doctype, "naming_series", "hidden", 1, "Check", validate_fields_for_doctype=False ) if hide_name_field: make_property_setter( doctype, fieldname, "hidden", 0, "Check", validate_fields_for_doctype=False ) make_property_setter(doctype, fieldname, "reqd", 1, "Check", validate_fields_for_doctype=False) # set values for mandatory frappe.db.sql( """update `tab{doctype}` set `{fieldname}`=`name` where ifnull({fieldname}, '')=''""".format( doctype=doctype, fieldname=fieldname ) )