def _get_position_in_parent(obj): # Use IOrderedContainer interface to extract the object's manual ordering position parent = obj.aq_inner.aq_parent ordered = IOrderedContainer(parent, None) if ordered is not None: return ordered.getObjectPosition(obj.getId()) return 0
def getObjPositionInParent(obj): """ Helper method for catalog based folder contents. """ parent = aq_parent(aq_inner(obj)) ordered = IOrderedContainer(parent, None) if ordered is not None: return ordered.getObjectPosition(obj.getId()) return 0
def keys(param): """ Goal: order by level of folder, parent folder, position in folder,""" (obj, path) = param level = len(path.split('/')) parent = aq_parent(aq_inner(obj)) ordered = IOrderedContainer(parent, None) if ordered is not None: return (level, path, ordered.getObjectPosition(obj.getId())) return (level, path, 0)
def _getPositionInParent(obj): parent = aq_parent(aq_inner(obj)) ordered = IOrderedContainer(parent, None) if ordered is not None: pos = ordered.getObjectPosition(obj.getId()) else: pos = 0 return pos
def get_position_in_parent(obj, path): uid = IUUID(obj, None) if not uid: return parent = obj.__parent__ ordered = IOrderedContainer(parent, None) if ordered is not None: order = ordered.getObjectPosition(obj.getId()) results.append({"uuid": uid, "order": order}) return
def getObjPositionInParent(obj): """ Helper method for catalog based folder contents. Overwritten here to avoid problem during unindexing. """ parent = aq_parent(aq_inner(obj)) ordered = IOrderedContainer(parent, None) if ordered is not None: try: return ordered.getObjectPosition(obj.getId()) except ValueError: return 0 return 0
def getObjPositionInParent(obj): """ Helper method for catalog based folder contents. >>> from Products.CMFPlone.CatalogTool import getObjPositionInParent >>> getObjPositionInParent(self.folder) 0 """ parent = aq_parent(aq_inner(obj)) ordered = IOrderedContainer(parent, None) if ordered is not None: return ordered.getObjectPosition(obj.getId()) return 0
def __call__(self, config): parent = aq_parent(aq_inner(self.context)) klass = self.context.__class__ owner = self.context.getOwner() data = {'_classname': klass.__name__, '_class': klass.__module__ + '.' + klass.__name__, '_id': self.context.getId(), '_owner': owner and owner.getId(), '_path': '/'.join(self.context.getPhysicalPath()), '_type': self.context.portal_type} ordered_parent = IOrderedContainer(parent, None) if ordered_parent: data['_obj_position_in_parent'] = ordered_parent.getObjectPosition( self.context.getId()) return data
def __call__(self, config): parent = aq_parent(aq_inner(self.context)) klass = self.context.__class__ owner = self.context.getOwner() data = { '_classname': klass.__name__, '_class': klass.__module__ + '.' + klass.__name__, '_id': self.context.getId(), '_owner': owner and owner.getId(), '_path': '/'.join(self.context.getPhysicalPath()), '_type': self.context.portal_type } ordered_parent = IOrderedContainer(parent, None) if ordered_parent: data['_obj_position_in_parent'] = ordered_parent.getObjectPosition( self.context.getId()) return data
def get_position_in_parent(obj): parent = obj.aq_inner.aq_parent ordered = IOrderedContainer(parent, None) if ordered is not None: return ordered.getObjectPosition(obj.getId()) return 0
def __call__(self): log = self.mklog() real = timer() self.install_folderish_types() log("collective.folderishtypes installed.") catalog = api.portal.get_tool("portal_catalog") catalog.clearFindAndRebuild() log("Portal catalog has been rebuilt.") changed_base_classes = [ "plone.app.contenttypes.content.Document", "plone.app.contenttypes.content.NewsItem", "plone.app.contenttypes.content.Event", ] migrated = [] not_migrated = [] for brain in catalog(): obj = brain.getObject() old_class_name = dxmigration.get_old_class_name_string(obj) if old_class_name in changed_base_classes: prevented_delete = prevented_move = False obj_id = obj.getId() parent = aq_parent(aq_inner(obj)) if IPreventDelete.providedBy(obj): prevented_delete = True noLongerProvides(obj, IPreventDelete) if IPreventMoveOrRename.providedBy(obj): prevented_move = True noLongerProvides(obj, IPreventMoveOrRename) position_in_parent = None ordered = IOrderedContainer(parent, None) if ordered is not None: position_in_parent = ordered.getObjectPosition(obj_id) if dxmigration.migrate_base_class_to_new_class( obj, migrate_to_folderish=True): migrated.append(obj) if position_in_parent is not None: ordered.moveObject(obj_id, position_in_parent) if prevented_delete: alsoProvides(obj, IPreventDelete) if prevented_move: alsoProvides(obj, IPreventMoveOrRename) else: not_migrated.append(obj) if migrated: log("{0} objects have been migrated.".format(len(migrated))) if not_migrated: log( "{0} objects have NOT been migrated.".format( len(not_migrated)), level="warn", ) catalog.clearFindAndRebuild() log("Portal catalog has been rebuilt.") msg = "Processed folderish types migration in {0}.".format(real.next()) log(msg)