[IMP/FIX] Added Strict value checker for the defaults and fetchmail logger fix

bzr revid: jam@tinyerp.com-20120629115233-skml2xtp79xmxvyr
This commit is contained in:
Jigar Amin - OpenERP 2012-06-29 17:22:33 +05:30
parent b3c2a5e273
commit 1b9f3a5b74
3 changed files with 27 additions and 9 deletions

View File

@ -151,7 +151,7 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS
connection = server.connect()
server.write({'state':'done'})
except Exception, e:
logger.exception("Failed to connect to %s server %s", server.type, server.name)
_logger.exception("Failed to connect to %s server %s", server.type, server.name)
raise osv.except_osv(_("Connection test failed!"), _("Here is what we got instead:\n %s") % tools.ustr(e))
finally:
try:
@ -177,7 +177,7 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS
mail_thread = self.pool.get('mail.thread')
action_pool = self.pool.get('ir.actions.server')
for server in self.browse(cr, uid, ids, context=context):
logger.info('start checking for new emails on %s server %s', server.type, server.name)
_logger.info('start checking for new emails on %s server %s', server.type, server.name)
context.update({'fetchmail_server_id': server.id, 'server_type': server.type})
count = 0
imap_server = False
@ -198,9 +198,9 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS
imap_server.store(num, '+FLAGS', '\\Seen')
cr.commit()
count += 1
logger.info("fetched/processed %s email(s) on %s server %s", count, server.type, server.name)
_logger.info("fetched/processed %s email(s) on %s server %s", count, server.type, server.name)
except Exception, e:
logger.exception("Failed to fetch mail from %s server %s", server.type, server.name)
_logger.exception("Failed to fetch mail from %s server %s", server.type, server.name)
finally:
if imap_server:
imap_server.close()
@ -222,9 +222,9 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS
action_pool.run(cr, uid, [server.action_id.id], {'active_id': res_id, 'active_ids':[res_id]})
pop_server.dele(num)
cr.commit()
logger.info("fetched/processed %s email(s) on %s server %s", numMsgs, server.type, server.name)
_logger.info("fetched/processed %s email(s) on %s server %s", numMsgs, server.type, server.name)
except Exception, e:
logger.exception("Failed to fetch mail from %s server %s", server.type, server.name)
_logger.exception("Failed to fetch mail from %s server %s", server.type, server.name)
finally:
if pop_server:
pop_server.quit()

View File

@ -67,12 +67,29 @@ class mail_alias(osv.Model):
}
_defaults = {
'alias_defaults': '{}',
'alias_user_id': lambda s,c,u,ctx: u
'alias_user_id': lambda self,cr,uid, context: uid
}
_sql_constraints = [
('mailbox_uniq', 'UNIQUE(alias_name)', 'Unfortunately this mail alias is already used, please choose a unique one')
]
def _check_alias_defaults(self, cr, uid, ids, context=None):
"""
Strick constraints checking for the alias defaults values.
it must follow the python dict format. So message_catachall
will not face any issue.
"""
for record in self.browse(cr, uid, ids, context=context):
try:
dict(eval(record.alias_defaults))
return True
except:
return False
_constraints = [
(_check_alias_defaults, "Default Values are in wrong format.\nIt must be in python dictionary format e.g.{'field_name': 'value' or {}}", ['alias_defaults']),
]
def name_get(self, cr, uid, ids, context=None):
"""
Return the mail alias display alias_name, inclusing the Implicit and dynamic

View File

@ -499,7 +499,7 @@ class mail_thread(osv.osv):
else raise Exception so that mailgate script will reject the mail and
send notification mail sender that this mailbox does not exist so your mail have been rejected.
"""
alias_pool = self.pool.get('mail.alias')
user_pool = self.pool.get('res.users')
mail_compose_pool = self.pool.get('mail.compose.message')
@ -516,8 +516,9 @@ class mail_thread(osv.osv):
if alias_ids:
alias_id = alias_pool.browse(cr, uid, alias_ids[0], context)
user_id = self._get_user( cr, uid, alias_id, context)
alias_defaults = dict(eval(alias_id.alias_defaults or {}))
self.message_process(cr, user_id, alias_id.alias_model_id.model, message,
custom_values = alias_id.alias_defaults or {},
custom_values = alias_defaults,
thread_id = alias_id.alias_force_thread_id or False,
context=context)
else: