def _ac_inherited_permissions(ob, all=0): # Get all permissions not defined in ourself that are inherited # This will be a sequence of tuples with a name as the first item and # an empty tuple as the second. d = {} perms = getattr(ob, '__ac_permissions__', ()) for p in perms: d[p[0]] = None r = gather_permissions(ob.__class__, [], d) if all: if hasattr(ob, '_subobject_permissions'): for p in ob._subobject_permissions(): pname=p[0] if not d.has_key(pname): d[pname]=1 r.append(p) r = list(perms) + r return r