438 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			438 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import unicode_literals
 | |
| import webnotes
 | |
| import conf
 | |
| import webnotes.model
 | |
| from webnotes.model.code import get_obj
 | |
| from wnf import replace_code
 | |
| from termcolor import colored
 | |
| from webnotes.modules import reload_doc
 | |
| from webnotes.utils import make_esc
 | |
| import os
 | |
| 
 | |
| def execute1():
 | |
| 	#rendt = get_dt_to_be_renamed()
 | |
| 	#rename_dt_files(rendt)
 | |
| 	#update_local_file_system()
 | |
| 	replace_labels_with_fieldnames()
 | |
| 
 | |
| def execute():
 | |
| 
 | |
| 	#---------------------------------------------------
 | |
| 	# doctype renaming
 | |
| 	rendt = get_dt_to_be_renamed()
 | |
| 	# Rename dt	in db
 | |
| 	rename_in_db(rendt, 'DocType', 1)
 | |
| 	# Upadte dt in records
 | |
| 	update_dt_in_records(rendt)
 | |
| 
 | |
| 	#---------------------------------------------------
 | |
| 	# Dt Mapper renaming
 | |
| 	ren_mapper = get_mapper_to_be_renamed()
 | |
| 	# Rename mapper in db
 | |
| 	rename_in_db(ren_mapper, 'DocType Mapper', 0)
 | |
| 
 | |
| 	#---------------------------------------------------
 | |
| 	# GL Mapper renaming
 | |
| 	gl_mapper = {'Receivable Voucher': 'Sales Invoice', 'Payable Voucher': 'Purchase Invoice'}
 | |
| 	rename_in_db(gl_mapper, 'GL Mapper', 0)
 | |
| 
 | |
| 
 | |
| 	#---------------------------------------------------
 | |
| 	# remove dt label
 | |
| 	webnotes.conn.sql("""delete from `tabDocType Label` where name in ('Ticket', 'Receivable Voucher', 
 | |
| 		'QA Inspection Report', 'Payable Voucher', 'Manage Account', 'Indent', 'DocLayer')""")
 | |
| 
 | |
| 	#---------------------------------------------------
 | |
| 	# Reload mapper from file
 | |
| 	for d in ren_mapper:
 | |
| 		mod = '_'.join(webnotes.conn.sql("select module from `tabDocType Mapper` where name = %s", 
 | |
| 			ren_mapper[d])[0][0].lower().split())
 | |
| 		reload_doc(mod, 'DocType Mapper', ren_mapper[d])
 | |
| 
 | |
| 	delete_search_criteria()
 | |
| 	change_report_module()
 | |
| 
 | |
| 	# reload custom search criteria
 | |
| 	#for d in  webnotes.conn.sql("""select name, module from
 | |
| 	#		`tabSearch Criteria` where ifnull(standard, 'No') = 'Yes' and ifnull(disabled, 0) = 0"""):
 | |
| 	#
 | |
| 	for path, folders, files in os.walk(conf.modules_path):
 | |
| 		if not path.endswith('search_criteria'): continue
 | |
| 		module = path.split(os.sep)[-2]
 | |
| 		for sc in folders:
 | |
| 			try:
 | |
| 				reload_doc(module, 'search_criteria', sc)
 | |
| 				print module, sc
 | |
| 			except Exception, e:
 | |
| 				print "did not reload: " + str(d)
 | |
| 	
 | |
| 	webnotes.conn.sql("""DELETE FROM `tabPrint Format`
 | |
| 			WHERE name IN ('Delivery Note Format', 'Purchase Order Format',
 | |
| 			'Quotation Format', 'Receivable Voucher Format', 'Sales Order',
 | |
| 			'SalesInvoiceModern_test', 'SalesInvoiceStdNew',
 | |
| 			'Service Order Format', 'Service Quotation Format')""")
 | |
| 
 | |
| 	# reload custom print format
 | |
| 	for d in webnotes.conn.sql("""select name, module from `tabPrint Format`
 | |
| 			where ifnull(standard, 'No') = 'Yes'"""):
 | |
| 		try:
 | |
| 			reload_doc(d[1], 'Print Format', d[0])
 | |
| 		except Exception, e:
 | |
| 			print "did not reload: " + str(d)
 | |
| 
 | |
| 	#  Reload GL Mapper
 | |
| 	for d in webnotes.conn.sql("select name from `tabGL Mapper`"):
 | |
| 		reload_doc('accounts', 'GL Mapper', d[0])
 | |
| 	reload_doc('accounts', 'GL Mapper', 'Purchase Invoice with write off')
 | |
| 
 | |
| 	webnotes.conn.sql("update `tabDocType` set module = 'Utilities' where module = 'Knowledge Base'")
 | |
| 	webnotes.conn.sql("update `tabPage` set module = 'Utilities' where module = 'Knowledge Base'")
 | |
| 
 | |
| 		
 | |
| 
 | |
| def delete_search_criteria():
 | |
| 	webnotes.conn.sql("""DELETE FROM `tabSearch Criteria`
 | |
| 			WHERE name IN ('', 'bills-to_be_paid',
 | |
| 			'bills-to_be_submitted', 'cenvat_credit_-_input_or_capital_goods',
 | |
| 			'appraisal_custom', 'custom_test', 'custom_test1', 'delivery_note-to_be_billed',
 | |
| 			'delivery_note-to_be_submitted', 'delivery_notes',
 | |
| 			'employee_leave_balance_report', 'flat_bom_report',
 | |
| 			'general_ledger1', 'lead_interested',
 | |
| 			'payables_-_as_on_outstanding', 'periodical_budget_report',
 | |
| 			'projectwise_delivered_qty_and_costs_as_per_purchase_cost',
 | |
| 			'projectwise_pending_qty_and_costs_as_per_purchase_cost', 'sales',
 | |
| 			'sales_order1', 'sales_order_pending_items',
 | |
| 			'territory_wise_sales_-_target_vs_actual_', 'test_report',
 | |
| 			'lease_agreement_list', 'lease_monthly_future_installment_inflows',
 | |
| 			'lease_over_due_list', 'lease_overdue_age_wise',
 | |
| 			'lease_receipt_summary_month_wise', 'lease_receipts_client_wise',
 | |
| 			'lease_yearly_future_installment_inflows',
 | |
| 			'monthly_ledger_summary_report', 'payables_-_as_on_outstanding',
 | |
| 			'payment_report', 'progressive_total_excise_duty',
 | |
| 			'service_tax_credit_account_-_inputs',
 | |
| 			'total_amout_collection_for_a_period_-_customerwise',
 | |
| 			'invoices-to_be_submitted', 'invoices-to_receive_payment',
 | |
| 			'opportunity-quotations_to_be_sent', 'purchase_order-to_be_billed',
 | |
| 			'purchase_order-to_be_submitted',
 | |
| 			'purchase_order-to_receive_items',
 | |
| 			'purchase_request-purchase_order_to_be_made',
 | |
| 			'purchase_request-to_be_submitted',
 | |
| 			'sales-order_to_be_submitted', 'sales_order-overdue',
 | |
| 			'sales_order-to_be_billed', 'sales_order-to_be_delivered',
 | |
| 			'sales_order-to_be_submitted', 'task-open', 'appraisal_custom',
 | |
| 			'employee_details', 'employee_in_company_experience',
 | |
| 			'employee_leave_balance_report', 'employeewise_leave_transaction_details',
 | |
| 			'pending_appraisals', 'pending_expense_claims', 'delivery_plan', 'flat_bom_report',
 | |
| 			'dispatch_report', 'projectwise_delivered_qty_and_costs_as_per_purchase_cost', 
 | |
| 			'projectwise_pending_qty_and_costs_as_per_purchase_cost', 'custom_test', 'custom_test1',
 | |
| 			'delivery_notes', 'delivery_note_disabled', 'lead', 'lead_interested', 'lead_report',
 | |
| 			'periodic_sales_summary', 'monthly_despatched_trend', 'sales', 'sales_order',
 | |
| 			'sales_order1', 'sales_agentwise_commission', 'test_report', 
 | |
| 			'territory_wise_sales_-_target_vs_actual_', 
 | |
| 			'pending_po_items_to_bill1', 'pending_po_items_to_receive1', 
 | |
| 			'expense_vouchers', 'pending_expense_vouchers', 'shortage_to_indent')""")
 | |
| 
 | |
| 	webnotes.conn.sql("""
 | |
| 		DELETE FROM `tabSearch Criteria`
 | |
| 		WHERE name IN ('monthly_transaction_summary', 'trend_analyzer',
 | |
| 		'yearly_transaction_summary', 'invoices-overdue', 'lead-to_follow_up',
 | |
| 		'opportunity-to_follow_up', 'serial_no-amc_expiring_this_month',
 | |
| 		'serial_no-warranty_expiring_this_month')
 | |
| 		AND IFNULL(standard, 'No') = 'Yes'
 | |
| 		""")
 | |
| 
 | |
| def change_report_module():
 | |
| 	reports = {'itemwise_receipt_details': 'Stock'}
 | |
| 	for k in reports:
 | |
| 		webnotes.conn.sql("update `tabSearch Criteria` set module = %s where name = %s", (reports[k], k))
 | |
| 
 | |
| def rename_in_db(ren_data, data_type, is_doctype):
 | |
| 	for d in ren_data:
 | |
| 		print colored('Renaming... ' + d + ' --> '+ ren_data[d], 'yellow')
 | |
| 		#rename
 | |
| 		try:
 | |
| 			webnotes.model.rename(data_type, d, ren_data[d], is_doctype)
 | |
| 		except Exception, e:
 | |
| 			if e.args[0]!=1050:
 | |
| 				raise e
 | |
| 			else:
 | |
| 				print e
 | |
| 				pass
 | |
| 
 | |
| 
 | |
| def update_dt_in_records(rendt):
 | |
| 	for d in rendt:
 | |
| 		# Feed, property setter, search criteria, gl mapper, form 16A, naming series options, doclayer - dodtype is not mentioed in options
 | |
| 		dt_list = webnotes.conn.sql("""select t1.parent, t1.fieldname from
 | |
| 			tabDocField t1, tabDocType t2 where t1.parent = t2.name and
 | |
| 			t1.fieldname in ('dt', 'doctype', 'doc_type', 'dt_type') and
 | |
| 			ifnull(t1.options, '') = '' and ifnull(t2.issingle, 0) = 0 and
 | |
| 			t1.parent in ('Custom Field', 'Custom Script', 'Property Setter')""")
 | |
| 		for dt in dt_list:
 | |
| 			webnotes.conn.sql("update `tab%s` set %s = replace(%s, '%s', '%s') where %s = '%s'" % (dt[0], dt[1], dt[1], d, rendt[d], dt[1], d))
 | |
| 
 | |
| 		# gl mapper, gl entry
 | |
| 		webnotes.conn.sql("update `tabGL Mapper Detail` set against_voucher_type = replace(against_voucher_type, '%s', '%s') where against_voucher_type like '%%%s%%'" % (d, rendt[d], d))
 | |
| 		webnotes.conn.sql("update `tabGL Entry` set against_voucher_type = replace(against_voucher_type, '%s', '%s') where against_voucher_type = '%s'" % (d, rendt[d], d))
 | |
| 		webnotes.conn.sql("update `tabGL Entry` set voucher_type = replace(voucher_type, '%s', '%s') where voucher_type = '%s'" % (d, rendt[d], d))
 | |
| 
 | |
| 		# Stock ledger entry
 | |
| 		webnotes.conn.sql("update `tabStock Ledger Entry` set voucher_type = replace(voucher_type, '%s', '%s') where voucher_type = '%s'" % (d, rendt[d], d))
 | |
| 
 | |
| 		# Custom fld: options
 | |
| 		webnotes.conn.sql("update `tabCustom Field` set options = replace(options, %s, %s) where fieldtype in ('Link', 'Select', 'Table')", (d, rendt[d]))
 | |
| 		
 | |
| 		#Property Setter: value (if property=options)
 | |
| 		webnotes.conn.sql("update `tabProperty Setter` set value = replace(value, %s, %s) where property = 'Options'", (d, rendt[d]))
 | |
| 
 | |
| 		# custom script: script
 | |
| 		webnotes.conn.sql("update `tabCustom Script` set script = replace(script, %s, %s)", (d, rendt[d]))
 | |
| 
 | |
| 		# print format: html
 | |
| 		webnotes.conn.sql("update `tabPrint Format` set html = replace(html, %s, %s) where ifnull(standard, 'Yes') = 'No'", (d, rendt[d]))
 | |
| 
 | |
| 		# custom report: doc_type, filters, columns, parent_doc_type, add_cond, add_col, add_tab,
 | |
| 		#					dis_filters, group_by, sort_by, report_script, server_script, custom_query
 | |
| 		webnotes.conn.sql("""
 | |
| 			update
 | |
| 				`tabSearch Criteria` 
 | |
| 			set 
 | |
| 				doc_type		= replace(doc_type, %s, %s), 
 | |
| 				filters			= replace(filters, %s, %s), 
 | |
| 				columns			= replace(columns, %s, %s), 
 | |
| 				parent_doc_type = replace(parent_doc_type, %s, %s), 
 | |
| 				add_cond		= replace(add_cond, %s, %s), 
 | |
| 				add_col			= replace(add_col, %s, %s), 
 | |
| 				add_tab			= replace(add_tab, %s, %s), 
 | |
| 				dis_filters		= replace(dis_filters, %s, %s), 
 | |
| 				group_by		= replace(group_by, %s, %s), 
 | |
| 				sort_by			= replace(sort_by, %s, %s), 
 | |
| 				report_script	= replace(report_script, %s, %s), 
 | |
| 				server_script	= replace(server_script, %s, %s), 
 | |
| 				custom_query	= replace(custom_query, %s, %s)
 | |
| 			where 
 | |
| 				ifnull(standard, 'Yes') = 'No'
 | |
| 		""", (d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], 
 | |
| 				d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], ))
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| def get_dt_to_be_renamed():
 | |
| 	rendt = {
 | |
| 		'Receivable Voucher'		:	'Sales Invoice',
 | |
| 		'RV Detail'					:	'Sales Invoice Item',
 | |
| 		'RV Tax Detail'				:	'Sales Taxes and Charges',
 | |
| 		'Payable Voucher'			:	'Purchase Invoice',
 | |
| 		'PV Detail'					:	'Purchase Invoice Item',
 | |
| 		'Purchase Tax Detail'		:	'Purchase Taxes and Charges',
 | |
| 		'Indent'					:	'Purchase Request',
 | |
| 		'Indent Detail'				:	'Purchase Request Item',
 | |
| 		'QA Inspection Report'		:	'Quality Inspection',
 | |
| 		'Ticket'					:	'Task',
 | |
| 		'Manage Account'			:	'Global Defaults',
 | |
| 		'ToDo Item'					:	'ToDo',
 | |
| 		'Term'						:	'Terms and Conditions',
 | |
| 		'Static Parameter Detail'	:	'SMS Parameter',
 | |
| 		'SS Earning Detail'			:	'Salary Slip Earning',
 | |
| 		'SS Deduction Detail'		:	'Salary Slip Deduction',
 | |
| 		'Sales Order Detail'		:	'Sales Order Item',
 | |
| 		'Sales BOM Detail'			:	'Sales BOM Item',
 | |
| 		'Return Detail'				:	'Sales and Purchase Return Item',
 | |
| 		'Ref Rate Detail'			:	'Item Price',
 | |
| 		'Receiver Detail'			:	'SMS Receiver',
 | |
| 		'Quotation Detail'			:	'Quotation Item',
 | |
| 		'QA Specification Detail'	:	'Quality Inspection Reading',
 | |
| 		'Purchase Receipt Detail'	:	'Purchase Receipt Item',
 | |
| 		'Purchase Other Charges'	:	'Purchase Taxes and Charges Master',
 | |
| 		'PR Raw Material Detail'	:	'Purchase Receipt Item Supplied',
 | |
| 		'PP SO Detail'				:	'Production Plan Sales Order',
 | |
| 		'PP Detail'					:	'Production Plan Item',
 | |
| 		'PO Raw Material Detail'	:	'Purchase Order Item Supplied',
 | |
| 		'PO Detail'					:	'Purchase Order Item', 
 | |
| 		'Packing Slip Detail'		:	'Packing Slip Item',
 | |
| 		'Other Charges'				:	'Sales Taxes and Charges Master',
 | |
| 		'Order Lost Reason'			:	'Quotation Lost Reason',
 | |
| 		'Manage Account'			:	'Global Defaults',
 | |
| 		'Maintenance Visit Detail'	:	'Maintenance Visit Purpose',
 | |
| 		'Ledger Balance Export'		:	'Multi Ledger Report',
 | |
| 		'LC PR Detail'				:	'Landed Cost Purchase Receipt',
 | |
| 		'Landed Cost Detail'		:	'Landed Cost Item',
 | |
| 		'KRA Template'				:	'Appraisal Template',
 | |
| 		'KRA Sheet'					:	'Appraisal Template Goal',
 | |
| 		'Item Specification Detail' :	'Item Quality Inspection Parameter',
 | |
| 		'Item Maintenance Detail'	:	'Maintenance Schedule Item',
 | |
| 		'IR Payment Detail'			:	'Payment to Invoice Matching Tool Detail',
 | |
| 		'Internal Reconciliation'	:	'Payment to Invoice Matching Tool',
 | |
| 		'Installed Item Details'	:	'Installation Note Item',
 | |
| 		'Holiday List Detail'		:	'Holiday',
 | |
| 		'Follow up'					:	'Communication Log',
 | |
| 		'Flat BOM Detail'			:	'BOM Explosion Item',
 | |
| 		'Expense Voucher Detail'	:	'Expense Claim Detail',
 | |
| 		'Expense Voucher'			:	'Expense Claim',
 | |
| 		'Expense Type'				:	'Expense Claim Type',
 | |
| 		'Enquiry Detail'			:	'Opportunity Item',
 | |
| 		'Enquiry'					:	'Opportunity',
 | |
| 		'Earning Detail'			:	'Salary Structure Earning',
 | |
| 		'DocLayerField'				:	'Customize Form Field',
 | |
| 		'DocLayer'					:	'Customize Form',
 | |
| 		'Delivery Note Detail'		:	'Delivery Note Item',
 | |
| 		'Deduction Detail'			:	'Salary Structure Deduction',
 | |
| 		'Comment Widget Record'		:	'Comment',
 | |
| 		'BOM Material'				:	'BOM Item',
 | |
| 		'Bill Of Materials'			:	'BOM',
 | |
| 		'Appraisal Detail'			:	'Appraisal Goal',
 | |
| 		'Advance Allocation Detail' :	'Purchase Invoice Advance',
 | |
| 		'Advance Adjustment Detail' :	'Sales Invoice Advance',
 | |
| 		'Ledger Detail'				:	'Multi Ledger Report Detail',
 | |
| 		'TA Control'				:	'Trend Analyzer Control',
 | |
| 		'Sales and Purchase Return Wizard'	: 'Sales and Purchase Return Tool',
 | |
| 		'Educational Qualifications Detail' : 'Employee Education',
 | |
| 		'Delivery Note Packing Detail'		: 'Delivery Note Packing Item',
 | |
| 		'Experience In Company Detail'		: 'Employee Internal Work History',
 | |
| 		'Professional Training Details'		: 'Employee Training',
 | |
| 		'Previous Experience Detail'		: 'Employee External Work History',
 | |
| 	}
 | |
| 	return rendt
 | |
| 
 | |
| 
 | |
| def get_mapper_to_be_renamed():
 | |
| 	ren_map = {
 | |
| 		'Sales Order-Receivable Voucher'	:	'Sales Order-Sales Invoice',
 | |
| 		'Sales Order-Indent'				: 	'Sales Order-Purchase Request',
 | |
| 		'Receivable Voucher-Delivery Note' 	: 	'Sales Invoice-Delivery Note',
 | |
| 		'Purchase Receipt-Payable Voucher'	: 	'Purchase Receipt-Purchase Invoice',
 | |
| 		'Purchase Order-Payable Voucher'	: 	'Purchase Order-Purchase Invoice',
 | |
| 		'Project-Receivable Voucher' 		: 	'Project-Sales Invoice',
 | |
| 		'Lead-Enquiry'						: 	'Lead-Opportunity',
 | |
| 		'KRA Template-Appraisal'			: 	'Appraisal Template-Appraisal',
 | |
| 		'Indent-Purchase Order'				: 	'Purchase Request-Purchase Order',
 | |
| 		'Enquiry-Quotation'					: 	'Opportunity-Quotation',
 | |
| 		'Delivery Note-Receivable Voucher'	: 	'Delivery Note-Sales Invoice'
 | |
| 	}
 | |
| 	return ren_map
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
| def update_local_file_system():
 | |
| 	""" RUN ONLY IN LOCAL"""
 | |
| 	
 | |
| 	# doctype renaming
 | |
| 	rendt = get_dt_to_be_renamed()
 | |
| 
 | |
| 	# replace dt in js/py file
 | |
| 	update_file_content(rendt)
 | |
| 	# git mv
 | |
| 	rename_dt_files(rendt)
 | |
| 
 | |
| 
 | |
| 	# Mapper renaming
 | |
| 	ren_mapper = get_mapper_to_be_renamed()
 | |
| 
 | |
| 	rename_mapper_files(ren_mapper)
 | |
| 
 | |
| 	os.system('git mv erpnext/accounts/GL\ Mapper/Payable\ Voucher erpnext/accounts/GL\ Mapper/Purchase\ Invoice')
 | |
| 	os.system('git mv erpnext/accounts/GL\ Mapper/Purchase\ Invoice/Payable\ Voucher.txt erpnext/accounts/GL\ Mapper/Purchase\ Invoice/Purchase\ Invoice.txt')
 | |
| 	os.system('git mv erpnext/accounts/GL\ Mapper/Receivable\ Voucher erpnext/accounts/GL\ Mapper/Sales\ Invoice')
 | |
| 	os.system('git mv erpnext/accounts/GL\ Mapper/Sales\ Invoice/Receivable\ Voucher.txt erpnext/accounts/GL\ Mapper/Sales\ Invoice/Sales\ Invoice.txt')
 | |
| 	
 | |
| 	# git rm production dt mapper
 | |
| 	os.system('git rm -r erpnext/production/DocType\ Mapper/')
 | |
| 
 | |
| 
 | |
| 
 | |
| def update_file_content(rendt):
 | |
| 	for d in rendt:
 | |
| 		print colored('Renaming... ' + d + ' --> '+ rendt[d], 'yellow')
 | |
| 		for extn in ['js', 'py', 'txt', 'html']:
 | |
| 			res = replace_code('/var/www/erpnext/', d, rendt[d], extn)
 | |
| 			if res == 'skip':
 | |
| 				break
 | |
| 		
 | |
| 		
 | |
| def rename_dt_files(rendt):
 | |
| 	for d in rendt:
 | |
| 		mod = webnotes.conn.sql("select module from tabDocType where name = %s", rendt[d])[0][0]
 | |
| 		if mod == 'Core':
 | |
| 			os.chdir('/var/www/erpnext/lib/')
 | |
| 			path = 'py/core/doctype/'
 | |
| 		else:
 | |
| 			os.chdir('/var/www/erpnext/')
 | |
| 			path = 'erpnext/' + '_'.join(mod.lower().split()) + '/doctype/'
 | |
| 		old = '_'.join(d.lower().split())
 | |
| 		new = '_'.join(rendt[d].lower().split())
 | |
| 
 | |
| 		print 'git mv ' + path + old + ' ' + path + new
 | |
| 		# rename old dir
 | |
| 		os.system('git mv ' + path + old + ' ' + path + new)
 | |
| 
 | |
| 		# rename all files in that dir
 | |
| 		for extn in ['js', 'py', 'txt', 'html']:
 | |
| 			if os.path.exists(path + new + '/'+ old + '.' +extn):
 | |
| 				os.system('git mv ' + path + new + '/'+ old + '.' +extn + ' ' + path + new + '/' + new + '.' +extn)
 | |
| 				print 'git mv ' + path + new + '/'+ old + '.' +extn + ' ' + path + new + '/' + new + '.' +extn
 | |
| 
 | |
| 
 | |
| def rename_mapper_files(ren_mapper):
 | |
| 	for d in ren_mapper:
 | |
| 		# module
 | |
| 		mod = '_'.join(webnotes.conn.sql("select module from `tabDocType Mapper` where name = %s", ren_mapper[d])[0][0].lower().split())
 | |
| 		path = 'erpnext/' + mod + '/DocType Mapper/'
 | |
| 
 | |
| 		# rename old dir
 | |
| 		esc = make_esc('$ ')
 | |
| 		os.system('git mv ' + esc(path + d) + ' ' + esc(path + ren_mapper[d]))
 | |
| 		print 'git mv ' + esc(path + d) + ' ' + esc(path + ren_mapper[d])
 | |
| 		os.system('git mv ' + esc(path + ren_mapper[d] + '/'+ d + '.txt')
 | |
| 				+ ' ' + esc(path + ren_mapper[d] + '/' + ren_mapper[d] + '.txt'))
 | |
| 		print 'git mv ' + esc(path + ren_mapper[d] + '/'+ d + '.txt') + ' ' + esc(path + ren_mapper[d] + '/' + ren_mapper[d] + '.txt')
 | |
| 		
 | |
| 
 | |
| def replace_labels_with_fieldnames():
 | |
| 	"""
 | |
| 		This is used for replacing instances like cur_frm.cscript['LABEL'] with
 | |
| 		cur_frm.cscript.FIELDNAME in js files
 | |
| 	"""
 | |
| 	doctype = {}
 | |
| 	doctype.update(prepare_dict_of_label_fieldname('/var/www/erpnext/erpnext/'))
 | |
| 	doctype.update(prepare_dict_of_label_fieldname('/var/www/erpnext/lib/py'))
 | |
| 	#print doctype
 | |
| 	
 | |
| 	for doc in doctype:
 | |
| 		label_fieldname = doctype[doc]
 | |
| 		for d in label_fieldname:
 | |
| 			#label = "cur_frm.cscript['%s']" % d
 | |
| 			#fieldname = "cur_frm.cscript.%s" % label_fieldname[d]
 | |
| 			label = d
 | |
| 			fieldname = label_fieldname[d]
 | |
| 			print colored('Changing... ' + doc + ': ' + label + ' --> '+ fieldname, 'yellow')
 | |
| 			#res = replace_code('/var/www/erpnext/', label, fieldname, 'js')
 | |
| 			res = replace_code('/var/www/erpnext/', label, fieldname, 'js',
 | |
| 					'hide_field\(.*%s' % label)
 | |
| 			if res == 'skip':
 | |
| 				break
 | |
| 
 | |
| def prepare_dict_of_label_fieldname(module_path):
 | |
| 	from webnotes.model.utils import peval_doclist
 | |
| 	from webnotes.model.sync import get_file_path
 | |
| 	doctype = {}
 | |
| 	for path, folders, files in os.walk(module_path):
 | |
| 		if path == module_path:
 | |
| 			modules_list = folders
 | |
| 		for f in files:
 | |
| 			if f.endswith(".txt"):
 | |
| 				rel_path = os.path.relpath(path, conf.modules_path)
 | |
| 				path_tuple = rel_path.split(os.sep)
 | |
| 				if (len(path_tuple)==3 and path_tuple[0] in modules_list and
 | |
| 						path_tuple[1] == 'doctype'):
 | |
| 					file_name = f[:-4]
 | |
| 					with open(get_file_path(path_tuple[0], file_name), 'r') as fn:
 | |
| 						doclist = peval_doclist(fn.read())
 | |
| 						doctype[file_name] = dict(([d.get('label'),d.get('fieldname')] \
 | |
| 								for d in doclist if d.get('doctype')=='DocField'))
 | |
| 	return doctype
 |