[Erp5-report] r45677 fx.algrain - /erp5/trunk/products/ERP5/Tool/PasswordTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Apr 26 09:55:34 CEST 2011


Author: fx.algrain
Date: Tue Apr 26 09:55:34 2011
New Revision: 45677

URL: http://svn.erp5.org?rev=45677&view=rev
Log:
Add possibility to specifify the sender.
Add possibility to use a notification message to send password recovery url.
Keeps compatibility with older usages. 

Modified:
    erp5/trunk/products/ERP5/Tool/PasswordTool.py

Modified: erp5/trunk/products/ERP5/Tool/PasswordTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/PasswordTool.py?rev=45677&r1=45676&r2=45677&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/PasswordTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/PasswordTool.py [utf8] Tue Apr 26 09:55:34 2011
@@ -96,10 +96,17 @@ class PasswordTool(BaseTool):
     self._password_request_dict[random_url] = (user_login, expiration_date)
     return url
 
-  def mailPasswordResetRequest(self, user_login=None, REQUEST=None):
+  def mailPasswordResetRequest(self, user_login=None, REQUEST=None, 
+                              notification_message=None, sender=None):
     """
     Create a random string and expiration date for request
-    """
+    Parameters:
+    user_login -- Reference of the user to send password reset link
+    REQUEST -- Request object
+    notification_message -- Notification Message Document used to build the email. 
+                            As default, a standart text will be used.
+    sender -- Sender (Person or Organisation) of the email.
+            As default, the default email address will be used"""
     if REQUEST is None:
       REQUEST = get_request()
 
@@ -158,23 +165,35 @@ class PasswordTool(BaseTool):
     self._password_request_dict[random_url] = (user_login, expiration_date)
 
     # send mail
-    subject = translateString("[${instance_name}] Reset of your password",
-        mapping={'instance_name': self.getPortalObject().getTitle()})
-    subject = subject.translate()
-    message = translateString("\nYou requested to reset your ${instance_name}"\
-              " account password.\n\n" \
-              "Please copy and paste the following link into your browser: \n"\
-              "${reset_password_link}\n\n" \
-              "Please note that this link will be valid only one time, until "\
-              "${expiration_date}.\n" \
-              "After this date, or after having used this link, you will have to make " \
-              "a new request\n\n" \
-              "Thank you",
-              mapping={'instance_name':self.getPortalObject().getTitle(),
-                       'reset_password_link':url,
-                       'expiration_date':expiration_date})
-    message = message.translate()
-    self.getPortalObject().portal_notifications.sendMessage(sender=None, recipient=[user,], subject=subject, message=message)
+    message_dict = {'instance_name':self.getPortalObject().getTitle(),
+                    'reset_password_link':url,
+                    'expiration_date':expiration_date}
+
+    if notification_message is None:
+      subject = translateString("[${instance_name}] Reset of your password",
+          mapping={'instance_name': self.getPortalObject().getTitle()})
+      subject = subject.translate()
+      message = translateString("\nYou requested to reset your ${instance_name}"\
+                " account password.\n\n" \
+                "Please copy and paste the following link into your browser: \n"\
+                "${reset_password_link}\n\n" \
+                "Please note that this link will be valid only one time, until "\
+                "${expiration_date}.\n" \
+                "After this date, or after having used this link, you will have to make " \
+                "a new request\n\n" \
+                "Thank you",
+                mapping=message_dict)
+      message = message.translate()
+    else:
+      subject = notification_message.getTitle()
+      if notification_message.getContentType() == "text/html":
+        message = notification_message.asEntireHTML(substitution_method_parameter_dict=message_dict)
+      else:
+        message = notification_message.asText(substitution_method_parameter_dict=message_dict)
+
+    self.getPortalObject().portal_notifications.sendMessage(sender=sender, recipient=[user,],
+                                                            subject=subject, message=message)
+                                                            
     if REQUEST is not None:
       msg = translateString("An email has been sent to you.")
       parameter = urlencode(dict(portal_status_message=msg))



More information about the Erp5-report mailing list