diff options
Diffstat (limited to 'lib/python2.7/site-packages/setools/descriptors.py')
-rwxr-xr-x[-rw-r--r--] | lib/python2.7/site-packages/setools/descriptors.py | 35 |
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 |