summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/setools/descriptors.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/setools/descriptors.py')
-rwxr-xr-x[-rw-r--r--]lib/python2.7/site-packages/setools/descriptors.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/setools/descriptors.py b/lib/python2.7/site-packages/setools/descriptors.py
index c4bb73c..c4eb81c 100644..100755
--- a/lib/python2.7/site-packages/setools/descriptors.py
+++ b/lib/python2.7/site-packages/setools/descriptors.py
@@ -190,3 +190,38 @@ class EdgeAttrList(NetworkXGraphEdgeDescriptor):
# in Python3 a .clear() function was added for lists
# keep this implementation for Python 2 compat
del obj.G[obj.source][obj.target][self.name][:]
+
+
+#
+# Permission map descriptors
+#
+class PermissionMapDescriptor(object):
+
+ """
+ Descriptor for Permission Map mappings.
+
+ Parameter:
+ name The map setting name.
+ validator A callable for validating the setting.
+
+ Instance class attribute use (obj parameter):
+ perm_map The full permission map.
+ class_ The mapping's object class
+ perm The mapping's permission
+ """
+
+ def __init__(self, propname, validator):
+ self.name = propname
+ self.validator = validator
+
+ def __get__(self, obj, objtype=None):
+ if obj is None:
+ return self
+
+ return obj.perm_map[obj.class_][obj.perm][self.name]
+
+ def __set__(self, obj, value):
+ obj.perm_map[obj.class_][obj.perm][self.name] = self.validator(value)
+
+ def __delete__(self, obj):
+ raise AttributeError