[FIX] signup_url_for_action(), use `redirect` url parameter and bring back `action...
authorFabien Meghazi <fme@openerp.com>
Tue, 11 Mar 2014 20:53:37 +0000 (21:53 +0100)
committerFabien Meghazi <fme@openerp.com>
Tue, 11 Mar 2014 20:53:37 +0000 (21:53 +0100)
bzr revid: fme@openerp.com-20140311205337-9vasnqx5cudbk3f3

addons/auth_signup/res_users.py
addons/portal/mail_mail.py

index e91af65..32aa22b 100644 (file)
@@ -20,8 +20,8 @@
 ##############################################################################
 from datetime import datetime, timedelta
 import random
-from urllib import urlencode
 from urlparse import urljoin
+import werkzeug
 
 from openerp.addons.base.ir.ir_mail_server import MailDeliveryException
 from openerp.osv import osv, fields
@@ -53,7 +53,7 @@ class res_partner(osv.Model):
                                 (not partner.signup_expiration or dt <= partner.signup_expiration)
         return res
 
-    def _get_signup_url_for_action(self, cr, uid, ids, action='login', view_type=None, menu_id=None, res_id=None, model=None, context=None):
+    def _get_signup_url_for_action(self, cr, uid, ids, action=None, view_type=None, menu_id=None, res_id=None, model=None, context=None):
         """ generate a signup url for the given partner ids and action, possibly overriding
             the url state components (menu_id, id, view_type) """
         if context is None:
@@ -80,6 +80,8 @@ class res_partner(osv.Model):
                 continue        # no signup token, no user, thus no signup url!
 
             fragment = dict()
+            if action:
+                fragment['action'] = action
             if view_type:
                 fragment['view_type'] = view_type
             if menu_id:
@@ -89,7 +91,10 @@ class res_partner(osv.Model):
             if res_id:
                 fragment['id'] = res_id
 
-            res[partner.id] = urljoin(base_url, "/web/login?%s#%s" % (urlencode(query), urlencode(fragment)))
+            if fragment:
+                query['redirect'] = '/web#' + werkzeug.url_encode(fragment)
+
+            res[partner.id] = urljoin(base_url, "/web/login?%s" % werkzeug.url_encode(query))
 
         return res
 
index 18eb153..0fe2081 100644 (file)
@@ -39,7 +39,7 @@ class mail_mail(osv.Model):
         if partner and not partner.user_ids:
             contex_signup = dict(context, signup_valid=True)
             signup_url = partner_obj._get_signup_url_for_action(cr, SUPERUSER_ID, [partner.id],
-                                                                    action='login', model=mail.model, res_id=mail.res_id,
+                                                                    model=mail.model, res_id=mail.res_id,
                                                                     context=contex_signup)[partner.id]
             return _("""<span class='oe_mail_footer_access'><small>Access your messages and documents through <a style='color:inherit' href="%s">our Customer Portal</a></small></span>""") % signup_url
         else: