From: Edward Z. Yang Date: Tue, 12 May 2009 02:31:27 +0000 (-0400) Subject: Add showPermissions functionality. X-Git-Tag: 0.1.0~23^2~3 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/python-afs.git/commitdiff_plain/10715f8c0ce6de0a4cf85100770b457d03fd2d0b?hp=dee660f2c4164dbe8862e0158494dbfe966b8c43;ds=sidebyside Add showPermissions functionality. Signed-off-by: Edward Z. Yang --- diff --git a/afs/acl.py b/afs/acl.py index b5da255..d9a6df4 100644 --- a/afs/acl.py +++ b/afs/acl.py @@ -10,25 +10,27 @@ _canonical = { "mail": "lik", "none": "", } -_char2bit = { - 'r': READ, - 'w': WRITE, - 'i': INSERT, - 'l': LOOKUP, - 'd': DELETE, - 'k': LOCK, - 'a': ADMINISTER, - 'A': USR0, - 'B': USR1, - 'C': USR2, - 'D': USR3, - 'E': USR4, - 'F': USR5, - 'G': USR6, - 'H': USR7, -} -_bit2char = dict([(v,k) for k,v in _char2bit.items()]) +_charBitAssoc = [ + ('r', READ), + ('w', WRITE), + ('i', INSERT), + ('l', LOOKUP), + ('d', DELETE), + ('k', LOCK), + ('a', ADMINISTER), + ('A', USR0), + ('B', USR1), + ('C', USR2), + ('D', USR3), + ('E', USR4), + ('F', USR5), + ('G', USR6), + ('H', USR7), +] + +_char2bit = dict(_charBitAssoc) + def crights(s): """Canonicalizes string rights to bitmask""" @@ -51,6 +53,13 @@ class ACL(object): pos, neg = _parseAcl(_acl.getAcl(dir)) return ACL(pos, neg) +def showRights(r): + """Takes a bitmask and returns a rwlidka string""" + s = "" + for char,mask in _charBitAssoc: + if r & mask == mask: s += char + return s + def _parseRights(s): """Parses a rwlid... rights tring to bitmask""" r = 0 diff --git a/afs/tests/test_acl.py b/afs/tests/test_acl.py index 385e2ad..c6a7338 100644 --- a/afs/tests/test_acl.py +++ b/afs/tests/test_acl.py @@ -1,6 +1,9 @@ import nose import afs.acl as acl +def test_showRights(): + assert acl.showRights(acl.READ | acl.WRITE) == "rw" + def test_crights(): assert acl.crights('read') & acl.READ assert acl.crights('read') & acl.LOOKUP