From 1b9f3a5b745b305141804d1000227d179aae599f Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Fri, 29 Jun 2012 17:22:33 +0530 Subject: [PATCH] [IMP/FIX] Added Strict value checker for the defaults and fetchmail logger fix bzr revid: jam@tinyerp.com-20120629115233-skml2xtp79xmxvyr --- addons/fetchmail/fetchmail.py | 12 ++++++------ addons/mail/mail_alias.py | 19 ++++++++++++++++++- addons/mail/mail_thread.py | 5 +++-- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py index cddcf642dc4..55923c3043a 100644 --- a/addons/fetchmail/fetchmail.py +++ b/addons/fetchmail/fetchmail.py @@ -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() diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index 064e9e93535..292b2f742cd 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -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 diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 84049c9473d..2e1d653d6b7 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -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: