""" Remembers the original posting dates of stories. Requires a file in the server that is writable by the webserver. (Default file is py['datadir']/DATES). If your py['datadir'] is read only to the web server, you can create a directory and make sure that it's writable by the webserver, e.g. 'chmod 777 directory' or using some other methods (mine runs pyblosxom in SuExec mode). After doing so, change the self._file value in __init__() and you're game. """ __author__ = "Richard Chamberlain richard@sunsetandlabrea.com" __version__ = "rememberdates.py,v 0.1 2004/08/26 11:52:00 richardc" import os, time import cPickle as pickle rememberDates = None class RememberDates: def __init__(self): self._file = os.path.join(py['datadir'], 'DATES') self._dates = {} if os.path.isfile(self._file): try: fp = open(self._file, 'rb') self._dates = pickle.load(fp) fp.close() except IOError: # Something wrong with the file, abort. return else: # No file, abort. return def retrieveAndStoreTime(self, filename, filetime): if self._dates != None: if self._dates.has_key(filename): mtime = self._dates[filename] else: self._dates[filename] = mtime if os.path.isfile(self._file): pickle.dump(self.dates, fp, 1) fp.close() return 1 def cb_filestat(args): global rememberDates stattuple = args["mtime"] filename = args["filename"] if rememberDates == None: rememberDates = RememberDates() stattuple[8] = rememberDates.retrieveAndStoreTime(filename, stattuple[8]) return args