diff options
| -rw-r--r-- | object.py | 47 |
1 files changed, 40 insertions, 7 deletions
@@ -5,10 +5,15 @@ import os import os.path import zlib import datetime +import fileinput +import permission class Object : + + def _getPath( self ) : + return self.name[:2] + '/' + self.name[2:] - def _create_dir(self): + def _createDir( self ): if ( not os.path.exists( self.name[:2] ) ) : os.mkdir( self.name[:2] ) @@ -18,7 +23,7 @@ class Object : ## # Save the object on the disk. def save( self ) : - self._create_dir() + self._createDir() header = "author " + self.data['author'] + "\n" header += "parent " + self.data['parent'] + "\n" @@ -29,6 +34,8 @@ class Object : file = open( self.path + "/object", 'w' ) file.write( zlib.compress( store ) ) file.close() + os.mknod(self.path + "/childs") + os.mknod(self.path + "/permissions") self.saved = True ## @@ -47,12 +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.name[:2] + '/' + self.name[2:] + self.path = self._getPath() self.saved = False elif isinstance( init, str ) : self.name = init - self.path = self.name[:2] + '/' + self.name[2:] + self.path = self._getPath() self.saved = True if ( os.path.exists( self.path ) ) : @@ -80,16 +87,42 @@ class Object : if not self.saved : self.save() - file = open( self.path + "/childs", 'a' ) file.write( child.name + "\n") file.close() - + def getPermission( self, user ) : + file = open( self.path + '/permissions', 'r' ) + for line in file : + name, sep, perm = line.rstrip('\n').partition(' ') + if name == user : + return perm + else : + return 0 - + def setPermission(self, user, perm ) : + if not self.saved : + self.save() + + sentinel = False + for line in fileinput.input( self.path + "/permissions", inplace=1 ) : + name, sep, perm = line.rstrip('\n').partition(' ') + if name == user : + print name + sep + perm + sentinel = True + else : + print line + + if not sentinel : + file = open( self.path + '/permissions', 'a' ) + file.write( user + ' ' + str( perm ) ) + file.close() + + + if __name__== '__main__' : x = Object({'parent' : 'toto', 'author' : 'Zaran'}) + x.setPermission("test", permission.READ) child = Object({'parent' : x.name, 'author' : 'Zaran'}) child.save() |
