diff --git a/fetchmail_attach_from_folder/model/fetchmail_server.py b/fetchmail_attach_from_folder/model/fetchmail_server.py
index fc6c709f3..a7dfe2f1f 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 @@
+