diff options
| author | Denis Ledoux <dle@odoo.com> | 2015-02-09 17:58:28 +0100 |
|---|---|---|
| committer | Denis Ledoux <dle@odoo.com> | 2015-02-09 17:58:28 +0100 |
| commit | 534d4e3e07777dceeb756f0a5585e2f6cae99bac (patch) | |
| tree | b32ba5701f956e7a0fe2230fb7e714157a18fdad /addons | |
| parent | 675357b7d7b1beaf146861d690af0f81b209f8ce (diff) | |
| parent | a8fdc60b88fa6908b24b4c61bc7759df49325be2 (diff) | |
[MERGE] forward port of branch saas-3 up to a8fdc60
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/fetchmail/fetchmail.py | 47 | ||||
| -rw-r--r-- | addons/web/controllers/main.py | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 2 |
3 files changed, 29 insertions, 24 deletions
diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py index d0690520b0e..4caff929e07 100644 --- a/addons/fetchmail/fetchmail.py +++ b/addons/fetchmail/fetchmail.py @@ -39,6 +39,7 @@ from openerp import tools, api from openerp.tools.translate import _ _logger = logging.getLogger(__name__) +MAX_POP_MESSAGES = 50 class fetchmail_server(osv.osv): """Incoming POP/IMAP mail server account""" @@ -222,27 +223,31 @@ openerp_mailgate: "|/path/to/openerp-mailgate.py --host=localhost -u %(uid)d -p imap_server.logout() elif server.type == 'pop': try: - pop_server = server.connect() - (numMsgs, totalSize) = pop_server.stat() - pop_server.list() - for num in range(1, numMsgs + 1): - (header, msges, octets) = pop_server.retr(num) - msg = '\n'.join(msges) - res_id = None - try: - res_id = mail_thread.message_process(cr, uid, server.object_id.model, - msg, - save_original=server.original, - strip_attachments=(not server.attach), - context=context) - pop_server.dele(num) - except Exception: - _logger.exception('Failed to process mail from %s server %s.', server.type, server.name) - failed += 1 - if res_id and server.action_id: - action_pool.run(cr, uid, [server.action_id.id], {'active_id': res_id, 'active_ids': [res_id], 'active_model': context.get("thread_model", server.object_id.model)}) - cr.commit() - _logger.info("Fetched %d email(s) on %s server %s; %d succeeded, %d failed.", numMsgs, server.type, server.name, (numMsgs - failed), failed) + while True: + pop_server = server.connect() + (numMsgs, totalSize) = pop_server.stat() + pop_server.list() + for num in range(1, min(MAX_POP_MESSAGES, numMsgs) + 1): + (header, msges, octets) = pop_server.retr(num) + msg = '\n'.join(msges) + res_id = None + try: + res_id = mail_thread.message_process(cr, uid, server.object_id.model, + msg, + save_original=server.original, + strip_attachments=(not server.attach), + context=context) + pop_server.dele(num) + except Exception: + _logger.exception('Failed to process mail from %s server %s.', server.type, server.name) + failed += 1 + if res_id and server.action_id: + action_pool.run(cr, uid, [server.action_id.id], {'active_id': res_id, 'active_ids': [res_id], 'active_model': context.get("thread_model", server.object_id.model)}) + cr.commit() + if numMsgs < MAX_POP_MESSAGES: + break + pop_server.quit() + _logger.info("Fetched %d email(s) on %s server %s; %d succeeded, %d failed.", numMsgs, server.type, server.name, (numMsgs - failed), failed) except Exception: _logger.exception("General failure when trying to fetch mail from %s server %s.", server.type, server.name) finally: diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index c652e678a34..563d6a85084 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1240,7 +1240,7 @@ class Action(http.Controller): except Exception: action_id = 0 # force failed read - base_action = Actions.read([action_id], ['type'], request.context) + base_action = Actions.read([action_id], ['name', 'type'], request.context) if base_action: ctx = request.context action_type = base_action[0]['type'] @@ -1250,7 +1250,7 @@ class Action(http.Controller): ctx.update(additional_context) action = request.session.model(action_type).read([action_id], False, ctx) if action: - value = clean_action(action[0]) + value = clean_action(dict(action[0], **base_action[0])) return value @http.route('/web/action/run', type='json', auth="user") diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index da6605a08e9..6aba8c5dc50 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1160,7 +1160,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }, build_eval_context: function() { var a_dataset = this.dataset; - return new instance.web.CompoundContext(this._build_view_fields_values(), a_dataset.get_context()); + return new instance.web.CompoundContext(a_dataset.get_context(), this._build_view_fields_values()); }, }); |
