1.1 --- a/imip_store.py Mon Jan 12 20:02:24 2015 +0100
1.2 +++ b/imip_store.py Mon Jan 12 23:07:33 2015 +0100
1.3 @@ -21,19 +21,11 @@
1.4
1.5 from datetime import datetime
1.6 from imiptools.config import STORE_DIR, PUBLISH_DIR
1.7 -from os.path import abspath, commonprefix, exists, isfile, join, split
1.8 -from os import chmod, listdir, makedirs
1.9 +from imiptools.filesys import fix_permissions, FileBase
1.10 +from os.path import exists, isfile, join
1.11 +from os import listdir
1.12 from vCalendar import iterwrite
1.13
1.14 -def check_dir(base, dir):
1.15 - return commonprefix([base, abspath(dir)]) == base
1.16 -
1.17 -def fix_permissions(filename):
1.18 - try:
1.19 - chmod(filename, 0660)
1.20 - except OSError:
1.21 - pass
1.22 -
1.23 def make_calendar(fragment, method=None):
1.24
1.25 """
1.26 @@ -50,44 +42,13 @@
1.27 def to_stream(out, fragment, encoding="utf-8"):
1.28 iterwrite(out, encoding=encoding).append(fragment)
1.29
1.30 -class FileBase:
1.31 -
1.32 - "Basic filesystem operations."
1.33 -
1.34 - def __init__(self, store_dir=STORE_DIR):
1.35 - self.store_dir = store_dir
1.36 - if not exists(self.store_dir):
1.37 - makedirs(self.store_dir)
1.38 -
1.39 - def get_file_object(self, base, *parts):
1.40 - pathname = join(base, *parts)
1.41 - return check_dir(base, pathname) and pathname or None
1.42 -
1.43 - def get_object_in_store(self, *parts):
1.44 -
1.45 - """
1.46 - Return the name of any valid object stored within a hierarchy specified
1.47 - by the given 'parts'.
1.48 - """
1.49 -
1.50 - parent = expected = self.store_dir
1.51 -
1.52 - for part in parts:
1.53 - filename = self.get_file_object(expected, part)
1.54 - if not filename:
1.55 - return False
1.56 - parent = expected
1.57 - expected = filename
1.58 -
1.59 - if not exists(parent):
1.60 - makedirs(parent)
1.61 -
1.62 - return filename
1.63 -
1.64 class FileStore(FileBase):
1.65
1.66 "A file store of tabular free/busy data and objects."
1.67
1.68 + def __init__(self, store_dir=STORE_DIR):
1.69 + FileBase.__init__(self, store_dir)
1.70 +
1.71 def get_events(self, user):
1.72
1.73 "Return a list of event identifiers."