aboutsummaryrefslogtreecommitdiffstats
path: root/server/object.py
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@gmail.com>2011-04-13 01:17:58 -0400
committerGuillaume Horel <guillaume.horel@gmail.com>2011-04-13 01:17:58 -0400
commitf8933f67e9f08fd96a67031e675e422dbeea5c87 (patch)
treeb6750e25d657bb7d82a40f06173553f2acba0486 /server/object.py
parent3b8849a0437b56454a71b60976d9eb040235c242 (diff)
downloadalias-f8933f67e9f08fd96a67031e675e422dbeea5c87.tar.gz
Rewrite of the object classes and various fixes
- splitted the Object class into ObjectWriter and ObjectReader - in the UserHandler class, the root object is now automatically created when registering with the component server. - use of os.join.path everywhere to make the code more robust
Diffstat (limited to 'server/object.py')
-rw-r--r--server/object.py43
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