[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - improved 'mailPassword' and 'registeredNotify' methods

Yvo Schubbe cvs-admin at zope.org
Mon Sep 3 07:03:47 UTC 2012


Log message for revision 127674:
  - improved 'mailPassword' and 'registeredNotify' methods

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
  U   Products.CMFDefault/trunk/Products/CMFDefault/RegistrationTool.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/mail_password.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2012-09-03 06:56:37 UTC (rev 127673)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2012-09-03 07:03:44 UTC (rev 127674)
@@ -4,6 +4,10 @@
 2.3.0 (unreleased)
 ------------------
 
+- RegistrationTool: Improved 'mailPassword' and 'registeredNotify' methods.
+  Mail templates can now be views. 'mail_password_response' is no longer
+  required, using the return value of 'mailPassword' is deprecated.
+
 - PropertiesTool: Fixed editing single properties.
 
 - browser views: Fixed zope.formlib 4.1 compatibility.

Modified: Products.CMFDefault/trunk/Products/CMFDefault/RegistrationTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/RegistrationTool.py	2012-09-03 06:56:37 UTC (rev 127673)
+++ Products.CMFDefault/trunk/Products/CMFDefault/RegistrationTool.py	2012-09-03 07:03:44 UTC (rev 127674)
@@ -144,7 +144,7 @@
                 context = aq_base(item).__of__(context)
         else:
             context = self
-        method = context.password_email
+        method = context.unrestrictedTraverse('password_email')
         kw = {'member': member, 'password': member.getPassword()}
 
         if getattr(aq_base(method), 'isDocTemp', 0):
@@ -155,7 +155,11 @@
         host = getUtility(IMailHost)
         host.send(mail_text)
 
-        return context.mail_password_response(self, REQUEST)
+        try:
+            # BBB: for CMF 2.2's mail_password script
+            return context.mail_password_response(self, REQUEST)
+        except AttributeError:
+            pass
 
     security.declarePublic('registeredNotify')
     def registeredNotify(self, new_member_id, password=None, REQUEST=None):
@@ -185,7 +189,7 @@
                 context = aq_base(item).__of__(context)
         else:
             context = self
-        method = context.registered_email
+        method = context.unrestrictedTraverse('registered_email')
         kw = {'member': member, 'password': password, 'email': email}
 
         if getattr(aq_base(method), 'isDocTemp', 0):

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/mail_password.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/mail_password.py	2012-09-03 06:56:37 UTC (rev 127673)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/mail_password.py	2012-09-03 07:03:44 UTC (rev 127674)
@@ -1,5 +1,10 @@
-## Script (Python) "mail_password"
 ##title=Mail a user's password
 ##parameters=
-REQUEST=context.REQUEST
-return context.portal_registration.mailPassword(REQUEST['userid'], REQUEST)
+from Products.CMFCore.utils import getUtilityByInterfaceName
+
+rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool')
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+REQUEST = context.REQUEST
+
+rtool.mailPassword(REQUEST['userid'], REQUEST)
+return REQUEST.RESPONSE.redirect(utool() + '/mail_password_response')

Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt	2012-09-03 06:56:37 UTC (rev 127673)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt	2012-09-03 07:03:44 UTC (rev 127674)
@@ -21,9 +21,6 @@
     ...         kw['ip'] = container.REQUEST['HTTP_X_FORWARDED_FOR']
     ...         return 'Reminder: %(member)s, %(password)s, %(ip)s' % kw
 
-    >>> def mail_password_response(*args):
-    ...     return 'done'
-
     >>> def registered_email(**kw):
     ...     return 'Welcome: %(member)s, %(password)s, %(email)s' % kw
 
@@ -44,14 +41,12 @@
     >>> sm.registerUtility(MembershipTool(), IMembershipTool)
     >>> rtool = sm.getUtility(IRegistrationTool)
     >>> rtool.password_email = PasswordEmail()
-    >>> rtool.mail_password_response = mail_password_response
     >>> rtool.registered_email = registered_email
     >>> app.REQUEST.environ['HTTP_X_FORWARDED_FOR'] = 'NNN.NNN.NNN.NNN'
 
-  mailPassword sends a password reminder and returns a response page::
+  mailPassword sends a password reminder::
 
     >>> rtool.mailPassword('foo', app.REQUEST)
-    'done'
 
     >>> getUtility(IMailHost).lastMessage
     'Reminder: foo, secret, NNN.NNN.NNN.NNN'



More information about the checkins mailing list