[Zope-CMF] adding two types with different permissions

Florent Guillaume fg@nuxeo.com
Wed, 31 Jul 2002 13:42:53 +0000 (UTC)


kapil thangavelu  <kthangavelu@earthlink.net> wrote:
> On Monday 29 July 2002 12:53 pm, Karl Anderson wrote:
> > I'm trying to add two types from the same Zope product.  Because I
> > want separate permissions for each's constructors, I'm using two
> > ContentInit calls.  However, this isn't working.
> 
> short answer, as far as i can tell, it isn't possible. the long answer, is 
> infinitely more ugly.
> 
> if you do try it as below, you should get the results and registration
> of the last ContentInit, assuming everything else is working.

Why wouldn't it work ? The classes, constructors and fti are all
different. I don't see the problem.

Florent




> > The Post ContentInit call below seems to wreck everything.  Starting
> > Zope with the code below in the shared __init__.py causes neither type
> > to show up in the types tool.  If I comment out the Post ContentInit,
> > the forum type gets added.  If I use only the commented-out
> > ContentInit that inits both, it works as well, but I can't use a
> > separate permission in that case.
> >
> > I'm not getting a startup error or any indication of failure in the
> > console that starts Zope.
> >
> > Seems like Post is wrecking it, of course, but then why is the double
> > init working?
> >
> > factory_type_informations from both products appended.
> >
> >
> > from __init__.py:
> >
> > def initialize( context ):
> >
> >     #utils.ContentInit( 'CMF Forum Content My',
> >     #                   content_types = (Forum.ForumMy, Post.PostMy),
> >     #                   permission = 'Add portal content',
> >     #                   extra_constructors = (Forum.addForum,
> > Post.addPost), #                   fti = (Forum.factory_type_information,
> >     #                          Post.factory_type_information)
> >     #                 ).initialize( context )
> >     utils.ContentInit( 'CMF Forum My',
> >                        content_types = (Forum.ForumMy,),
> >                        permission = 'Add portal content',
> >                        extra_constructors = (Forum.addForum,),
> >                        fti = (Forum.factory_type_information,)
> >                      ).initialize( context )
> >     utils.ContentInit( 'CMF Post My',
> >                        content_types = (Post.PostMy,),
> >                        permission = 'Add portal content',
> >                        extra_constructors = (Post.addPost,),
> >                        fti = (Post.factory_type_information,)
> >                      ).initialize( context )
> >
> >
> >
> >
> >
> >
> > from Post.py:
> >
> > factory_type_information =   { 'id'             : 'PostMy'
> >                              , 'portal_type'    : 'PostMy'
> >                              , 'meta_type'      : 'PostMy'
> >                              , 'description'    : """\
> > Posts are like Discussion items but they just can be added into Forums."""
> >                              , 'icon'           : 'icon_post.gif'
> >                              , 'product'        : 'CMFForumMy'
> >                              , 'factory'        : 'addPost'
> >                              , 'filter_content_types' : 1
> >                              , 'allowed_content_types' : ('PostMy', )
> >                              #, 'immediate_view' : 'metadata_edit_form'
> >                              , 'immediate_view' : 'cwip_metadata_edit_form'
> >                              , 'global_allow'   : 0
> >                              , 'actions'        :
> >                                 ( { 'id'            : 'view'
> >                                   , 'name'          : 'View'
> >                                   , 'action'        : 'post_view'
> >                                   , 'permissions'   : (
> >                                       View, )
> >                                   }
> >                                 , { 'id'            : 'post_reply'
> >                                   , 'name'          : 'Reply'
> >                                   , 'action'        : 'forum_post_message'
> >                                   , 'permissions'   : (
> >                                       AddPortalContent, )
> >                                   }
> >                                 , { 'id'            : 'metadata'
> >                                   , 'name'          : 'Metadata'
> >                                   , 'action'        :
> > 'cwip_metadata_edit_form' , 'permissions'   : (ModifyPortalContent, ) }
> >                                 )
> >                              }
> >
> >
> > from Forum.py:
> >
> >
> > factory_type_information = { 'id'             : 'ForumMy'
> >                              , 'portal_type'	: 'ForumMy'
> >                              , 'meta_type'      : 'ForumMy'
> >                              , 'description'    : \
> >                              "Forums hold threaded discussions."
> >                              , 'icon'           : 'forum_icon.gif'
> >                              , 'product'        : 'CMFForumMy'
> >                              , 'factory'        : 'addForum'
> >                              , 'filter_content_types' : 1
> >                              , 'allowed_content_types' : ('PostMy', )
> >                              , 'immediate_view' : 'cwip_metadata_edit_form'
> >                              #, 'immediate_view' : 'forum_edit_form'
> >                              , 'actions'        :
> >                                 ( { 'id'            : 'view'
> >                                   , 'name'          : 'View'
> >                                   , 'action'        : 'forum_listing'
> >                                   , 'permissions'   : (View,)
> >                                   , 'category'      : 'folder'
> >                                   }
> >                                 , { 'id'            : 'edit'
> >                                   , 'name'          : 'Edit'
> >                                   , 'action'        : 'forum_edit_form'
> >                                   , 'permissions'   : (ManageProperties,)
> >                                   , 'category'      : 'folder'
> >                                   }
> >                                 , { 'id'            : 'localroles'
> >                                   , 'name'          : 'Local Roles'
> >                                   , 'action'        :
> > 'folder_localrole_form' , 'permissions'   : (ManageProperties,) ,
> > 'category'      : 'folder'
> >                                   }
> >                                 , { 'id'            : 'forum_post_message'
> >                                   , 'name'          : 'Post Message'
> >                                   , 'action'        : 'forum_post_message'
> >                                   , 'permissions'   : (AddPortalContent, )
> >                                   , 'category'      : 'folder'
> >                                   }
> >                                 , { 'id'            : 'metadata'
> >                                   , 'name'          : 'Metadata'
> >                                   , 'action'        :
> > 'cwip_metadata_edit_form' , 'permissions'   : (ModifyPortalContent, ) }
> >                                 )
> >                              }
-- 
Florent Guillaume, Nuxeo (Paris, France)
+33 1 40 33 79 87  http://nuxeo.com  mailto:fg@nuxeo.com