diff --git a/product/ERP5Type/Core/Folder.py b/product/ERP5Type/Core/Folder.py index 296bc098703b5a45e046ffde5322fd31ae800db5..a507a880c4204ad9f7c6069b4d27a2b9d61f12ae 100644 --- a/product/ERP5Type/Core/Folder.py +++ b/product/ERP5Type/Core/Folder.py @@ -64,7 +64,7 @@ from random import randint import os -from zLOG import LOG, PROBLEM +from zLOG import LOG, PROBLEM, WARNING import warnings REINDEX_SPLIT_COUNT = 100 # if folder containes more than this, reindexing should be splitted. @@ -435,14 +435,19 @@ class Folder(CopyContainer, CMFBTreeFolder, CMFHBTreeFolder, Base, FolderMixIn, if self._plugin is None: if self._isHBTree: self._plugin = CMFHBTreeFolder + self._generatePluginMethod() elif self._isBTree: self._plugin = CMFBTreeFolder else: - raise ValueError, "No plugin defined" - self._generatePluginMethod() + raise ValueError, 'No plugin defined' self._plugin.__init__(self, self.id) return FolderMixIn.newContent(self, *args, **kw) + security.declareProtected( Permissions.ManagePortal, 'migrateToHBTree' ) + def resetPlugin(self): + """ reset plugin attribute """ + self._plugin = None + security.declareProtected(Permissions.View, 'isBTree') def isBTree(self): """ Return if folder is a BTree or not """ @@ -925,12 +930,8 @@ class Folder(CopyContainer, CMFBTreeFolder, CMFHBTreeFolder, Base, FolderMixIn, def _getVisibleAllowedContentTypeList(): hidden_type_list = portal.portal_types.getTypeInfo(self)\ .getHiddenContentTypeList() - try: - return [ ti.id for ti in self._plugin.allowedContentTypes(self) - if ti.id not in hidden_type_list ] - except AttributeError: - return [ ti.id for ti in CMFBTreeFolder.allowedContentTypes(self) - if ti.id not in hidden_type_list ] + return [ ti.id for ti in CMFBTreeFolder.allowedContentTypes(self) + if ti.id not in hidden_type_list ] user = str(_getAuthenticatedUser(self)) portal_type = self.getPortalType() @@ -974,10 +975,7 @@ class Folder(CopyContainer, CMFBTreeFolder, CMFHBTreeFolder, Base, FolderMixIn, # account i18n into consideration. # XXX So sorting should be done in skins, after translation is performed. def compareTypes(a, b): return cmp(a.title or a.id, b.title or b.id) - try: - type_list = self._plugin.allowedContentTypes(self) - except AttributeError: - type_list = CMFBTreeFolder.allowedContentTypes(self) + type_list = CMFBTreeFolder.allowedContentTypes(self) type_list.sort(compareTypes) return ['/'.join(x.getPhysicalPath()) for x in type_list]