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 _("""""") % 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 _("""""") % 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"