# do not run this patch from __future__ import unicode_literals def execute(): import webnotes import webnotes.modules forbidden = ['%', "'", '"', '#', '*', '?', '`', '(', ')', '<', '>', '-', '\\', '/', '.', '&', '!', '@', '$', '^', '+'] doctype_list = webnotes.conn.sql("SELECT name, module FROM `tabDocType`") for doctype, module in doctype_list: docfield_list = webnotes.conn.sql("""\ SELECT name, label, fieldtype FROM `tabDocField` WHERE parent = %s AND IFNULL(fieldname, '') = ''""", doctype) field_type_count = {} count = 0 for name, label, fieldtype in docfield_list: fieldname = None if label: temp_label = label if len(temp_label)==1: temp_label = fieldtype + temp_label fieldname = temp_label.lower().replace(' ', '_') if "<" in fieldname: count = field_type_count.setdefault(fieldtype, 0) fieldname = fieldtype.lower().replace(' ', '_') + str(count) field_type_count[fieldtype] = count + 1 elif fieldtype: count = field_type_count.setdefault(fieldtype, 0) fieldname = fieldtype.lower().replace(' ', '_') + str(count) field_type_count[fieldtype] = count + 1 if fieldname: for f in forbidden: fieldname = fieldname.replace(f, '') fieldname = fieldname.replace('__', '_') if fieldname.endswith('_'): fieldname = fieldname[:-1] if fieldname.startswith('_'): fieldname = fieldname[1:] #print fieldname webnotes.conn.sql("""\ UPDATE `tabDocField` SET fieldname = %s WHERE name = %s""", (fieldname, name)) webnotes.modules.export_doc('DocType', doctype)