diff MoinMoin/user.py @ 1935:740d9939ffe9

use session object to store page trail (even for anon users, if anon sessions are enabled)
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Tue, 03 Apr 2007 23:46:32 +0200
parents eefebea247a0
children d7296d36e6f0
line wrap: on
line diff
--- a/MoinMoin/user.py	Tue Apr 03 18:48:59 2007 +0200
+++ b/MoinMoin/user.py	Tue Apr 03 23:46:32 2007 +0200
@@ -824,7 +824,7 @@
         # TODO: acquire lock here, so multiple processes don't clobber
         # each one trail.
 
-        if self.valid and (self.show_page_trail or self.remember_last_visit):
+        if not self.valid or self.show_page_trail or self.remember_last_visit:
             # load trail if not known
             self.getTrail()
 
@@ -858,16 +858,7 @@
         Save using one write call, which should be fine in most cases,
         but will fail in rare cases without real file locking.
         """
-        data = '\n'.join(self._trail) + '\n'
-        path = self.__filename() + ".trail"
-        try:
-            f = codecs.open(path, "w", config.charset)
-            try:
-                f.write(data)
-            finally:
-                f.close()
-        except (IOError, OSError), err:
-            self._request.log("Can't save trail file: %s" % str(err))
+        self._request.session['trail'] = self._trail
 
     def getTrail(self):
         """ Return list of recently visited pages.
@@ -875,13 +866,9 @@
         @rtype: list
         @return: pages in trail
         """
-        if self.valid and (self.show_page_trail or self.remember_last_visit) \
-                and not self._trail \
-                and os.path.exists(self.__filename() + ".trail"):
-            try:
-                trail = codecs.open(self.__filename() + ".trail", 'r', config.charset).readlines()
-            except (OSError, ValueError):
-                trail = []
+        if not self._trail and (
+           not self.valid or self.show_page_trail or self.remember_last_visit):
+            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:]