mς $αΈEc@sθdZdkZdklZdkZdklZedƒZeZfZ dZ gZ dei fd„ƒYZdefd„ƒYZdefd „ƒYZhahZd „Zdd „Zd efd „ƒYZd„Zd„ZdS(sϋSecurityInfo objects and access control constants. SecurityInfo objects are used in class definitions to allow a declarative style of associating access control information with class attributes. More information on using SecurityInfo and guide to Zope security for developers can be found in the dev.zope.org "Declarative Security" project: http://dev.zope.org/Wikis/DevSite/Projects/DeclarativeSecurity While SecurityInfo objects largely remove the need for Python programmers to care about the underlying implementation, there are several constants defined that should be used by code that must set __roles__ attributes directly. (the constants are also accessible from the AccessControl namespace). The defined access control constants and their meanings are: ACCESS_PUBLIC: accessible from restricted code and possibly through the web (if object has a docstring) ACCESS_PRIVATE: accessible only from python code ACCESS_NONE: no access N(s getLogger(s_what_not_even_god_should_dot SecurityInfocBs€tZdZdZeZd„Zd„ZeZd„Z eZ d„Z eZ d„Z eZd„ZeZd„ZeZd „ZeZd „ZeZd „ZRS( s!Encapsulate security information.icCsh|_h|_dS(N(tselftnamestroles(R((t9/data/zmath/zope/lib/python/AccessControl/SecurityInfo.pyt__init__Cs cCs\xU|D]M}|ii||ƒ|jotid|ƒd|_n||i| boolean. tallowitdenyis'allow' or 'deny' expectedN(t isinstanceRtstrtlowert ValueErrorR(RR((RtsetDefaultAccessys      (t__name__t __module__t__doc__t__security_info__Rt __roles__RR tdeclarePublic__roles__RtdeclarePrivate__roles__RtdeclareProtected__roles__RtdeclareObjectPublic__roles__RtdeclareObjectPrivate__roles__RtdeclareObjectProtected__roles__RtsetPermissionDefault__roles__RtsetDefaultAccess__roles__R (((RR<s*          tClassSecurityInfocBs#tZdZeZeZd„ZRS(s3Encapsulate security information for class objects.cCsn|i}|idƒobx_|dD]O} | d}|i| d|ƒt| ƒdjo|i || dƒq$q$Wnh} xz|i i ƒD]i\} }|tttfjot|d| |ƒq‘| i|ƒpg| | 2