diff --git a/fetchmail_attach_from_folder/model/fetchmail_server.py b/fetchmail_attach_from_folder/model/fetchmail_server.py index fc6c709f3..f584f44fe 100644 --- a/fetchmail_attach_from_folder/model/fetchmail_server.py +++ b/fetchmail_attach_from_folder/model/fetchmail_server.py @@ -24,6 +24,7 @@ import base64 import simplejson from lxml import etree from openerp import models, fields, api, exceptions +from openerp.tools.safe_eval import safe_eval from openerp.tools.translate import _ from openerp.tools.misc import UnquoteEvalContext _logger = logging.getLogger(__name__) @@ -69,7 +70,8 @@ class fetchmail_server(models.Model): connection = this.connect() for folder in this.folder_ids.filtered('active'): - this.handle_folder(connection, folder) + this.with_context(safe_eval(folder.context or '{}'))\ + .handle_folder(connection, folder) connection.close() return super(fetchmail_server, self).fetch_mail( @@ -218,6 +220,15 @@ class fetchmail_server(models.Model): connection = this.connect() connection.select() for folder in this.folder_ids.filtered('active'): + try: + folder_context = safe_eval(folder.context or '{}') + except Exception, e: + raise exceptions.ValidationError( + _('Invalid context "%s": %s') % (folder.context, e)) + if not isinstance(folder_context, dict): + raise exceptions.ValidationError( + _('Context "%s" is not a dictionary.') % + folder.context) if connection.select(folder.path)[0] != 'OK': raise exceptions.ValidationError( _('Mailbox %s not found!') % folder.path) diff --git a/fetchmail_attach_from_folder/model/fetchmail_server_folder.py b/fetchmail_attach_from_folder/model/fetchmail_server_folder.py index 7ea7ef3bb..035e203a6 100644 --- a/fetchmail_attach_from_folder/model/fetchmail_server_folder.py +++ b/fetchmail_attach_from_folder/model/fetchmail_server_folder.py @@ -86,6 +86,10 @@ class fetchmail_server_folder(models.Model): domain = fields.Char( 'Domain', help='Fill in a search filter to narrow down objects to match') + context = fields.Char( + 'Context', + help=('Context that is passed during mail processing. Can be used to ' + 'set default values.')) msg_state = fields.Selection( [ ('sent', 'Sent'), diff --git a/fetchmail_attach_from_folder/view/fetchmail_server.xml b/fetchmail_attach_from_folder/view/fetchmail_server.xml index e5160cc8a..09bcd8a77 100644 --- a/fetchmail_attach_from_folder/view/fetchmail_server.xml +++ b/fetchmail_attach_from_folder/view/fetchmail_server.xml @@ -45,6 +45,7 @@ +