diff options
| author | Atik Agewan (OpenERP) <aag@tinyerp.com> | 2011-10-05 10:29:13 +0530 |
|---|---|---|
| committer | Atik Agewan (OpenERP) <aag@tinyerp.com> | 2011-10-05 10:29:13 +0530 |
| commit | 2f9b990ac282fab59b116a8a2d2fa0c572cd6b23 (patch) | |
| tree | 71757c88b1666e269e9dba88ad4912660819185b /addons/fetchmail | |
| parent | 56c5b496baee8455e349695fa0361d33bdc2ccfe (diff) | |
| parent | 69b916b144f8ea54e3710df8335dac991c1dc598 (diff) | |
[MERGE]: Merge with lp:openobject-addons
bzr revid: aag@tinyerp.com-20111005045913-fjnmh8j7f12etdzy
Diffstat (limited to 'addons/fetchmail')
| -rw-r--r-- | addons/fetchmail/fetchmail.py | 58 | ||||
| -rw-r--r-- | addons/fetchmail/fetchmail_view.xml | 25 |
2 files changed, 52 insertions, 31 deletions
diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py index e7f7250458b..d1e23f49166 100644 --- a/addons/fetchmail/fetchmail.py +++ b/addons/fetchmail/fetchmail.py @@ -25,6 +25,14 @@ from imaplib import IMAP4 from imaplib import IMAP4_SSL from poplib import POP3 from poplib import POP3_SSL +try: + import cStringIO as StringIO +except ImportError: + import StringIO + +import zipfile +import base64 +import addons import netsvc from osv import osv, fields @@ -46,11 +54,12 @@ class fetchmail_server(osv.osv): ('draft', 'Not Confirmed'), ('done', 'Confirmed'), ], 'State', select=True, readonly=True), - 'server' : fields.char('Server Name', size=256, required=True, readonly=True, help="Hostname or IP of the mail server", states={'draft':[('readonly', False)]}), - 'port' : fields.integer('Port', required=True, readonly=True, states={'draft':[('readonly', False)]}), + 'server' : fields.char('Server Name', size=256, readonly=True, help="Hostname or IP of the mail server", states={'draft':[('readonly', False)]}), + 'port' : fields.integer('Port', readonly=True, states={'draft':[('readonly', False)]}), 'type':fields.selection([ ('pop', 'POP Server'), ('imap', 'IMAP Server'), + ('local', 'Local Server'), ], 'Server Type', select=True, required=True, readonly=False), 'is_ssl':fields.boolean('SSL/TLS', help="Connections are encrypted with SSL/TLS through a dedicated port (default: IMAPS=993, POP3S=995)"), 'attach':fields.boolean('Keep Attachments', help="Whether attachments should be downloaded. " @@ -58,8 +67,8 @@ class fetchmail_server(osv.osv): 'original':fields.boolean('Keep Original', help="Whether a full original copy of each email should be kept for reference" "and attached to each processed message. This will usually double the size of your message database."), 'date': fields.datetime('Last Fetch Date', readonly=True), - 'user' : fields.char('Username', size=256, required=True, readonly=True, states={'draft':[('readonly', False)]}), - 'password' : fields.char('Password', size=1024, required=True, readonly=True, states={'draft':[('readonly', False)]}), + 'user' : fields.char('Username', size=256, readonly=True, states={'draft':[('readonly', False)]}), + 'password' : fields.char('Password', size=1024, readonly=True, states={'draft':[('readonly', False)]}), 'action_id':fields.many2one('ir.actions.server', 'Server Action', help="Optional custom server action to trigger for each incoming mail, " "on the record that was created or updated by this mail"), 'object_id': fields.many2one('ir.model', "Create a New Record", required=True, help="Process each incoming mail as part of a conversation " @@ -69,6 +78,8 @@ class fetchmail_server(osv.osv): 'priority': fields.integer('Server Priority', readonly=True, states={'draft':[('readonly', False)]}, help="Defines the order of processing, " "lower values mean higher priority"), 'message_ids': fields.one2many('mail.message', 'fetchmail_server_id', 'Messages', readonly=True), + 'configuration' : fields.text('Configuration'), + 'script' : fields.char('Script', readonly=True, size=64), } _defaults = { 'state': "draft", @@ -76,31 +87,36 @@ class fetchmail_server(osv.osv): 'active': True, 'priority': 5, 'attach': True, + 'script': '/mail/static/scripts/openerp_mailgate.py', } - def default_get(self, cr, uid, fields, context=None): - if context is None: - context = {} - - result = super(fetchmail_server, self).default_get(cr, uid, fields, context=context) - - model = context.pop('fetchmail_model', False) or False - if isinstance(model, basestring): - model_id = self.pool.get('ir.model').search(cr, uid, [('model', '=', model)], context=context) - result.update( - object_id = model_id[0], - ) - - return result - - def onchange_server_type(self, cr, uid, ids, server_type=False, ssl=False): + def onchange_server_type(self, cr, uid, ids, server_type=False, ssl=False, object_id=False): port = 0 + values = {} if server_type == 'pop': port = ssl and 995 or 110 elif server_type == 'imap': port = ssl and 993 or 143 - return {'value':{'port':port}} + else: + values['server'] = '' + values['port'] = port + + conf = { + 'dbname' : cr.dbname, + 'uid' : uid, + 'model' : 'MODELNAME', + } + if object_id: + m = self.pool.get('ir.model') + r = m.read(cr,uid,[object_id],['model']) + conf['model']=r[0]['model'] + values['configuration'] = """Use the below script with the following command line options with your Mail Transport Agent (MTA) + +openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOSTNAME --port=PORT +""" % conf + + return {'value':values} def set_draft(self, cr, uid, ids, context=None): self.write(cr, uid, ids , {'state':'draft'}) diff --git a/addons/fetchmail/fetchmail_view.xml b/addons/fetchmail/fetchmail_view.xml index 61992629b2a..4cd182c0818 100644 --- a/addons/fetchmail/fetchmail_view.xml +++ b/addons/fetchmail/fetchmail_view.xml @@ -25,29 +25,34 @@ <field name="type">form</field> <field name="arch" type="xml"> <form string="Incoming Mail Server"> - <group col="6" colspan="4"> + <group colspan="4" col="6"> <field name="name" select="1"/> - <field name="type" select="1" on_change="onchange_server_type(type, is_ssl)"/> + <field name="type" select="1" on_change="onchange_server_type(type, is_ssl, object_id)"/> <field name="date" select="1"/> </group> <notebook colspan="4"> <page string="Server & Login"> - <group col="4" colspan="2"> + <group col="4" colspan="2" attrs="{'invisible' : [('type', '=', 'local')]}"> <separator string="Server Information" colspan="2"/> - <field name="server" colspan="4"/> - <field name="port" /> + <field name="server" colspan="4" attrs="{'required' : [('type', '!=', 'local')]}" /> + <field name="port" required="1" attrs="{'required' : [('type', '!=', 'local')]}" /> <field name="is_ssl" select="1" on_change="onchange_server_type(type, is_ssl)"/> </group> - <group col="2" colspan="2"> + <group col="2" colspan="2" attrs="{'invisible' : [('type', '=', 'local')]}"> <separator string="Login Information" colspan="2"/> - <field name="user" /> - <field name="password" password="True" /> + <field name="user" attrs="{'required' : [('type', '!=', 'local')]}"/> + <field name="password" password="True" attrs="{'required' : [('type', '!=', 'local')]}"/> </group> <group col="2" colspan="2"> <separator string="Actions to Perform on Incoming Mails" colspan="2"/> - <field name="object_id"/> + <field name="object_id" on_change="onchange_server_type(type, is_ssl, object_id)"/> <field name="action_id" groups="base.group_extended"/> </group> + <group attrs="{'invisible' : [('type', '!=', 'local')]}" colspan="4" col="4"> + <separator string="Configuration" colspan="4"/> + <field name="configuration" colspan="4"/> + <field name="script" colspan="4" widget="url"/> + </group> </page> <page string="Advanced" groups="base.group_extended"> <group colspan="2" col="2"> @@ -59,7 +64,7 @@ </group> </page> </notebook> - <group col="6" colspan="4"> + <group colspan="4" col="6" attrs="{'invisible' : [('type', '=', 'local')]}"> <field name="state"/> <button string="Reset Confirmation" type="object" name="set_draft" icon="gtk-convert" states="done"/> <button string="Test & Confirm" type="object" name="button_confirm_login" states="draft" icon="gtk-apply"/> |
