aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2010-10-25 01:24:54 +0200
committerThibaut Horel <thibaut.horel@gmail.com>2010-10-25 01:24:54 +0200
commitd7c8adf9856b2a3d76ec884ad33543274539ea2b (patch)
tree839176d223475e1bf75831772d7b8eec78d8ca75
parent9479e2e8fb7624ec89783badca6e4e510d71680f (diff)
downloadalias-d7c8adf9856b2a3d76ec884ad33543274539ea2b.tar.gz
Permission get and set in Object class
-rw-r--r--object.py47
1 files changed, 40 insertions, 7 deletions
diff --git a/object.py b/object.py
index ad239c8..d7ceea9 100644
--- a/object.py
+++ b/object.py
@@ -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()