diff MoinMoin/user.py @ 4629:554e1d780e3b

fixed anon session detection, optimized trail code
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Sat, 07 Mar 2009 19:42:10 +0100
parents 5d94d48eb350
children 83390406fc5c
line wrap: on
line diff
--- a/MoinMoin/user.py	Sat Mar 07 19:10:05 2009 +0100
+++ b/MoinMoin/user.py	Sat Mar 07 19:42:10 2009 +0100
@@ -329,7 +329,6 @@
 
         # attrs not saved to profile
         self._request = request
-        self._trail = []
 
         # we got an already authenticated username:
         check_password = None
@@ -475,9 +474,6 @@
         if -24 <= self.tz_offset and self.tz_offset <= 24:
             self.tz_offset = self.tz_offset * 3600
 
-        # clear trail
-        self._trail = []
-
         if not self.disabled:
             self.valid = 1
 
@@ -877,7 +873,7 @@
     # Trail
 
     def _wantTrail(self):
-        return (not self.valid and self._request.session.is_stored  # anon session
+        return (not self.valid and self._request.cfg.cookie_lifetime[0]  # anon sessions enabled
                 or self.valid and (self.show_page_trail or self.remember_last_visit))  # logged-in session
 
     def addTrail(self, page):
@@ -886,9 +882,6 @@
         @param page: the page (object) to add to the trail
         """
         if self._wantTrail():
-            # load trail if not known
-            self.getTrail()
-
             pagename = page.page_name
             # Add only existing pages that the user may read
             if not (page.exists() and self._request.user.may.read(pagename)):
@@ -898,20 +891,18 @@
             if self._cfg.interwikiname:
                 pagename = self._interWikiName(pagename)
 
+            trail = self._request.session.get('trail', [])
+
             # Don't append tail to trail ;)
-            if self._trail and self._trail[-1] == pagename:
+            if trail and trail[-1] == pagename:
                 return
 
             # Append new page, limiting the length
-            self._trail = [p for p in self._trail if p != pagename]
-            self._trail = self._trail[-(self._cfg.trail_size-1):]
-            self._trail.append(pagename)
-            self.saveTrail()
-
-    def saveTrail(self):
-        """ Save trail into session """
-        if not self._request.session.is_new:
-            self._request.session['trail'] = self._trail
+            trail = [p for p in trail if p != pagename]
+            pagename_stripped = pagename.strip()
+            if pagename_stripped:
+                trail.append(pagename_stripped)
+            self._request.session['trail'] = trail[-(self._cfg.trail_size-1):]
 
     def getTrail(self):
         """ Return list of recently visited pages.
@@ -919,13 +910,11 @@
         @rtype: list
         @return: pages in trail
         """
-        if not self._trail and self._wantTrail():
+        if self._wantTrail():
             trail = self._request.session.get('trail', [])
-            trail = [t.strip() for t in trail]
-            trail = [t for t in trail if t]
-            self._trail = trail[-self._cfg.trail_size:]
-
-        return self._trail
+        else:
+            trail = []
+        return trail
 
     # -----------------------------------------------------------------
     # Other