[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - fixed 'login_time' handling

Yvo Schubbe y.2011 at wcm-solutions.de
Thu Feb 24 12:00:01 EST 2011


Log message for revision 120565:
  - fixed 'login_time' handling

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py
  UU  Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2011-02-24 16:47:21 UTC (rev 120564)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2011-02-24 17:00:01 UTC (rev 120565)
@@ -4,6 +4,10 @@
 2.3.0-alpha (unreleased)
 ------------------------
 
+- Skins and browser views: Fixed 'login_time' handling.
+  Should be working with string and DateTime values because the MemberDataTool
+  settings might be inconsistent.
+
 - browser views: Added SettingsEditFormBase.
   This can be used for edit forms for global settings.
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py	2011-02-24 16:47:21 UTC (rev 120564)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py	2011-02-24 17:00:01 UTC (rev 120565)
@@ -223,10 +223,9 @@
         member = mtool.getAuthenticatedMember()
         now = DateTime()
         last_login = member.getProperty('login_time', None)
+        never_logged_in = str(last_login).startswith('2000/01/01')
         ptool = self._getTool('portal_properties')
-        is_first_login = (last_login == '2000/01/01' and
-                          ptool.getProperty('validate_email'))
-        if is_first_login:
+        if never_logged_in and ptool.getProperty('validate_email'):
             return self.first_login(member)
         else:
             member.setProperties(last_login_time=last_login, login_time=now)

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py	2011-02-24 16:47:21 UTC (rev 120564)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py	2011-02-24 17:00:01 UTC (rev 120565)
@@ -60,8 +60,9 @@
     """Utility class wrapping a member for display purposes"""
 
     def __init__(self, member, mtool):
-        login_time = member.getProperty('login_time')
-        self.login_time = '2000/01/01' and '---' or login_time.Date()
+        last_login = member.getProperty('login_time')
+        never_logged_in = str(last_login).startswith('2000/01/01')
+        self.login_time = never_logged_in and '---' or last_login.Date()
         self.name = member.getId()
         self.home = mtool.getHomeUrl(self.name, verifyPermission=0)
         self.email = member.getProperty('email')

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py	2011-02-24 16:47:21 UTC (rev 120564)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py	2011-02-24 17:00:01 UTC (rev 120565)
@@ -19,6 +19,7 @@
 from zope.component import getSiteManager
 from zope.publisher.browser import TestRequest
 from zope.publisher.interfaces.browser import IBrowserPublisher
+from DateTime.DateTime import DateTime
 
 from Products.CMFCore.tests.base.dummy import DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
@@ -32,6 +33,8 @@
 class DummyUser(DummyUser):
 
     def getProperty(self, attr):
+        if attr == 'login_time':
+            return DateTime('2000/01/01 00:00:00')
         return None
 
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py	2011-02-24 16:47:21 UTC (rev 120564)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py	2011-02-24 17:00:01 UTC (rev 120565)
@@ -30,10 +30,8 @@
     member = mtool.getAuthenticatedMember()
     now = context.ZopeTime()
     last_login = member.getProperty('login_time', None)
-    member.setProperties(last_login_time=last_login, login_time=now)
-    is_first_login = (last_login == '2000/01/01' and
-                      ptool.getProperty('validate_email'))
-    if is_first_login:
+    never_logged_in = str(last_login).startswith('2000/01/01')
+    if never_logged_in and ptool.getProperty('validate_email'):
         member.setProperties(last_login_time='1999/01/01', login_time=now)
         target = '%s/password_form' % portal_url
         context.REQUEST.RESPONSE.redirect(target)


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py
___________________________________________________________________
Deleted: svn:keywords
   - Id

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py	2011-02-24 16:47:21 UTC (rev 120564)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py	2011-02-24 17:00:01 UTC (rev 120565)
@@ -30,8 +30,9 @@
 items = []
 for member in batch_obj:
     member_id = member.getId()
-    login_time = member.getProperty('login_time')
-    member_login = login_time == '2000/01/01' and '---' or login_time.Date()
+    last_login = member.getProperty('login_time')
+    never_logged_in = str(last_login).startswith('2000/01/01')
+    member_login = never_logged_in and '---' or last_login.Date()
     member_home = mtool.getHomeUrl(member_id, verifyPermission=0)
     items.append( {'checkbox': 'cb_%s' % member_id,
                    'email': member.getProperty('email'),



More information about the checkins mailing list