44 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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)
 |