Overwrite permissions every time.
authorAntony Chazapis <chazapis@gmail.com>
Wed, 11 Apr 2012 07:56:44 +0000 (10:56 +0300)
committerAntony Chazapis <chazapis@gmail.com>
Wed, 11 Apr 2012 07:56:44 +0000 (10:56 +0300)
Fixes #2312

snf-pithos-backend/pithos/backends/base.py
snf-pithos-backend/pithos/backends/lib/sqlalchemy/permissions.py
snf-pithos-backend/pithos/backends/lib/sqlite/permissions.py

index d0ea038..3cf2251 100644 (file)
@@ -413,10 +413,10 @@ class BaseBackend(object):
         return {}
     
     def update_object_permissions(self, user, account, container, name, permissions):
-        """Update the permissions associated with the object.
+        """Update (set) the permissions associated with the object.
         
         Parameters:
-            'permissions': Dictionary with permissions to update
+            'permissions': Dictionary with permissions to set
         
         Raises:
             NotAllowedError: Operation not permitted
index af902f8..5ebdea2 100644 (file)
@@ -70,11 +70,11 @@ class Permissions(XFeatures, Groups, Public):
             self.xfeature_destroy(path)
             return
         feature = self.xfeature_create(path)
+        self.feature_clear(feature, READ)
+        self.feature_clear(feature, WRITE)
         if r:
-            self.feature_clear(feature, READ)
             self.feature_setmany(feature, READ, r)
         if w:
-            self.feature_clear(feature, WRITE)
             self.feature_setmany(feature, WRITE, w)
     
     def access_get(self, path):
index 6d5d13c..b29422d 100644 (file)
@@ -67,11 +67,11 @@ class Permissions(XFeatures, Groups, Public):
             self.xfeature_destroy(path)
             return
         feature = self.xfeature_create(path)
+        self.feature_clear(feature, READ)
+        self.feature_clear(feature, WRITE)
         if r:
-            self.feature_clear(feature, READ)
             self.feature_setmany(feature, READ, r)
         if w:
-            self.feature_clear(feature, WRITE)
             self.feature_setmany(feature, WRITE, w)
     
     def access_get(self, path):