CVS: Products/PluggableAuthService/plugins - ZODBUserManager.py:1.11 ZODBRoleManager.py:1.5 ZODBGroupManager.py:1.5 SessionAuthHelper.py:1.5 SearchPrincipalsPlugin.py:1.4 ScriptablePlugin.py:1.5 RecursiveGroupsPlugin.py:1.6 LocalRolePlugin.py:1.5 InlineAuthHelper.py:1.4 HTTPBasicAuthHelper.py:1.8 DynamicGroupsPlugin.py:1.5 DomainAuthHelper.py:1.5 DelegatingMultiPlugin.py:1.5 CookieAuthHelper.py:1.15 BasePlugin.py:1.6

Zachery Bir <[email protected]>
Newsgroups gmane.comp.web.zope.public-cvs
Message-ID <[email protected]>
Update of /cvs-repository/Products/PluggableAuthService/plugins
In directory cvs.zope.org:/tmp/cvs-serv29036/plugins

Modified Files:
	ZODBUserManager.py ZODBRoleManager.py ZODBGroupManager.py 
	SessionAuthHelper.py SearchPrincipalsPlugin.py 
	ScriptablePlugin.py RecursiveGroupsPlugin.py 
	LocalRolePlugin.py InlineAuthHelper.py HTTPBasicAuthHelper.py 
	DynamicGroupsPlugin.py DomainAuthHelper.py 
	DelegatingMultiPlugin.py CookieAuthHelper.py BasePlugin.py 
Log Message:
Merging per-plugin id mangling and Zope 2.7/2.8 Interface compatibility code


=== Products/PluggableAuthService/plugins/ZODBUserManager.py 1.10 => 1.11 ===
--- Products/PluggableAuthService/plugins/ZODBUserManager.py:1.10	Fri May 27 14:55:45 2005
+++ Products/PluggableAuthService/plugins/ZODBUserManager.py	Wed Jul  6 14:49:05 2005
@@ -27,7 +27,7 @@
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
-from Products.PluggableAuthService.utils import createViewName
+from Products.PluggableAuthService.utils import createViewName, classImplements
 from Products.PluggableAuthService.interfaces.plugins \
     import IAuthenticationPlugin
 from Products.PluggableAuthService.interfaces.plugins \
@@ -59,10 +59,6 @@
 
     """ PAS plugin for managing users in the ZODB.
     """
-    __implements__ = ( IAuthenticationPlugin
-                     , IUserEnumerationPlugin
-                     , IUserAdderPlugin
-                     )
 
     meta_type = 'ZODB User Manager'
 
@@ -472,6 +468,12 @@
                                '?manage_tabs_message=%s'
                              % ( self.absolute_url(), message )
                              )
+
+classImplements( ZODBUserManager
+               , IAuthenticationPlugin
+               , IUserEnumerationPlugin
+               , IUserAdderPlugin
+               )
 
 InitializeClass( ZODBUserManager )
 


=== Products/PluggableAuthService/plugins/ZODBRoleManager.py 1.4 => 1.5 ===
--- Products/PluggableAuthService/plugins/ZODBRoleManager.py:1.4	Mon Aug 30 11:27:52 2004
+++ Products/PluggableAuthService/plugins/ZODBRoleManager.py	Wed Jul  6 14:49:05 2005
@@ -23,6 +23,7 @@
 
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.interfaces.plugins \
     import IRolesPlugin
 from Products.PluggableAuthService.interfaces.plugins \
@@ -54,11 +55,6 @@
 
     """ PAS plugin for managing roles in the ZODB.
     """
-    __implements__ = ( IRolesPlugin
-                     , IRoleEnumerationPlugin
-                     , IRoleAssignerPlugin
-                     )
-
     meta_type = 'ZODB Role Manager'
 
     security = ClassSecurityInfo()
@@ -439,6 +435,12 @@
                            + '&manage_tabs_message=%s'
                            ) % ( self.absolute_url(), role_id, message )
                          )
+
+classImplements( ZODBRoleManager
+               , IRolesPlugin
+               , IRoleEnumerationPlugin
+               , IRoleAssignerPlugin
+               )
 
 
 InitializeClass( ZODBRoleManager )


=== Products/PluggableAuthService/plugins/ZODBGroupManager.py 1.4 => 1.5 ===
--- Products/PluggableAuthService/plugins/ZODBGroupManager.py:1.4	Mon Aug 30 11:25:46 2004
+++ Products/PluggableAuthService/plugins/ZODBGroupManager.py	Wed Jul  6 14:49:05 2005
@@ -22,6 +22,7 @@
 from BTrees.OOBTree import OOBTree
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins \
     import IGroupEnumerationPlugin
@@ -50,10 +51,6 @@
 
     """ PAS plugin for managing groups, and groups of groups in the ZODB
     """
-    __implements__ = ( IGroupEnumerationPlugin
-                     , IGroupsPlugin
-                     )
-
     meta_type = 'ZODB Group Manager'
 
     security = ClassSecurityInfo()
@@ -118,6 +115,8 @@
                 info[ 'properties_url' ] = '%s?%s' % ( e_url, p_qs )
                 info[ 'members_url' ] = '%s?%s' % ( e_url, m_qs )
 
+                info[ 'id' ] = '%s%s' % (self.prefix, info['id'])
+
                 if not group_filter or group_filter( info ):
                     group_info.append( info )
 
@@ -131,7 +130,8 @@
 
         """ See IGroupsPlugin.
         """
-        return tuple( self._principal_groups.get( principal.getId(), () ) )
+        unadorned = self._principal_groups.get( principal.getId(), () )
+        return tuple(['%s%s' % (self.prefix, x) for x in unadorned])
 
     #
     #   (notional)IZODBGroupManager interface
@@ -441,6 +441,11 @@
                                + '&manage_tabs_message=%s'
                                ) % ( self.absolute_url(), group_id, message )
                              )
+
+classImplements( ZODBGroupManager
+               , IGroupEnumerationPlugin
+               , IGroupsPlugin
+               )
 
 InitializeClass( ZODBGroupManager )
 


=== Products/PluggableAuthService/plugins/SessionAuthHelper.py 1.4 => 1.5 ===
--- Products/PluggableAuthService/plugins/SessionAuthHelper.py:1.4	Sat Nov 20 13:44:13 2004
+++ Products/PluggableAuthService/plugins/SessionAuthHelper.py	Wed Jul  6 14:49:05 2005
@@ -21,6 +21,7 @@
 from App.class_init import default__class_init__ as InitializeClass
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins import \
         ILoginPasswordHostExtractionPlugin, \
@@ -46,11 +47,6 @@
 
 class SessionAuthHelper(BasePlugin):
     """ Multi-plugin for managing details of Session Authentication. """
-    __implements__ = ( ILoginPasswordHostExtractionPlugin
-                     , ICredentialsUpdatePlugin
-                     , ICredentialsResetPlugin
-                     )
-
     meta_type = 'Session Auth Helper'
     security = ClassSecurityInfo()
 
@@ -97,13 +93,18 @@
         """ Respond to change of credentials. """
         request.SESSION.set('__ac_name', login)
         request.SESSION.set('__ac_password', new_password)
-        
+
     security.declarePrivate('resetCredentials')
     def resetCredentials(self, request, response):
         """ Empty out the currently-stored session values """
         request.SESSION.set('__ac_name', '')
         request.SESSION.set('__ac_password', '')
 
+classImplements( SessionAuthHelper
+               , ILoginPasswordHostExtractionPlugin
+               , ICredentialsUpdatePlugin
+               , ICredentialsResetPlugin
+               )
 
 InitializeClass(SessionAuthHelper)
 


=== Products/PluggableAuthService/plugins/SearchPrincipalsPlugin.py 1.3 => 1.4 ===
--- Products/PluggableAuthService/plugins/SearchPrincipalsPlugin.py:1.3	Thu Aug 12 11:15:54 2004
+++ Products/PluggableAuthService/plugins/SearchPrincipalsPlugin.py	Wed Jul  6 14:49:05 2005
@@ -29,6 +29,7 @@
 from AccessControl.SpecialUsers import emergency_user
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins import \
      IUserEnumerationPlugin, IGroupEnumerationPlugin
@@ -59,8 +60,6 @@
     security = ClassSecurityInfo()
     meta_type = 'Search Principals Plugin'
 
-    __implements__ = ( IUserEnumerationPlugin, IGroupEnumerationPlugin )
-
     _properties = ( { 'id' : 'delegate'
                     , 'label' : ' Delegate Path'
                     , 'type' : 'string'
@@ -126,6 +125,10 @@
                                , sort_by=sort_by
                                , max_results=max_results
                                , **kw )
-    
+
+classImplements( SearchPrincipalsPlugin
+               , IUserEnumerationPlugin
+               , IGroupEnumerationPlugin
+               )
 
 InitializeClass(SearchPrincipalsPlugin)


=== Products/PluggableAuthService/plugins/ScriptablePlugin.py 1.4 => 1.5 ===
--- Products/PluggableAuthService/plugins/ScriptablePlugin.py:1.4	Sat Nov 20 12:53:44 2004
+++ Products/PluggableAuthService/plugins/ScriptablePlugin.py	Wed Jul  6 14:49:05 2005
@@ -16,6 +16,7 @@
 
 $Id$
 """
+from sets import Set
 from urllib import quote_plus
 from OFS.Folder import Folder
 from AccessControl import ClassSecurityInfo
@@ -23,7 +24,8 @@
 from App.class_init import default__class_init__ as InitializeClass
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from BasePlugin import BasePlugin
-from Products.PluggableAuthService.utils import directlyProvides
+from Products.PluggableAuthService.utils import \
+     directlyProvides, classImplements, providedBy, implementedBy
 
 import Products
 
@@ -57,10 +59,8 @@
 
     meta_type = 'Scriptable Plugin'
 
-    __implements__ = Folder.__implements__ + BasePlugin.__implements__
-
     manage_options = ( ( Folder.manage_options[0], )
-                     + ( { 'label': 'Interfaces', 
+                     + ( { 'label': 'Interfaces',
                            'action': 'manage_editInterfacesForm', }
                          ,
                        )
@@ -69,7 +69,7 @@
 
     security.declareProtected( ManageUsers, 'manage_editInterfacesForm' )
     manage_editInterfacesForm = PageTemplateFile(
-        'www/spEditInterfaces', globals(), 
+        'www/spEditInterfaces', globals(),
         __name__='manage_editInterfacesForm')
 
     def __creatable_by_emergency_user__( self ):
@@ -79,6 +79,12 @@
         self._id = self.id = id
         self.title = title
 
+    security.declareProtected( ManageUsers, 'hasMethod')
+    def hasMethod(self, method_name):
+        """ Do we implement this method directly?
+        """
+        return method_name in self.objectIds()
+
     security.declarePublic('all_meta_types')
     def all_meta_types(self):
         """ What objects can be contained here? """
@@ -93,27 +99,24 @@
 
     security.declareProtected( ManageUsers, '_delOb' )
     def _delOb( self, id ):
-        """ 
+        """
             Override ObjectManager's _delOb to account for removing any
-            interface assertions the object might implement. 
+            interface assertions the object might implement.
         """
         myId = self.getId()
         pas_instance = self._getPAS()
         plugins = pas_instance._getOb( 'plugins' )
+        curr_interfaces = Set(providedBy(self))
 
-        del_interfaces = filter( lambda x: id in x.names()
-                               , self.__implements__ )
-
-        trimmed_interfaces = [ x for x in self.__implements__ if
-                               x not in ( del_interfaces +
-                                          self.__class__.__implements__ ) ]
+        del_interfaces = Set([x for x in providedBy(self) if id in x.names()])
 
         for interface in del_interfaces:
             if myId in plugins.listPluginIds( interface ):
                 plugins.deactivatePlugin( interface, myId )
 
         delattr( self, id )
-        directlyProvides( self, *trimmed_interfaces )
+
+        directlyProvides( self, *(list(curr_interfaces - del_interfaces)) )
 
     security.declareProtected( ManageUsers, 'manage_updateInterfaces' )
     def manage_updateInterfaces( self, interfaces, RESPONSE=None ):
@@ -127,12 +130,23 @@
         for interface in interfaces:
             new_interfaces.append( plugins._getInterfaceFromName( interface ) )
 
-        directlyProvides( self, *new_interfaces )
+        klass_interfaces = [x for x in implementedBy(ScriptablePlugin)]
+        directlyProvides( self, *(klass_interfaces + new_interfaces) )
 
         if RESPONSE is not None:
             RESPONSE.redirect('%s/manage_workspace'
                               '?manage_tabs_message='
                               'Interfaces+updated.'
                             % self.absolute_url())
+
+try:
+    from Products.Five.bridge import fromZ2Interface
+except ImportError:
+    ScriptablePlugin.__implements__ = (
+        Folder.__implements__ + BasePlugin.__implements__)
+else:
+    classImplements( ScriptablePlugin
+                   , *(implementedBy(Folder) + implementedBy(BasePlugin))
+                   )
 
 InitializeClass(ScriptablePlugin)


=== Products/PluggableAuthService/plugins/RecursiveGroupsPlugin.py 1.5 => 1.6 ===
--- Products/PluggableAuthService/plugins/RecursiveGroupsPlugin.py:1.5	Fri Oct  1 17:29:46 2004
+++ Products/PluggableAuthService/plugins/RecursiveGroupsPlugin.py	Wed Jul  6 14:49:05 2005
@@ -22,6 +22,7 @@
 from BTrees.OOBTree import OOBTree
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.PropertiedUser import PropertiedUser
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins \
@@ -63,8 +64,6 @@
 
     """ PAS plugin for recursively flattening a collection of groups
     """
-    __implements__ = ( IGroupsPlugin, )
-
     meta_type = 'Recursive Groups Plugin'
 
     security = ClassSecurityInfo()
@@ -96,3 +95,7 @@
                 set.extend( new_groups )
 
         return tuple( seen )
+
+classImplements( RecursiveGroupsPlugin, IGroupsPlugin )
+
+InitializeClass(RecursiveGroupsPlugin)


=== Products/PluggableAuthService/plugins/LocalRolePlugin.py 1.4 => 1.5 ===
--- Products/PluggableAuthService/plugins/LocalRolePlugin.py:1.4	Sat Nov 20 12:46:27 2004
+++ Products/PluggableAuthService/plugins/LocalRolePlugin.py	Wed Jul  6 14:49:05 2005
@@ -25,6 +25,8 @@
 
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 
+from Products.PluggableAuthService.utils import classImplements
+
 manage_addLocalRolePluginForm = PageTemplateFile(
     'www/lrpAdd', globals(), __name__='manage_addLocalRolePluginForm' )
 
@@ -45,8 +47,6 @@
         assignments made on the root object.
     """
 
-    __implements__ = BasePlugin.__implements__ + ( IRolesPlugin, )
-    
     meta_type = 'Local Role Plugin'
     security = ClassSecurityInfo()
 
@@ -69,6 +69,6 @@
             return None
         return local_roles.get( principal.getId() )
 
-InitializeClass( LocalRolePlugin )
+classImplements( LocalRolePlugin, IRolesPlugin )
 
-    
+InitializeClass( LocalRolePlugin )


=== Products/PluggableAuthService/plugins/InlineAuthHelper.py 1.3 => 1.4 ===
--- Products/PluggableAuthService/plugins/InlineAuthHelper.py:1.3	Sun Oct 17 04:27:32 2004
+++ Products/PluggableAuthService/plugins/InlineAuthHelper.py	Wed Jul  6 14:49:05 2005
@@ -26,6 +26,7 @@
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.PageTemplates.ZopePageTemplate import manage_addPageTemplate
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins import \
         ILoginPasswordHostExtractionPlugin, IChallengePlugin,  \
@@ -54,10 +55,6 @@
 
 class InlineAuthHelper(Folder, BasePlugin):
     """ Multi-plugin for managing details of Inline Authentication. """
-    __implements__ = ( ILoginPasswordHostExtractionPlugin
-                     , IChallengePlugin
-                     )
-
     meta_type = 'Inline Auth Helper'
     security = ClassSecurityInfo()
 
@@ -117,6 +114,11 @@
 
     def _setBody(self, body, *args, **kw):
         pass
+
+classImplements( InlineAuthHelper
+               , ILoginPasswordHostExtractionPlugin
+               , IChallengePlugin
+               )
 
 InitializeClass(InlineAuthHelper)
 


=== Products/PluggableAuthService/plugins/HTTPBasicAuthHelper.py 1.7 => 1.8 ===
--- Products/PluggableAuthService/plugins/HTTPBasicAuthHelper.py:1.7	Sat Oct 16 16:15:47 2004
+++ Products/PluggableAuthService/plugins/HTTPBasicAuthHelper.py	Wed Jul  6 14:49:05 2005
@@ -23,6 +23,7 @@
 from App.class_init import default__class_init__ as InitializeClass
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins import \
         ILoginPasswordHostExtractionPlugin, \
@@ -52,11 +53,6 @@
 
     """ Multi-plugin for managing details of HTTP Basic Authentication.
     """
-    __implements__ = ( ILoginPasswordHostExtractionPlugin
-                     , IChallengePlugin
-                     , ICredentialsResetPlugin
-                     )
-
     meta_type = 'HTTP Basic Auth Helper'
 
     security = ClassSecurityInfo()
@@ -116,5 +112,11 @@
         """
         # XXX:  Does this need to check whether we have an HTTP response?
         response.unauthorized()
+
+classImplements( HTTPBasicAuthHelper
+               , ILoginPasswordHostExtractionPlugin
+               , IChallengePlugin
+               , ICredentialsResetPlugin
+               )
 
 InitializeClass( HTTPBasicAuthHelper )


=== Products/PluggableAuthService/plugins/DynamicGroupsPlugin.py 1.4 => 1.5 ===
--- Products/PluggableAuthService/plugins/DynamicGroupsPlugin.py:1.4	Mon Nov  8 17:35:45 2004
+++ Products/PluggableAuthService/plugins/DynamicGroupsPlugin.py	Wed Jul  6 14:49:05 2005
@@ -40,7 +40,7 @@
 
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 
-from Products.PluggableAuthService.utils import createViewName
+from Products.PluggableAuthService.utils import createViewName, classImplements
 
 
 manage_addDynamicGroupsPluginForm = PageTemplateFile(
@@ -178,7 +178,6 @@
 
       'request' -- the request object.
     """
-    __implements__ = ( IGroupsPlugin, IGroupEnumerationPlugin )
     meta_type = 'Dynamic Groups Plugin'
 
     security = ClassSecurityInfo()
@@ -196,11 +195,12 @@
 
         """ See IGroupsPlugin.
         """
+        grps = []
         DGD = DynamicGroupDefinition.meta_type
-        return[ group.getId() for  group in self.objectValues( DGD )
-                    if group.active and group( principal, request ) ]
-
-
+        for group in self.objectValues( DGD ):
+            if group.active and group( principal, request ):
+                grps.append('%s%s' % (self.prefix, group.getId()))
+        return grps
 
     security.declareProtected( ManageGroups, 'enumerateGroups' )
     def enumerateGroups( self
@@ -257,6 +257,8 @@
             info[ 'properties_url' ] = url
             info[ 'members_url' ] = url
 
+            info[ 'id' ] = '%s%s' % (self.prefix, info['id'])
+
             if not group_filter or group_filter( info ):
                 if info[ 'active' ]:
                     group_info.append( info )
@@ -295,7 +297,10 @@
         try:
             original = self._getOb( group_id )
         except AttributeError:
-            raise KeyError, group_id
+            try:
+                original = self._getOb( group_id[len(self.prefix):] )
+            except AttributeError:
+                raise KeyError, group_id
 
         if not isinstance( original, DynamicGroupDefinition ):
             raise KeyError, group_id
@@ -502,6 +507,11 @@
             RESPONSE.redirect( '%s/manage_groups?manage_tabs_message=%s'
                              % ( self.absolute_url(), message )
                              )
+
+classImplements( DynamicGroupsPlugin
+               , IGroupsPlugin
+               , IGroupEnumerationPlugin
+               )
 
 InitializeClass( DynamicGroupsPlugin )
 


=== Products/PluggableAuthService/plugins/DomainAuthHelper.py 1.4 => 1.5 ===
--- Products/PluggableAuthService/plugins/DomainAuthHelper.py:1.4	Mon Aug 30 09:22:41 2004
+++ Products/PluggableAuthService/plugins/DomainAuthHelper.py	Wed Jul  6 14:49:05 2005
@@ -29,6 +29,7 @@
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
 # PluggableAuthService imports
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins import \
     IAuthenticationPlugin, IRolesPlugin
@@ -56,8 +57,6 @@
     security = ClassSecurityInfo()
     meta_type = 'Domain Authentication Plugin'
 
-    __implements__ = (IAuthenticationPlugin, IRolesPlugin)
-
     security.declareProtected(manage_users, 'manage_map')
     manage_map = PageTemplateFile('www/daMatches', globals())
 
@@ -292,6 +291,10 @@
             else:
                 return self.manage_genericmap(manage_tabs_message=msg)
 
+classImplements( DomainAuthHelper
+               , IAuthenticationPlugin
+               , IRolesPlugin
+               )
 
 InitializeClass(DomainAuthHelper)
 


=== Products/PluggableAuthService/plugins/DelegatingMultiPlugin.py 1.4 => 1.5 ===
--- Products/PluggableAuthService/plugins/DelegatingMultiPlugin.py:1.4	Mon Aug 30 09:22:41 2004
+++ Products/PluggableAuthService/plugins/DelegatingMultiPlugin.py	Wed Jul  6 14:49:05 2005
@@ -31,6 +31,7 @@
 from AccessControl.SpecialUsers import emergency_user
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins import \
     IAuthenticationPlugin, IUserEnumerationPlugin, IRolesPlugin, \
@@ -66,11 +67,6 @@
     security = ClassSecurityInfo()
     meta_type = 'Delegating Multi Plugin'
 
-    __implements__ = ( IAuthenticationPlugin, IUserEnumerationPlugin
-                     , IRolesPlugin, ICredentialsUpdatePlugin
-                     , ICredentialsResetPlugin, IPropertiesPlugin
-                     )
-
     manage_options = ( BasePlugin.manage_options[:1]
                      + Folder.manage_options
                      )
@@ -236,6 +232,15 @@
                     pass
 
         return tuple(result)
+
+classImplements( DelegatingMultiPlugin
+               , IAuthenticationPlugin
+               , IUserEnumerationPlugin
+               , IRolesPlugin
+               , ICredentialsUpdatePlugin
+               , ICredentialsResetPlugin
+               , IPropertiesPlugin
+               )
 
 
 InitializeClass(DelegatingMultiPlugin)


=== Products/PluggableAuthService/plugins/CookieAuthHelper.py 1.14 => 1.15 ===
--- Products/PluggableAuthService/plugins/CookieAuthHelper.py:1.14	Thu Feb  3 19:31:00 2005
+++ Products/PluggableAuthService/plugins/CookieAuthHelper.py	Wed Jul  6 14:49:05 2005
@@ -27,6 +27,7 @@
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 
+from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.PluggableAuthService.interfaces.plugins import \
         ILoginPasswordHostExtractionPlugin, IChallengePlugin,  \
@@ -56,11 +57,6 @@
 
 class CookieAuthHelper(Folder, BasePlugin):
     """ Multi-plugin for managing details of Cookie Authentication. """
-    __implements__ = ( ILoginPasswordHostExtractionPlugin
-                     , IChallengePlugin
-                     , ICredentialsUpdatePlugin
-                     , ICredentialsResetPlugin
-                     )
 
     meta_type = 'Cookie Auth Helper'
     cookie_name = '__ginger_snap'
@@ -240,6 +236,12 @@
 
         return response.redirect(came_from)
 
+classImplements( CookieAuthHelper
+               , ILoginPasswordHostExtractionPlugin
+               , IChallengePlugin
+               , ICredentialsUpdatePlugin
+               , ICredentialsResetPlugin
+               )
 
 InitializeClass(CookieAuthHelper)
 


=== Products/PluggableAuthService/plugins/BasePlugin.py 1.5 => 1.6 ===
--- Products/PluggableAuthService/plugins/BasePlugin.py:1.5	Fri May 27 14:55:45 2005
+++ Products/PluggableAuthService/plugins/BasePlugin.py	Wed Jul  6 14:49:05 2005
@@ -25,6 +25,7 @@
 
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
+from Products.PluggableAuthService.utils import classImplements, implementedBy
 from Products.PluggableAuthService.permissions import ManageUsers
 
 class BasePlugin(SimpleItem, PropertyManager):
@@ -34,8 +35,6 @@
 
     security = ClassSecurityInfo()
 
-    __implements__ = SimpleItem.__implements__
-
     manage_options = ( ( { 'label': 'Activate',
                            'action': 'manage_activateInterfacesForm', }
                          ,
@@ -104,5 +103,14 @@
     def _getPAS( self ):
         """ Canonical way to get at the PAS instance from a plugin """
         return aq_parent( aq_inner( self ) )
+
+try:
+    from Products.Five.bridge import fromZ2Interface
+except ImportError:
+    BasePlugin.__implements__ = SimpleItem.__implements__
+else:
+    classImplements( BasePlugin
+                   , *implementedBy(SimpleItem)
+                   )
 
 InitializeClass(BasePlugin)

_______________________________________________
Zope-CVS maillist  -  [email protected]
http://mail.zope.org/mailman/listinfo/zope-cvs

Zope CVS instructions: http://dev.zope.org/CVS
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.