def set_positions_in_parent(self): """ Set positions of container object given by `id` and `position` """ data = json.loads(self.request.BODY) num_data = len(data) for i, item in enumerate(data): path = item['path'] position = item['position'] print(i, num_data, path, position) obj = self.context.restrictedTraverse(path, None) if obj is None: continue try: ordered = IOrderedContainer(obj.aq_parent) except (AttributeError, TypeError) as e: print(e) continue try: ordered.moveObjectToPosition(obj.getId(), position) except ValueError as e: print(e) continue obj.reindexObject(idxs=['getObjPositionInParent']) self.request.response.setStatus(204)
def set_position_in_parent(self): """ Set position of container object given by `id` and `position` """ data = json.loads(self.request.BODY) position = int(data["position"]) ordered = IOrderedContainer(self.context.aq_parent) ordered.moveObjectToPosition(self.context.getId(), position) self.request.response.setStatus(204)
def revertOrder(obj, eve): """ Use IOrderedContainer interface to move an object to top of folder on creation. """ parent = obj.aq_inner.aq_parent ordered = IOrderedContainer(parent, None) if ordered is not None: ordered.moveObjectToPosition(obj.getId(), 0)
def import_ordering(self, data): results = 0 total = len(data) for index, item in enumerate(data, start=1): obj = api.content.get(UID=item["uuid"]) if not obj: continue ordered = IOrderedContainer(obj.__parent__, None) if not ordered: continue ordered.moveObjectToPosition(obj.getId(), item["order"]) if not index % 1000: logger.info(u"Ordered {} ({}%) of {} items".format( index, round(index / total * 100, 2), total)) results += 1 return results