From f3db89aa8c98828c81602fd16a74d9c485d6151a Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Fri, 29 Jun 2012 15:52:18 +0530 Subject: [PATCH 1/2] [FIX] Script to suppoert message_prcoess and message_catchall bzr revid: jam@tinyerp.com-20120629102218-52ia76s2aablamro --- addons/mail/mail_thread.py | 2 +- .../mail/static/scripts/openerp_mailgate.py | 53 ++++++++++++++++--- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 72993e8ce53..84049c9473d 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -523,7 +523,7 @@ class mail_thread(osv.osv): else: #if Mail box for the intended Mail Alias then give logger warning _logger.warning("No Mail Alias Found for the name '%s'."%(alias_name)) - #raise + raise return True #------------------------------------------------------ diff --git a/addons/mail/static/scripts/openerp_mailgate.py b/addons/mail/static/scripts/openerp_mailgate.py index cb291473107..9d046027b6e 100755 --- a/addons/mail/static/scripts/openerp_mailgate.py +++ b/addons/mail/static/scripts/openerp_mailgate.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:#!/usr/bin/env python # -*- coding: utf-8 -*- ############################################################################## # @@ -94,19 +94,33 @@ class RPCProxy(object): return self.rpc.execute(self.dbname, self.user_id, self.passwd, *request, **kwargs) class EmailParser(object): - def __init__(self, uid, password, dbname, host, port): + def __init__(self, uid, password, dbname, host, port, model=False, email_default=False): self.rpc = RPCProxy(uid, password, host=host, port=port, dbname=dbname) + if model: + try: + self.model_id = int(model) + self.model = str(model) + except: + self.model_id = self.rpc('ir.model', 'search', [('model', '=', model)])[0] + self.model = str(model) + self.email_default = email_default - def parse(self, message): + def parse(self, method, message, custom_values=None, save_original=None): # pass message as bytes because we don't know its encoding until we parse its headers # and hence can't convert it to utf-8 for transport - res_id = self.rpc('mail.thread', 'message_catchall', xmlrpclib.Binary(message)) + res_id = self.rpc('mail.thread', + method, + self.model, + xmlrpclib.Binary(message), + custom_values or {}, + save_original or False) def configure_parser(): parser = optparse.OptionParser(usage='usage: %prog [options]', version='%prog v1.1') group = optparse.OptionGroup(parser, "Note", - "This program parse a mail from standard input and communicate ") + "This program parse a mail from standard input and communicate " + "with the OpenERP server for case management in the CRM module.") parser.add_option_group(group) parser.add_option("-u", "--user", dest="userid", help="ID of the user in OpenERP", @@ -114,6 +128,12 @@ def configure_parser(): parser.add_option("-p", "--password", dest="password", help="Password of the user in OpenERP", default=config.OPENERP_DEFAULT_PASSWORD) + parser.add_option("-o", "--model", dest="model", + help="Name or ID of crm model", + default="crm.lead") + parser.add_option("-m", "--default", dest="default", + help="Default eMail in case of any trouble.", + default=None) parser.add_option("-d", "--dbname", dest="dbname", help="Database name (default: %default)", default=config.OPENERP_DEFAULT_DATABASE) @@ -123,6 +143,13 @@ def configure_parser(): parser.add_option("--port", dest="port", help="Port of the OpenERP Server", default=config.OPENERP_PORT) + parser.add_option("--custom-values", dest="custom_values", + help="Add Custom Values to the object", + default=None) + parser.add_option("-s", dest="save_original", + action="store_true", + help="Attach a copy of original email to the message entry", + default=False) return parser @@ -132,16 +159,26 @@ def main(): """ parser = configure_parser() (options, args) = parser.parse_args() - - + method = "message_process" email_parser = EmailParser(options.userid, options.password, + options.model, + options.default, dbname=options.dbname, host=options.host, port=options.port) msg_txt = sys.stdin.read() + custom_values = {} + if not options.model: + method = "message_catchall" try: - email_parser.parse(msg_txt) + custom_values = dict(eval(options.custom_values or {} )) + except: + import traceback + traceback.print_exc() + + try: + email_parser.parse(msg_txt, custom_values, options.save_original or False) except Exception: msg = '\n'.join([ 'parameters', From 58f095d89df5d7d4294629dbafbae46f07e87ff4 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Fri, 29 Jun 2012 16:10:21 +0530 Subject: [PATCH 2/2] [FIX] mailgate script bzr revid: jam@tinyerp.com-20120629104021-bdacv1hwqwnglj7a --- addons/mail/static/scripts/openerp_mailgate.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/addons/mail/static/scripts/openerp_mailgate.py b/addons/mail/static/scripts/openerp_mailgate.py index 9d046027b6e..64dafc56785 100755 --- a/addons/mail/static/scripts/openerp_mailgate.py +++ b/addons/mail/static/scripts/openerp_mailgate.py @@ -1,4 +1,4 @@ -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:#!/usr/bin/env python +#!/usr/bin/env python # -*- coding: utf-8 -*- ############################################################################## # @@ -157,28 +157,29 @@ def main(): """ Receive the email via the stdin and send it to the OpenERP Server """ + parser = configure_parser() (options, args) = parser.parse_args() method = "message_process" email_parser = EmailParser(options.userid, options.password, - options.model, - options.default, - dbname=options.dbname, - host=options.host, - port=options.port) + options.dbname, + options.host, + options.port, + model=options.model, + email_default= options.default) msg_txt = sys.stdin.read() custom_values = {} if not options.model: method = "message_catchall" try: - custom_values = dict(eval(options.custom_values or {} )) + custom_values = dict(eval(options.custom_values or "{}" )) except: import traceback traceback.print_exc() try: - email_parser.parse(msg_txt, custom_values, options.save_original or False) + email_parser.parse(method, msg_txt, custom_values, options.save_original or False) except Exception: msg = '\n'.join([ 'parameters',