summaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/setools/descriptors.py
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2016-05-19 18:41:01 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-05-19 18:41:01 +0000
commitce294655f981e19b420f2201b7c499a435ef1ce2 (patch)
tree3d29fc6c999dbb9ab3d78cb64b336caf8a36fd65 /lib/python2.7/site-packages/setools/descriptors.py
parent9870834a1f61689aaff1eedda0e1ee73d7150763 (diff)
parent3d3d1bae29e9b2d88c73aecda916640ba3a5e5b8 (diff)
downloadplatform_prebuilts_python_linux-x86_2.7.5-ce294655f981e19b420f2201b7c499a435ef1ce2.tar.gz
platform_prebuilts_python_linux-x86_2.7.5-ce294655f981e19b420f2201b7c499a435ef1ce2.tar.bz2
platform_prebuilts_python_linux-x86_2.7.5-ce294655f981e19b420f2201b7c499a435ef1ce2.zip
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