import frappe

def execute():
	frappe.reload_doc("email", "doctype", "email_account")

	# outgoing
	if frappe.db.exists("DocType", "Outgoing Email Settings"):
		outgoing = dict(frappe.db.sql("select field, value from tabSingles where doctype='Outgoing Email Settings'"))
		account = frappe.new_doc("Email Account")
		mapping = {
			"email_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.is_global = 1

		account.insert()

	# support
	if frappe.db.exists("DocType", "Support Email Settings"):
		support = dict(frappe.db.sql("select field, value from tabSingles where doctype='Support Email Settings'"))
		account = frappe.new_doc("Email Account")
		mapping = {
			"enable_incoming": "sync_support_mails",
			"email_id": "mail_login",
			"password": "mail_password",
			"pop3_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.is_global = 1

		account.insert()

	# sales, jobs
	for doctype in ("Sales Email Settings", "Jobs Email Settings"):
		if frappe.db.exists("DocType", doctype):
			source = dict(frappe.db.sql("select field, value from tabSingles where doctype=%s", doctype))
			account = frappe.new_doc("Email Account")
			mapping = {
				"enable_incoming": "extract_emails",
				"email_id": "username",
				"password": "password",
				"pop3_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.is_global = 1
			account.append_to = "Lead" if doctype=="Sales Email Settings" else "Job Applicant"

			account.insert()

	for doctype in ("Outgoing Email Settings", "Support Email Settings",
		"Sales Email Settings", "Jobs Email Settings"):
		frappe.delete_doc("DocType", doctype)


import frappe

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']:
		account = frappe.new_doc("Email Account")
		mapping = {
			"email_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.is_global = 1

		account.insert()

	# support
	support = dict(frappe.db.sql("select field, value from tabSingles where doctype='Support Email Settings'"))
	if support and support['mail_server']:
		account = frappe.new_doc("Email Account")
		mapping = {
			"enable_incoming": "sync_support_mails",
			"email_id": "mail_login",
			"password": "mail_password",
			"pop3_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.is_global = 1

		account.insert()

	# 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))
		print source
		if source and  source.get('host'):
			account = frappe.new_doc("Email Account")
			mapping = {
				"enable_incoming": "extract_emails",
				"email_id": "username",
				"password": "password",
				"pop3_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.is_global = 1
			account.append_to = "Lead" if doctype=="Sales Email Settings" else "Job Applicant"

			account.insert()

	for doctype in ("Outgoing Email Settings", "Support Email Settings",
		"Sales Email Settings", "Jobs Email Settings"):
		frappe.delete_doc("DocType", doctype)


fix Mailbox migration patch