From 7d0571a8030935536f4c7e189249a87983f50929 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 11 Mar 2016 15:00:48 +0530 Subject: [PATCH] [fix] email autosuggest should fallback to user --- frappe/email/__init__.py | 22 ++++++++++--------- .../public/js/frappe/views/communication.js | 7 +++--- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/frappe/email/__init__.py b/frappe/email/__init__.py index 3867f5470c..fdbfb0c5d2 100644 --- a/frappe/email/__init__.py +++ b/frappe/email/__init__.py @@ -28,17 +28,19 @@ def sendmail_to_system_managers(subject, content): send(get_email(get_system_managers(), None, content, subject)) @frappe.whitelist() -def get_contact_list(): +def get_contact_list(doctype, fieldname, txt): """Returns contacts (from autosuggest)""" - cond = ['`%s` like "%s%%"' % (frappe.db.escape(f), - frappe.db.escape(frappe.form_dict.get('txt'))) for f in frappe.form_dict.get('where').split(',')] - cl = frappe.db.sql("select `%s` from `tab%s` where %s" % ( - frappe.db.escape(frappe.form_dict.get('select')) - ,frappe.db.escape(frappe.form_dict.get('from')) - ,' OR '.join(cond) - ) - ) - frappe.response['cl'] = filter(None, [c[0] for c in cl]) + txt = txt.replace('%', '') + + try: + return filter(None, frappe.db.sql_list('select `{0}` from `tab{1}` where `{0}` like %s'.format(fieldname, doctype), + '%' + txt + '%')) + except Exception, e: + if e.args[0]==1146: + # no Contact, use User + return filter(None, frappe.db.sql_list('select email from tabUser where email like %s', ('%' + txt + '%'))) + else: + raise def get_system_managers(): return frappe.db.sql_list("""select parent FROM tabUserRole diff --git a/frappe/public/js/frappe/views/communication.js b/frappe/public/js/frappe/views/communication.js index 29520652da..027d9e39e7 100644 --- a/frappe/public/js/frappe/views/communication.js +++ b/frappe/public/js/frappe/views/communication.js @@ -488,15 +488,14 @@ frappe.views.CommunicationComposer = Class.extend({ return frappe.call({ method:'frappe.email.get_contact_list', args: { - 'select': "email_id", - 'from': "Contact", - 'where': "email_id", + 'fieldname': "email_id", + 'doctype': "Contact", 'txt': extractLast(request.term).value || '%' }, quiet: true, callback: function(r) { response($.ui.autocomplete.filter( - r.cl || [], extractLast(request.term))); + r.message || [], extractLast(request.term))); } }); },