[IMP] fetchmail, on demand cron
enable a 3 micro hz cron only if needed as we want to lower the maximum cron frequency in default addons to 1 micro hz bzr revid: al@openerp.com-20130405024213-ll6t26j685rati5a
This commit is contained in:
parent
c532e3da9e
commit
aa753772ab
|
@ -90,7 +90,6 @@ class fetchmail_server(osv.osv):
|
||||||
'script': '/mail/static/scripts/openerp_mailgate.py',
|
'script': '/mail/static/scripts/openerp_mailgate.py',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def onchange_server_type(self, cr, uid, ids, server_type=False, ssl=False, object_id=False):
|
def onchange_server_type(self, cr, uid, ids, server_type=False, ssl=False, object_id=False):
|
||||||
port = 0
|
port = 0
|
||||||
values = {}
|
values = {}
|
||||||
|
@ -176,7 +175,7 @@ openerp_mailgate: "|/path/to/openerp-mailgate.py --host=localhost -u %(uid)d -p
|
||||||
|
|
||||||
def _fetch_mails(self, cr, uid, ids=False, context=None):
|
def _fetch_mails(self, cr, uid, ids=False, context=None):
|
||||||
if not ids:
|
if not ids:
|
||||||
ids = self.search(cr, uid, [('state','=','done')])
|
ids = self.search(cr, uid, [('state','=','done'),('type','in',['pop','imap'])])
|
||||||
return self.fetch_mail(cr, uid, ids, context=context)
|
return self.fetch_mail(cr, uid, ids, context=context)
|
||||||
|
|
||||||
def fetch_mail(self, cr, uid, ids, context=None):
|
def fetch_mail(self, cr, uid, ids, context=None):
|
||||||
|
@ -241,6 +240,26 @@ openerp_mailgate: "|/path/to/openerp-mailgate.py --host=localhost -u %(uid)d -p
|
||||||
server.write({'date': time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)})
|
server.write({'date': time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)})
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def cron_update(self, cr, uid, context=None):
|
||||||
|
# Enabled/Disable cron based on the number of 'done' server of type pop or imap
|
||||||
|
ids = self.search(cr, uid, [('state','=','done'),('type','in',['pop','imap'])])
|
||||||
|
try:
|
||||||
|
cron_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'fetchmail', 'ir_cron_mail_gateway_action')[1]
|
||||||
|
self.pool.get('ir.cron').write(cr, 1, [cron_id], {'active': bool(ids)})
|
||||||
|
except ValueError:
|
||||||
|
# Nevermind if default cron cannot be found
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create(self, cr, uid, values, context=None):
|
||||||
|
res = super(fetchmail_server, self).create(cr, uid, values, context=context)
|
||||||
|
self.cron_update(cr, uid, context=context)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def write(self, cr, uid, ids, values, context=None):
|
||||||
|
res = super(fetchmail_server, self).write(cr, uid, ids, values, context=context)
|
||||||
|
self.cron_update(cr, uid, context=context)
|
||||||
|
return res
|
||||||
|
|
||||||
class mail_mail(osv.osv):
|
class mail_mail(osv.osv):
|
||||||
_inherit = "mail.mail"
|
_inherit = "mail.mail"
|
||||||
_columns = {
|
_columns = {
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
<field name="model">fetchmail.server</field>
|
<field name="model">fetchmail.server</field>
|
||||||
<field name="function">_fetch_mails</field>
|
<field name="function">_fetch_mails</field>
|
||||||
<field name="args">()</field>
|
<field name="args">()</field>
|
||||||
|
<!-- Active flag is set on fetchmail_server.create/write -->
|
||||||
|
<field name="active" eval="False"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
Loading…
Reference in New Issue