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)
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
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
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