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 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 moveObjectsToBottom(self, ids, subset_ids=None): """ Move specified sub-objects to bottom of container. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.moveObjectsToBottom(ids, subset_ids) else: return 0
def moveObjectToPosition(self, id, position, suppress_events=False): """ Move specified object to absolute position. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.moveObjectToPosition(id, position, suppress_events) else: return 0
def moveObjectToPosition(self, id, position, suppress_events=False): """ Move specified object to absolute position. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.moveObjectToPosition(id, position, suppress_events) else: return 0
def moveObjectsDown(self, ids, delta=1, subset_ids=None): """ Move specified sub-objects down by delta in container. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.moveObjectsDown(ids, delta, subset_ids) else: return 0
def orderable(self): if _is_collection(self.context): return False if IPloneSiteRoot.providedBy(self.context): return True ordering = self.context.getOrdering() return IExplicitOrdering.providedBy(ordering)
def getOrdering(self): if IPloneSiteRoot.providedBy(self.context): return self.context if getattr(self.context, "getOrdering", None): ordering = self.context.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering
def getOrdering(self): if IPloneSiteRoot.providedBy(self.context): return self.context ordering = self.context.getOrdering() if not IExplicitOrdering.providedBy(ordering): return None return ordering
def orderObjects(self, key, reverse=None): """ Order sub-objects by key and direction. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.orderObjects(key, reverse) else: return 0
def _supports_explicit_ordering(context): if IPloneSiteRoot.providedBy(context): return True if not IOrderableFolder.providedBy(context): return False ordering = context.getOrdering() return IExplicitOrdering.providedBy(ordering)
def __call__(self, item_id, delta, subset_ids=None): context = aq_inner(self.context) try: if not IOrderableFolder.providedBy(context): if not base_hasattr(context, 'moveObjectsByDelta'): # for instance, plone site root does not use plone.folder raise ValueError("Not an ordered folder.") else: ordering = context.getOrdering() if not IExplicitOrdering.providedBy(ordering): raise ValueError("Ordering disable on folder.") delta = int(delta) if subset_ids is not None: objectPos = self.context.getObjectPosition position_id = [(objectPos(id), id) for id in subset_ids] position_id.sort() if subset_ids != [id for position, id in position_id]: raise ValueError("Client/server ordering mismatch.") self.context.moveObjectsByDelta(item_id, delta, subset_ids) except ValueError as e: self.context.REQUEST.response.setStatus('BadRequest') return str(e) ploneUtils = getToolByName(self.context, 'plone_utils') ploneUtils.reindexOnReorder(self.context) return "<done />"
def getOrdering(self): if IPloneSiteRoot.providedBy(self.context): return self.context ordering = self.context.getOrdering() if not IExplicitOrdering.providedBy(ordering): return None return ordering
def orderObjects(self, key=None, reverse=None): """ Order sub-objects by key and direction. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.orderObjects(key, reverse) else: return 0
def moveObjectsDown(self, ids, delta=1, subset_ids=None): """ Move specified sub-objects down by delta in container. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.moveObjectsDown(ids, delta, subset_ids) else: return 0
def moveObjectsToBottom(self, ids, subset_ids=None): """ Move specified sub-objects to bottom of container. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.moveObjectsToBottom(ids, subset_ids) else: return 0
def getOrdering(context): if IPloneSiteRoot.providedBy(context): return context else: ordering = context.getOrdering() if not IExplicitOrdering.providedBy(ordering): return None return ordering
def getOrdering(context): if IPloneSiteRoot.providedBy(context): return context else: ordering = context.getOrdering() if not IExplicitOrdering.providedBy(ordering): return None return ordering
def moveObjectsByDelta(self, ids, delta, subset_ids=None, suppress_events=False): """ Move specified sub-objects by delta. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.moveObjectsByDelta(ids, delta, subset_ids, suppress_events) else: return 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
def orderable(self): """ """ context = aq_inner(self.context) if not IOrderableFolder.providedBy(context): if hasattr(context, 'moveObjectsByDelta'): # for instance, plone site root does not use plone.folder return True else: return False ordering = context.getOrdering() return IExplicitOrdering.providedBy(ordering)
def moveObjectsByDelta(self, ids, delta, subset_ids=None, suppress_events=False): """ Move specified sub-objects by delta. """ ordering = self.getOrdering() if IExplicitOrdering.providedBy(ordering): return ordering.moveObjectsByDelta(ids, delta, subset_ids, suppress_events) else: return 0
def testReorderThenCopyTemplateKeepsOrder(self): from Acquisition import aq_parent from plone.folder.interfaces import IExplicitOrdering from euphorie.content.surveygroup import AddForm original_order = [u"one", u"two", u"three", u"four", u"five", u"six", u"seven", u"eight", u"nine", u"ten"] sorted_order = list(sorted(original_order)) self.loginAsPortalOwner() 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 getOrdering(self): if IPloneSiteRoot.providedBy(self.context): return self.context try: ordering = self.context.aq_base.getOrdering() except AttributeError: if IOrderedContainer.providedBy(self.context): # Archetype return IOrderedContainer(self.context) return None if not IExplicitOrdering.providedBy(ordering): return None return ordering
def orderable(self): if IPloneSiteRoot.providedBy(self.context): return True ordering = self.context.getOrdering() return IExplicitOrdering.providedBy(ordering)