diff --git a/addons/mail/mail_mail.py b/addons/mail/mail_mail.py index 9811fcd6aef..65970265ce3 100644 --- a/addons/mail/mail_mail.py +++ b/addons/mail/mail_mail.py @@ -149,19 +149,9 @@ class mail_mail(osv.Model): link to action_mail_redirect action that will redirect to doc or Inbox """ if partner and partner.user_ids: base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') - # the parameters to encode for the query and fragment part of url - query = {'db': cr.dbname} - fragment = { - 'login': partner.user_ids[0].login, - 'action': 'mail.action_mail_redirect', - } - if mail.notification: - fragment['message_id'] = mail.mail_message_id.id - elif mail.model and mail.res_id: - fragment.update(model=mail.model, res_id=mail.res_id) - - url = urljoin(base_url, "/web?%s#%s" % (urlencode(query), urlencode(fragment))) - return _("""Access your messages and documents in OpenERP""") % url + mail_model = mail.model or 'mail.thread' + url = urljoin(base_url, self.pool[mail_model]._get_access_link(cr, uid, mail, partner, context=context)) + return _("""Access your messages and documents in Odoo""") % url else: return None diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index d2dcef4d85e..8cb735b047f 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -35,6 +35,7 @@ import socket import time import xmlrpclib from email.message import Message +from urllib import urlencode from openerp import tools from openerp import SUPERUSER_ID @@ -641,6 +642,20 @@ class mail_thread(osv.AbstractModel): }) return action + def _get_access_link(self, cr, uid, mail, partner, context=None): + # the parameters to encode for the query and fragment part of url + query = {'db': cr.dbname} + fragment = { + 'login': partner.user_ids[0].login, + 'action': 'mail.action_mail_redirect', + } + if mail.notification: + fragment['message_id'] = mail.mail_message_id.id + elif mail.model and mail.res_id: + fragment.update(model=mail.model, res_id=mail.res_id) + + return "/web?%s#%s" % (urlencode(query), urlencode(fragment)) + #------------------------------------------------------ # Email specific #------------------------------------------------------ diff --git a/addons/website_forum/models/forum.py b/addons/website_forum/models/forum.py index b1de4c001a5..8d56d416223 100644 --- a/addons/website_forum/models/forum.py +++ b/addons/website_forum/models/forum.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- -import openerp +from urlparse import urljoin +import openerp from openerp import SUPERUSER_ID from openerp.addons.website.models.website import slug from openerp.osv import osv, fields @@ -272,6 +273,11 @@ class Post(osv.Model): cr.execute("""UPDATE forum_post SET views = views+1 WHERE id IN %s""", (tuple(ids),)) return True + def _get_access_link(self, cr, uid, mail, partner, context=None): + post = self.pool['forum.post'].browse(cr, uid, mail.res_id, context=context) + res_id = post.parent_id and "%s#answer-%s" % (post.parent_id.id, post.id) or post.id + return "/forum/%s/question/%s" % (post.forum_id.id, res_id) + class PostReason(osv.Model): _name = "forum.post.reason"