94 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import frappe
 | |
| from frappe.model import default_fields
 | |
| 
 | |
| def execute():
 | |
| 	frappe.reload_doc("email", "doctype", "email_account")
 | |
| 
 | |
| 	# outgoing
 | |
| 	outgoing = dict(frappe.db.sql("select field, value from tabSingles where doctype='Outgoing Email Settings'"))
 | |
| 	if outgoing and outgoing['mail_server'] and outgoing['mail_login']:
 | |
| 		account = frappe.new_doc("Email Account")
 | |
| 		mapping = {
 | |
| 			"login_id_is_different": 1,
 | |
| 			"email_id": "auto_email_id",
 | |
| 			"login_id": "mail_login",
 | |
| 			"password": "mail_password",
 | |
| 			"footer": "footer",
 | |
| 			"smtp_server": "mail_server",
 | |
| 			"smtp_port": "mail_port",
 | |
| 			"use_tls": "use_ssl"
 | |
| 		}
 | |
| 
 | |
| 		for target_fieldname, source_fieldname in mapping.iteritems():
 | |
| 			account.set(target_fieldname, outgoing.get(source_fieldname))
 | |
| 
 | |
| 		account.enable_outgoing = 1
 | |
| 		account.enable_incoming = 0
 | |
| 
 | |
| 		account.insert()
 | |
| 
 | |
| 	# support
 | |
| 	support = dict(frappe.db.sql("select field, value from tabSingles where doctype='Support Email Settings'"))
 | |
| 	if support and support['mail_server'] and support['mail_login']:
 | |
| 		account = frappe.new_doc("Email Account")
 | |
| 		mapping = {
 | |
| 			"enable_incoming": "sync_support_mails",
 | |
| 			"email_id": "mail_login",
 | |
| 			"password": "mail_password",
 | |
| 			"email_server": "mail_server",
 | |
| 			"use_ssl": "use_ssl",
 | |
| 			"signature": "support_signature",
 | |
| 			"enable_auto_reply": "send_autoreply",
 | |
| 			"auto_reply_message": "support_autoreply"
 | |
| 		}
 | |
| 
 | |
| 		for target_fieldname, source_fieldname in mapping.iteritems():
 | |
| 			account.set(target_fieldname, support.get(source_fieldname))
 | |
| 
 | |
| 		account.enable_outgoing = 0
 | |
| 		account.append_to = "Issue"
 | |
| 
 | |
| 		insert_or_update(account)
 | |
| 
 | |
| 	# sales, jobs
 | |
| 	for doctype in ("Sales Email Settings", "Jobs Email Settings"):
 | |
| 		source = dict(frappe.db.sql("select field, value from tabSingles where doctype=%s", doctype))
 | |
| 		if source and  source.get('host') and source.get('username'):
 | |
| 			account = frappe.new_doc("Email Account")
 | |
| 			mapping = {
 | |
| 				"enable_incoming": "extract_emails",
 | |
| 				"email_id": "username",
 | |
| 				"password": "password",
 | |
| 				"email_server": "host",
 | |
| 				"use_ssl": "use_ssl",
 | |
| 			}
 | |
| 
 | |
| 			for target_fieldname, source_fieldname in mapping.iteritems():
 | |
| 				account.set(target_fieldname, source.get(source_fieldname))
 | |
| 
 | |
| 			account.enable_outgoing = 0
 | |
| 			account.append_to = "Lead" if doctype=="Sales Email Settings" else "Job Applicant"
 | |
| 
 | |
| 			insert_or_update(account)
 | |
| 
 | |
| 	for doctype in ("Outgoing Email Settings", "Support Email Settings",
 | |
| 		"Sales Email Settings", "Jobs Email Settings"):
 | |
| 		frappe.delete_doc("DocType", doctype)
 | |
| 
 | |
| def insert_or_update(account):
 | |
| 	try:
 | |
| 		account.insert()
 | |
| 	except frappe.NameError, e:
 | |
| 		if e.args[0]=="Email Account":
 | |
| 			existing_account = frappe.get_doc("Email Account", e.args[1])
 | |
| 			for key, value in account.as_dict().items():
 | |
| 				if not existing_account.get(key) and value \
 | |
| 					and key not in default_fields \
 | |
| 					and key != "__islocal":
 | |
| 					existing_account.set(key, value)
 | |
| 
 | |
| 			existing_account.save()
 | |
| 		else:
 | |
| 			raise
 | |
| 
 |