diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2011-01-19 00:55:21 -0500 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2011-01-19 00:55:21 -0500 |
| commit | 95e74be58e597776ee095790403d499b5d62467f (patch) | |
| tree | 2cc86a1051bacd494581403bce8d504ef8d06f31 /server/object.py | |
| parent | e745bd6c5c030e62693db351697130e0fa189847 (diff) | |
| download | alias-95e74be58e597776ee095790403d499b5d62467f.tar.gz | |
Some more fixes to the component server
Diffstat (limited to 'server/object.py')
| -rw-r--r-- | server/object.py | 62 |
1 files changed, 29 insertions, 33 deletions
diff --git a/server/object.py b/server/object.py index 7209cd2..d9cdc92 100644 --- a/server/object.py +++ b/server/object.py @@ -10,19 +10,15 @@ import fileinput import logging from permission import * -from config import config class Object: def __get_path(self): - return self.name[:2] + '/' + self.name[2:] + return self.root + self.owner + '/' + self.name[:2] + '/' + self.name[2:] def __create_dir(self): - if (not os.path.exists(self.name[:2])): - os.mkdir(self.name[:2]) - - if (not os.path.exists(self.path)): - os.mkdir(self.path) + if (not os.path.exists(self.__get_path())): + os.mkdirs(self.__get_path()) ## # Save the object on the disk. @@ -35,7 +31,7 @@ class Object: header += "#\n" #end of header store = header + self.data['content'] - file = open(self.path + "/object", 'w') + file = open(self.__get_path() + "/object", 'w') file.write(zlib.compress(store)) file.close() os.mknod(self.path + "/childs") @@ -44,8 +40,9 @@ class Object: ## # Class constructor. - def __init__(self, init): - + def __init__(self, root, owner, init): + + self.root = root if isinstance(init, dict): if 'author' not in init: init['author'] = 'None' @@ -57,14 +54,12 @@ class Object: self.data = init self.data['created'] = str(datetime.datetime.now()) self.name = hashlib.sha1(str(self.data)).hexdigest() - self.path = self.__get_path() self.saved = False elif isinstance(init, str): self.name = init - self.path = self.__get_path() - if (os.path.exists(self.path)): - file = open(self.path + '/object', 'r') + if (os.path.exists(self.__get_path())): + file = open(self.__get_path() + '/object', 'r') contentStream = StringIO.StringIO(zlib.decompress(file.read())) data = {} @@ -108,7 +103,7 @@ class Object: return 0 def get_permission(self, user): - file = open(self.path + '/permissions', 'r') + file = open(self.__get_path() + '/permissions', 'r') for line in file: name, sep, perm = line.rstrip('\n').partition(' ') if name == user: @@ -121,7 +116,7 @@ class Object: self.save() sentinel = False - for line in fileinput.input(self.path + "/permissions", inplace = 1): + for line in fileinput.input(self.__get_path() + "/permissions", inplace = 1): name, sep, perm = line.rstrip('\n').partition(' ') if name == user: sys.stdout.write(name + ' ' + str(permission) + '\n') @@ -130,34 +125,35 @@ class Object: sys.stdout.write(line) if not sentinel: - file = open(self.path + '/permissions', 'a') + file = open(self.__get_path() + '/permissions', 'a') file.write(user + ' ' + str(permission) + '\n') file.close() class ObjectHandler: - def __init__(self, root, user): - self.user = user - self.root_object = hashlib.sha1(user).hexdigest() - - if not os.path.exists(root + '/' + self.user): - logging.error("User {} root doesn't exist".format(self.user)) + def __init__(self, root, owner): + self.root = root + self.owner = owner + + def get_user_directory(self): + if os.path.exists(self.root + '/' + self.owner): + return self.root + '/' + self.owner + else: + logging.error("User {} root doesn't exist".format(self.owner)) def get_object_directory(self, hash): - directory = self.user + '/' + hash[:2] + '/' + hash[2:] + directory = self.get_user_directory() + hash[:2] + '/' + hash[2:] if (os.path.exists(directory)): return directory else: - return None + logging.error("Object {} directory doesn't exist".format(hash)) def get_object(self, hash): - os.chdir(self.user) - temp = Object(hash) - os.chdir('..') - return temp + return Object(self.root, self.owner, hash) - #return a list of hash,permission pairs - def get_child_list(self, hash, user): + #return a list of hash, permission pairs + #for the objects the queryer has permissions on + def get_child_list(self, hash, queryer): directory = self.get_object_directory(hash) if directory: result = [] @@ -167,14 +163,14 @@ class ObjectHandler: result.append(name) file.close() return result - else : + else: return None def create_home_node(self): pass def get_home_node(self): - return self.root_object + return hashlib.sha1(self.owner).hexdigest() if __name__ == '__main__': config.root = os.path.abspath('object_tests') |
