declarative security scope question
I'm trying to setup a template for defining declarative security assertions for a set of classes. Here is an example method that is not working as I expected: def MyInitializeClass(klass,priviledge): klass.security.declareProtected(priviledge, 'listMessages') Globals.InitializeClass(klass) Python is complaining about the 'security' attribute not existing. It appears that the attribute 'security' for a class is not accessible even though it is assigned within the class. Does anyone have an experience with this? regards, - joe n. p.s. Here's the full code sample: ------------------------------------------------------------------- from AccessControl import ClassSecurityInfo import Globals class MailboxBase(BaseObject): """A mailbox base class.""" # Create a SecurityInfo for this class security = ClassSecurityInfo() security.declareProtected('View Mailbox', 'listMessages') def listMessages(self): """Return a sequence of message objects.""" return self._messages[:] security.setPermissionDefault('View Mailbox', ('Manager', 'Mailbox Owner')) def MyInitializeClass(klass,priviledge): klass.security.declareProtected(priviledge, 'listMessages') Globals.InitializeClass(klass) # call this to initialize framework classes, which # does the right thing with the security assertions. Globals.InitializeClass(MailboxBase) class MyMailbox(MailboxBase): """A mailbox subclass, where we want the security for listMessages to be public instead of protected (as defined in the base class).""" # Create a SecurityInfo for this class security = ClassSecurityInfo() security.declarePublic('listMessages') # call this to initialize framework classes, which # does the right thing with the security assertions. MyInitializeClass(MyMailbox, 'View Mailbox')
participants (1)
-
Joseph Wayne Norton