[zopeorg-checkins] CVS: Products/ZopeOrg-NV - ZopeOrgMembershipTool.py:1.7

Jens Vagelpohl jens at zope.com
Fri Aug 8 15:35:14 EDT 2003


Update of /cvs-zopeorg/Products/ZopeOrg-NV
In directory cvs.zope.org:/tmp/cvs-serv20038

Modified Files:
	ZopeOrgMembershipTool.py 
Log Message:
- must create Plone folder, not Skinned Folder.



=== Products/ZopeOrg-NV/ZopeOrgMembershipTool.py 1.6 => 1.7 ===
 from Acquisition import aq_inner, aq_parent
 from AccessControl import ClassSecurityInfo
 from DateTime import DateTime
+from Products.CMFPlone.MembershipTool import MembershipTool as PloneMembership
+from Products.CMFPlone.PloneFolder import addPloneFolder
+from Products.CMFDefault.Document import addDocument
+
+DEFAULT_MEMBER_CONTENT = """\
+Default page for %s
+
+This is the default document created for you when
+you joined this community.
+
+To change the content just click the 'edit'
+tab above.
+"""
 
 
 class ZopeOrgMembershipTool( LDAPMembershipTool ):
@@ -112,6 +125,75 @@
 
     def createMemberarea( self, id ):
         """ Create this member's home area """
+        ##parent = self.aq_inner.aq_parent
+        ##members =  getattr(parent, 'Members', None)
+
+        ##if members is None:
+        ##    parent.manage_addPloneFolder(id='Members', title='Members')
+        ##    members = getattr(parent, 'Members', None)
+
+        ##if members is not None and not hasattr(members, member_id):
+        ##    f_title = "%s's Home" % member_id
+        ##    try:
+        ##        addPloneFolder(members, id=member_id, title=f_title)
+        ##    except:
+        ##        members.manage_addPloneFolder(id=member_id, title=f_title)
+        ##    f=getattr(members, member_id)
+        ##    # Grant ownership to Member
+        ##    acl_users = self.__getPUS()
+        ##    user = acl_users.getUser(member_id)
+        ##    if user is not None:
+        ##        user= user.__of__(acl_users)
+        ##    else:
+        ##        from AccessControl import getSecurityManager
+        ##        user= getSecurityManager().getUser()
+        ##        # check that we do not do something wrong
+        ##        if user.getUserName() != member_id:
+        ##            raise NotImplementedError, \
+        ##                'cannot get user for member area creation'
+        ##    f.changeOwnership(user)
+        ##    f.manage_setLocalRoles(member_id, ['Owner'])
+        ##    # Create Member's home page.
+        ##    # go get the home page text from the skin
+        ##    try:
+        ##        member_content = self.homePageText()
+        ##    except:
+        ##        member_content = DEFAULT_MEMBER_CONTENT
+
+        ##    addDocument( f
+        ##               , 'index_html'
+        ##               , member_id+"'s Home Page"
+        ##               , member_id+"'s front page"
+        ##               , "structured-text"
+        ##               , (DEFAULT_MEMBER_CONTENT % member_id)
+        ##               )
+        ##    f.index_html._setPortalTypeName( 'Document' )
+        ##    # Overcome an apparent catalog bug.
+        ##    f.index_html.reindexObject()
+        ##    wftool = getToolByName( f, 'portal_workflow' )
+        ##    wftool.notifyCreated( f.index_html )
+        ##    #XXX the above is copy/pasted from CMFDefault.MembershipTool only because
+        ##    #its not using invokeFactory('Folder') -- FIX IT!
+
+        ##    #XXX Below is what really is Plone customizations
+        ##    member_folder=self.getHomeFolder(member_id)
+        ##    member_folder.description = 'Home page area that contains the items created and ' \
+        ##                                + 'collected by %s' % member_id
+
+        ##    member_folder.manage_addPloneFolder('.personal', 'Personal Items')
+        ##    personal=getattr(member_folder, '.personal')
+        ##    personal.description = "contains personal workarea items for %s" % member_id
+        ##    personal.changeOwnership(user)
+        ##    personal.manage_setLocalRoles(member_id, ['Owner'])
+
+        ##    catalog = getToolByName(self, 'portal_catalog')
+        ##    catalog.unindexObject(personal) #dont add .personal folders to catalog
+
+        ##    # Hook to allow doing other things after memberarea creation.
+        ##    notify_script = getattr(member_folder, 'notifyMemberAreaCreated', None)
+
+        ##    if notify_script is not None:
+        ##        notify_script()
         mem_folder = getattr( aq_parent( aq_inner( self ) ), 'Members', None )
         if mem_folder is not None:
             user = self.acl_users.getUser( id )
@@ -119,9 +201,9 @@
             # check to avoid collision with automatic member area creation
             if user is not None and id not in mem_folder.objectIds():
                 f_title = "%s's Home" % id
-                addSkinnedFolder( mem_folder, id, f_title )
+                addPloneFolder( mem_folder, id, f_title )
                 f = getattr( mem_folder, id ) 
-                f._setPortalTypeName( 'Member Folder' )
+                #f._setPortalTypeName( 'Member Folder' )
 
                 # Grant executable ownership to Member
                 try:
@@ -131,6 +213,26 @@
 
                 # Set owner local role for member
                 f.manage_setLocalRoles(id, ['Owner'])
+
+            # Create Member's home page.
+            # go get the home page text from the skin
+            try:
+                member_content = self.homePageText()
+            except:
+                member_content = DEFAULT_MEMBER_CONTENT
+
+            addDocument( f
+                       , 'index_html'
+                       , id+"'s Home Page"
+                       , id+"'s front page"
+                       , "structured-text"
+                       , (DEFAULT_MEMBER_CONTENT % id)
+                       )
+            f.index_html._setPortalTypeName( 'Document' )
+            # Overcome an apparent catalog bug.
+            f.index_html.reindexObject()
+            wftool = getToolByName( f, 'portal_workflow' )
+            wftool.notifyCreated( f.index_html )
 
 
     security.declareProtected(SetOwnProperties, 'getLastLogin')





More information about the zopeorg-checkins mailing list