[Erp5-report] r36982 jerome - in /erp5/trunk/products/ERP5: Tool/ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Jul 8 14:58:12 CEST 2010
Author: jerome
Date: Thu Jul 8 14:58:09 2010
New Revision: 36982
URL: http://svn.erp5.org?rev=36982&view=rev
Log:
Handle the case when the user requesting a password reset does not have an
email address
Modified:
erp5/trunk/products/ERP5/Tool/PasswordTool.py
erp5/trunk/products/ERP5/tests/testPasswordTool.py
Modified: erp5/trunk/products/ERP5/Tool/PasswordTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/PasswordTool.py?rev=36982&r1=36981&r2=36982&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/PasswordTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/PasswordTool.py [utf8] Thu Jul 8 14:58:09 2010
@@ -72,22 +72,33 @@ class PasswordTool(BaseTool):
if user_login is None:
user_login = REQUEST["user_login"]
- # check user exists
+ msg = None
+ # check user exists, and have an email
user_list = self.getPortalObject().acl_users.\
erp5_users.getUserByLogin(user_login)
if len(user_list) == 0:
msg = translateString("User ${user} does not exist.",
mapping={'user':user_login})
+ else:
+ # We use checked_permission to prevent errors when trying to acquire
+ # email from organisation
+ user = user_list[0]
+ email_value = user.getDefaultEmailValue(
+ checked_permission='Access content information')
+ if email_value is None or not email_value.asText():
+ msg = translateString(
+ "User ${user} does not have an email address, please contact site "
+ "administrator directly", mapping={'user':user_login})
+
+ if msg:
if REQUEST is not None:
parameter = urlencode(dict(portal_status_message=msg))
ret_url = '%s/login_form?%s' % \
(self.getPortalObject().absolute_url(),
parameter)
return REQUEST.RESPONSE.redirect( ret_url )
- else:
- return msg
+ return msg
- user = user_list[0].getObject()
# generate a random string
random_url = self._generateUUID()
parameter = urlencode(dict(reset_key=random_url))
Modified: erp5/trunk/products/ERP5/tests/testPasswordTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testPasswordTool.py?rev=36982&r1=36981&r2=36982&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testPasswordTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testPasswordTool.py [utf8] Thu Jul 8 14:58:09 2010
@@ -437,6 +437,40 @@ class TestPasswordTool(ERP5TypeTestCase)
self.tic()
self._assertUserExists('userZ ', 'newZ2')
+ def test_no_email_on_person(self):
+ person = self.portal.person_module.newContent(portal_type="Person",
+ reference="user",
+ password="password",)
+ assignment = person.newContent(portal_type='Assignment')
+ assignment.open()
+
+ transaction.commit()
+ self.tic()
+ self.logout()
+ ret = self.portal.portal_password.mailPasswordResetRequest(user_login='user')
+ self.assertEquals("User user does not have an email address, please contact"
+ " site administrator directly", str(ret))
+
+ def test_acquired_email_on_person(self):
+ organisation = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ default_email_text="organisation at example.com",)
+ person = self.portal.person_module.newContent(portal_type="Person",
+ reference="user",
+ password="password",
+ default_career_subordination_value=organisation)
+ assignment = person.newContent(portal_type='Assignment')
+ assignment.open()
+
+ transaction.commit()
+ self.tic()
+ self._assertUserExists('user', 'password')
+ self.logout()
+ ret = self.portal.portal_password.mailPasswordResetRequest(user_login='user')
+ self.assertEquals("User user does not have an email address, please contact"
+ " site administrator directly", str(ret))
+
+
class TestPasswordToolWithCRM(TestPasswordTool):
"""
Test reset of password
More information about the Erp5-report
mailing list