def _checkId(self, id, allow_dup=0): content = self.get_content(name=id) if len(content): if ILibraryFolderProxy.providedBy(content[0]): return PortalFolderBase._checkId(self, id, allow_dup) BTreeFolder2Base._checkId(self, id, allow_dup)
def __init__(self, id, title=''): # BBB To be removed in Plone 3.5 log_deprecated("LargePloneFolder is deprecated and will be removed in " "Plone 3.5. Please use ATBTreeFolder from ATCT instead.") BTreeFolder2Base.__init__(self, id) BasePloneFolder.__init__(self, id, title) self.id=id self.title=title
def __getattr__(self, name): if name.startswith('__') or name == '_v__providedBy__': raise AttributeError(name) try: return DexterityContent.__getattr__(self, name) except AttributeError: pass return BTreeFolder2Base.__getattr__(self, name)
def fix_folderish_types(self): log = self.mklog() catalog = api.portal.get_tool("portal_catalog") ordering_nb = btree_nb = 0 for brain in catalog(): obj = brain.getObject() is_container = isinstance(obj, BTreeFolder2Base) if not is_container: continue if not IOrdering.providedBy(obj): alsoProvides(obj, IOrdering) obj.reindexObject(["object_provides"]) ordering_nb += 1 if obj._tree is None: BTreeFolder2Base._initBTrees(obj) btree_nb += 1 log("{0} objects IOrdering interface have been fixed.".format( ordering_nb)) log("{0} objects tree have been fixed.".format(btree_nb))
def migrate_patient_item_to_container(portal): """Migrate patient objects to be folderish Base class changed from Item -> Container https://community.plone.org/t/changing-dx-content-type-base-class-from-item-to-container http://blog.redturtle.it/2013/02/25/migrating-dexterity-items-to-dexterity-containers """ logger.info("Migrate patients to be folderish ...") patients = portal.patients for patient in patients.objectValues(): pid = patient.getId() patients._delOb(pid) patient.__class__ = Patient patients._setOb(pid, patient) BTreeFolder2Base._initBTrees(patients[pid]) patients[pid].reindexObject() transaction.commit() logger.info("Migrate patients to be folderish [DONE]")
def migrate_base_class_to_new_class(obj, indexes=[ 'is_folderish', 'object_provides', ], old_class_name='', new_class_name='', migrate_to_folderish=False, ): if not old_class_name: old_class_name = get_old_class_name_string(obj) if not new_class_name: new_class_name = get_portal_type_name_string(obj) if not new_class_name: logger.warning( 'The type {0} has no fti!'.format(obj.portal_type)) return False was_item = not isinstance(obj, BTreeFolder2Base) if old_class_name != new_class_name: obj_id = obj.getId() module_name, class_name = new_class_name.rsplit('.', 1) module = importlib.import_module(module_name) new_class = getattr(module, class_name) # update obj class parent = obj.__parent__ parent._delOb(obj_id) obj.__class__ = new_class parent._setOb(obj_id, obj) is_container = isinstance(obj, BTreeFolder2Base) if was_item and is_container or migrate_to_folderish and is_container: # If Itemish becomes Folderish we have to update obj _tree BTreeFolder2Base._initBTrees(obj) # reindex obj.reindexObject(indexes) return True
def _checkId(self, id, allow_dup=0): PortalFolderBase._checkId(self, id, allow_dup) BTreeFolder2Base._checkId(self, id, allow_dup)
def __init__(self, id, title=''): PortalFolderBase.__init__(self, id, title) BTreeFolder2Base.__init__(self, id)
def _checkId(self, id, allow_dup=0): BasePloneFolder._checkId(self, id, allow_dup) BTreeFolder2Base._checkId(self, id, allow_dup)
def __init__(self, id=None, **kwargs): PortalFolderBase.__init__(self, id) BTreeFolder2Base.__init__(self, id) DexterityContent.__init__(self, id, **kwargs)