diff options
| author | Jigar Amin - OpenERP <jam@tinyerp.com> | 2012-06-29 15:52:18 +0530 |
|---|---|---|
| committer | Jigar Amin - OpenERP <jam@tinyerp.com> | 2012-06-29 15:52:18 +0530 |
| commit | f3db89aa8c98828c81602fd16a74d9c485d6151a (patch) | |
| tree | 48bf8de498e505f421feb1cf6f7923bce141ae14 /addons/mail/static/scripts/openerp_mailgate.py | |
| parent | 72cfa2e5248361b420c3f578104b64839c57668d (diff) | |
[FIX] Script to suppoert message_prcoess and message_catchall
bzr revid: jam@tinyerp.com-20120629102218-52ia76s2aablamro
Diffstat (limited to 'addons/mail/static/scripts/openerp_mailgate.py')
| -rwxr-xr-x | addons/mail/static/scripts/openerp_mailgate.py | 53 |
1 files changed, 45 insertions, 8 deletions
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: + custom_values = dict(eval(options.custom_values or {} )) + except: + import traceback + traceback.print_exc() + try: - email_parser.parse(msg_txt) + email_parser.parse(msg_txt, custom_values, options.save_original or False) except Exception: msg = '\n'.join([ 'parameters', |
