From 5ef2d631df2424dc12c37cc86a8944e9c968d5b5 Mon Sep 17 00:00:00 2001 From: helmutm Date: Sun, 22 Aug 2010 13:22:48 +0000 Subject: [PATCH] filesystem storage: provide file modification date git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3967 fd906abe-77d9-0310-91a1-e0d9ade77398 --- storage/filesystem.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/storage/filesystem.py b/storage/filesystem.py index 8864ea1..87a2c9e 100644 --- a/storage/filesystem.py +++ b/storage/filesystem.py @@ -22,6 +22,8 @@ Storing data in files in the file system. $Id$ """ +from datetime import datetime +from logging import getLogger import os import shutil from zope.interface import implements @@ -34,6 +36,9 @@ from cybertools.storage.interfaces import IExternalStorage DEFAULT_DIRECTORY = 'extfiles' +logger = getLogger('cybertools.storage.filesystem') + + class FileSystemStorage(object): implements(IExternalStorage) @@ -75,8 +80,7 @@ class FileSystemStorage(object): f.close() return data except IOError, e: - from logging import getLogger - getLogger('cybertools.storage.filesystem.FileSystemStorage').warn(e) + logger.warn(e) #'File %r cannot be read.' % fn) return '' @@ -86,10 +90,20 @@ class FileSystemStorage(object): try: return os.path.getsize(fn) except OSError, e: - from logging import getLogger - getLogger('cybertools.storage.filesystem.FileSystemStorage').warn(e) + logger.warn(e) return 0 + def getMTime(self, address, params={}): + subDir = params.get('subdirectory') + fn = self.getDir(address, subDir) + try: + ts = os.path.getmtime(fn) + if ts: + return datetime.fromtimestamp(ts) + except OSError, e: + logger.warn(e) + return None + def getUniqueAddress(self, address, params={}): subDir = params.get('subdirectory') return self.getDir(address, subDir)