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)
Beispiel #3
0
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)
Beispiel #4
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