Added acl.grant and acl.revoke functions.
[py-rsbac] / rsbac / roles.py
1 # -*- coding:utf-8 -*-
2
3 # py-rsbac - RSBAC Python bindings
4 # Copyright (C) 2006  Frederic Jolliton <pyrsbac@tuxee.net>
5
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20 __all__ = [ 'SystemRole' ]
21
22 import sys
23
24 from rsbac import headers
25
26 _g_systemRolesName = {}
27 _g_systemRoles = {}
28
29 class SystemRole( object ) :
30     __slots__ = ( 'id' , )
31     def __new__( cls , id ) :
32         instance = _g_systemRoles.get( id )
33         if instance is None :
34             instance = object.__new__( cls )
35             instance.__init_singleton__( id )
36             _g_systemRoles[ id ] = instance
37         return instance
38     def __init_singleton__( self , id ) :
39         self.id = id
40     def __int__( self ) :
41         return int( self.id )
42     def __long__( self ) :
43         return long( self.id )
44     def __repr__( self ) :
45         return '<SystemRole %s [%d]>' % ( _g_systemRolesName.get( self.id , '??' ) , self.id )
46
47 def createSystemRoles() :
48     m = sys.modules[ __name__ ]
49     for name in dir( headers ) :
50         if name.startswith( 'SR_' ) and name.upper() != 'SR_NONE' :
51             role = name[ 3 : ]
52             value = getattr( headers , name )
53             _g_systemRolesName[ value ] = role
54             setattr( m , role , SystemRole( value ) )
55             __all__.append( role )
56 createSystemRoles()
57 del createSystemRoles
58
59 # Local Variables:
60 # indent-tabs-mode: nil
61 # python-indent: 4
62 # End: