def testReorderThenCopyTemplateKeepsOrder(self):
     original_order = [
         "one",
         "two",
         "three",
         "four",
         "five",
         "six",
         "seven",
         "eight",
         "nine",
         "ten",
     ]
     sorted_order = list(sorted(original_order))
     module = self.createModule()
     for title in original_order:
         self._create(module, "euphorie.risk", title, title=title)
     self.assertEqual([r.title for r in module.values()], original_order)
     ordering = IExplicitOrdering(module)
     ordering.orderObjects("title")
     self.assertEqual([r.title for r in module.values()], sorted_order)
     request = module.REQUEST
     survey = aq_parent(module)
     container = self.portal.sectors.nl.sector
     target = self._create(container, "euphorie.surveygroup", "target")
     copy = AddForm(container, request).copyTemplate(survey, target)
     self.assertEqual([r.title for r in copy["module"].values()], sorted_order)
示例#2
0
    def __iter__(self):
        for item in self.previous:

            if item["_type"] == "story":
                #store the featured image
                featured_image_uid = item.get('featured_image', None)
                if featured_image_uid is not None:
                    self.featured_images[featured_image_uid] = item['_uid']
                yield item
                continue

            if item["_type"] == "Image":
                #look for this image in the featured images dict
                story_uid = self.featured_images.get(item['_uid'], None)
                if story_uid is not None:
                    story = api.content.get(UID=story_uid)
                    try:
                        adapter = IExplicitOrdering(story)
                    except TypeError:
                        pass
                    else:
                        adapter.moveObjectsToTop(item['_id'])
                    finally:
                        #delete from dict to save some memory
                        del self.featured_images[item['_uid']]

                yield item
                continue

            yield item
示例#3
0
    def render(self):
        order = self.request.form.get("order[]")
        if not order or not isinstance(order, list):
            return

        orderer = IExplicitOrdering(aq_inner(self.context))
        for (pos, id) in enumerate(order):
            id = id.split("-", 1)[1]
            orderer.moveObjectToPosition(id, pos)

        return
示例#4
0
    def __call__(self):
        order = self.request.form.get("order[]")
        if not order or not isinstance(order, list):
            return

        # If we get an empty element in between, it means we're in some sort
        # of interim state. Skip, so that we avoid ConflictError
        if order.count("") > 1:
            return

        orderer = IExplicitOrdering(aq_inner(self.context))
        for (pos, id) in enumerate(order):
            if id == "" or "-" not in id:
                continue
            id = id.split("-", 1)[1]
            orderer.moveObjectToPosition(id, pos)

        return