I created a special type agility in Plone 4.3.9 called PersonalPage, which should only be allowed in the specific Members_folder / userfolder folder . In its FTI by default <property name="global_allow">False</property>. A user folder is created in Member_folder with the uid of the authenticated user, in Plone 4.3.3:
if homefolder is None:
members_folder.invokeFactory('Folder', user_id)
userfolder = members_folder[user_id]
utils = userfolder.plone_utils
utils.changeOwnershipOf(userfolder, user_id,
1, None)
userfolder.setCreators([user_id])
roles = list(userfolder.get_local_roles_for_userid(user_id))
if 'Owner' not in roles:
roles.append('Owner')
userfolder.manage_setLocalRoles(user_id, roles)
if shasattr(userfolder, 'canSetConstrainTypes'):
userfolder.setConstrainTypesMode(1)
defaultAllowedTypes = userfolder.getLocallyAllowedTypes()
userfolder.setLocallyAllowedTypes(defaultAllowedTypes + ('personalpage',))
defaultAddableTypes = userfolder.getImmediatelyAddableTypes()
userfolder.setImmediatelyAddableTypes(defaultAddableTypes + ('personalpage',))
userfolder.reindexObjectSecurity()
userfolder.reindexObject()
But after running this script, the PersonalPage content type does not appear in the list of valid and valid user folder content types. What's wrong with it? Is there any other way to allow a content type that is added only for a folder?
source
share