diff options
Diffstat (limited to 'server/object.py')
| -rw-r--r-- | server/object.py | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/server/object.py b/server/object.py index c2b5d16..c72a9a0 100644 --- a/server/object.py +++ b/server/object.py @@ -16,28 +16,24 @@ class ObjectError(Exception): pass; class Object: - - def __init__(self, owner, hash): + def __init__(self, owner, hash = None): self.owner = owner if hash is None: hash = hashlib.sha1(owner).hexdigest() - self.hash = hash - owner_path = config.root + self.owner + '/' - - if not os.path.exists(owner_path) : - logging.error("User {} is not registered".format(self.owner)) - raise ObjectError - - self.path = owner_path + self.hash[:2] + '/' + self.hash[2:] + '/' - - if not os.path.exists(self.path) : + self.owner_path = os.path.join(config.root, owner) + self.object_path = os.path.join(self.owner_path, hash[:2], hash[2:]) + +class ObjectReader(Object): + def __init__(self, owner, hash = None): + Object.__init__(self, owner, hash) + if not os.path.exists(self.object_path): logging.error("Object {} can't be found for user {}".format(self.hash, self.owner)) raise ObjectError def get_permission(self, user): - with open(self.path + 'permissions', 'r') as file: + with open(os.path.join(self.object_path, 'permissions'), 'r') as file: for line in file: name, perm, key = line.split() if name == user: @@ -45,7 +41,7 @@ class Object: return None def get_key(self, user): - with open(self.path + 'permissions', 'r') as file: + with open(os.path.join(self.object_path, 'permissions'), 'r') as file: for line in file: name, perm, key = line.split() if name == user: @@ -53,7 +49,7 @@ class Object: return None def get_permission_key(self, user): - with open(self.path + 'permissions', 'r') as file: + with open(os.path.join(self.object_path, 'permissions'), 'r') as file: for line in file: name, perm, key = line.split() if name == user: @@ -67,12 +63,12 @@ class Object: .format(user, self.hash)) raise PermissionError - file = open(self.path + "childs", 'r') + file = open(os.path.join(self.object_path, 'childs'), 'r') result = [] for line in file: name = line.rstrip('\n') try: - child = Object(self.owner, name) + child = ObjectReader(self.owner, name) except ObjectError: logging.error("Object {} can't be find for user {}".format(self.hash, self.owner)) @@ -91,7 +87,7 @@ class Object: .format(user, self.hash)) raise PermissionError - file = open(self.path + "object", 'r') + file = open(os.path.join(self.path, "object"), 'r') content = file.read() file.close() return content, key @@ -99,6 +95,17 @@ class Object: def get_private_key(self): pass +class ObjectWriter(Object): + def __init__(self, owner, hash = None): + Object.__init__(self, owner, hash) + if not os.path.exists(self.owner_path): + logging.error("User {} is not registered".format(self.owner)) + os.makedirs(self.object_path) + for filename in ['permissions', 'childs', 'object']: + file=open(os.path.join(self.object_path, filename), "w") + file.close() + + if __name__ == '__main__': pass |
