def get_items(self): context = aq_inner(self.context) if IATFolder.providedBy(context) or \ IATBTreeFolder.providedBy(context): res = self.context.getFolderContents( contentFilter={ 'sort_on': 'getObjPositionInParent', 'portal_type': self.settings.allowed_types, 'limit': self.settings.limit } ) elif IATTopic.providedBy(context): if self.settings.limit and self.settings.limit > 0: res = context.queryCatalog(batch=True, b_size=self.settings.limit, portal_type= self.settings.allowed_types, ) else: res = context.queryCatalog( portal_type=self.settings.allowed_types, limit=self.settings.limit ) elif ICollection.providedBy(context): query = queryparser.parseFormquery( context, context.getRawQuery()) query['portal_type'] = self.settings.allowed_types query['limit'] = self.settings.limit if self.settings.limit and self.settings.limit > 0: res = context.queryCatalog(batch=True, b_size=self.settings.limit) else: res = context.queryCatalog(query) return res
def getBanners(self): """ Returns a list of objects that provide ICarouselBanner. """ banner_brains = [] if IFolderish.providedBy(self.context): catalog = getToolByName(self.context, "portal_catalog") banner_brains = catalog.searchResults( { "path": "/".join(self.context.getPhysicalPath()), "object_provides": ICarouselBanner.__identifier__, "sort_on": "getObjPositionInParent", } ) elif IATTopic.providedBy(self.context): banner_brains = self.context.queryCatalog() banner_objects = [b.getObject() for b in banner_brains] banner_objects = [b for b in banner_objects if ICarouselBanner.providedBy(b)] # Shuffle carousel images if needde if self.getSettings().random_order: shuffle(banner_objects) return banner_objects
def get_items(self): context = aq_inner(self.context) res = "" if IATFolder.providedBy(context) or \ IATBTreeFolder.providedBy(context): res = self.context.getFolderContents( contentFilter={ 'sort_on': 'getObjPositionInParent', 'portal_type': self.settings.allowed_types, 'limit': self.settings.limit }) elif IATTopic.providedBy(context): if self.settings.limit and self.settings.limit > 0: res = context.queryCatalog( batch=True, b_size=self.settings.limit, portal_type=self.settings.allowed_types, ) else: res = context.queryCatalog( portal_type=self.settings.allowed_types, limit=self.settings.limit) elif ICollection.providedBy(context): query = queryparser.parseFormquery(context, context.getRawQuery()) query['portal_type'] = self.settings.allowed_types query['limit'] = self.settings.limit if self.settings.limit and self.settings.limit > 0: res = context.queryCatalog(batch=True, b_size=self.settings.limit) else: res = context.queryCatalog(query) return res
def getBanners(self): """ Returns a list of objects that provide ICarouselBanner. """ banner_brains = [] if IFolderish.providedBy(self.context): catalog = getToolByName(self.context, 'portal_catalog') banner_brains = catalog.searchResults({ 'path': '/'.join(self.context.getPhysicalPath()), 'object_provides': ICarouselBanner.__identifier__, 'sort_on': 'getObjPositionInParent', }) elif IATTopic.providedBy(self.context): banner_brains = self.context.queryCatalog() banner_objects = [b.getObject() for b in banner_brains] banner_objects = [ b for b in banner_objects if ICarouselBanner.providedBy(b) ] # Shuffle carousel images if needde if self.getSettings().random_order: shuffle(banner_objects) return banner_objects
def checkInterface(self, interface, unset=''): """ """ def flagCondition(): """ se verifico una interfaccia di unset (unset=True), la condizione di visualizzazione della relativa azione e' il valore ritornato dal metodo se verifico una interfaccia di set, la condizione di visualizzazione della relativa azione e' negato rispetto al valore ritornato dal metodo """ if unset: return False return True if not interfaces_dict.has_key(interface): return flagCondition() context = self.context if self.context.restrictedTraverse('@@plone').isDefaultPageInFolder(): context = context.aq_inner.aq_parent if not (IBaseFolder.providedBy(context) or IATTopic.providedBy(context)): return flagCondition() iface = interfaces_dict[interface] return iface.providedBy(context)
def query_contents(self, iface=None, full_objects=False): if iface == None: contentFilter = getattr(self, '_filtering', None) iface = contentFilter and {'object_provides': contentFilter} or {} if IATTopic.providedBy(self.context): return self.context.queryCatalog(full_objects = full_objects, **iface) return self.context.getFolderContents(contentFilter=iface, full_objects = full_objects)
def getImages(self): """docstring for getImages""" if IATTopic.providedBy(self.context): images = self.context.queryCatalog() else: ct_tool = getToolByName(self.context, "portal_catalog") images = ct_tool(Type = 'Image', path = '/'.join(self.context.getPhysicalPath()), sort_on="getObjPositionInParent") return images
def getImageExample(self, obj): """ """ if IATTopic.providedBy(obj): images = obj.queryCatalog() else: ct_tool = getToolByName(self.context, "portal_catalog") images = ct_tool(Type = 'Image', path = '/'.join(obj.getPhysicalPath())) if len(images) > 0: return images[0].getURL() return None
def get_events(self): context = self.context pc = context.portal_catalog if IATTopic.providedBy(context): query = context.buildQuery() elif IATFolder.providedBy(context): current_path = "/".join(context.getPhysicalPath()) query = {"portal_type": "Event", "path": {"query": current_path}} query["sort_on"] = "start" if self.past_events: query["start"] = {"query": DateTime(), "range": "max"} query["sort_order"] = "reverse" else: query["start"] = {"query": DateTime(), "range": "min"} return pc.searchResults(query)
def getImages(self): """ """ target = self.target items = [] if IATTopic.providedBy(target): items = target.queryCatalog() else: items = self.catalog_tool.searchResults(portal_type=['Image',], path = {'query' : '/'.join(target.getPhysicalPath()),'depth' : 100}) limit = self.data.limit images = [] images = [ item.getURL() + '/' + self.data.size for item in items ] if limit: return images[:limit] return images
def get_events(self): context = self.context pc = context.portal_catalog if IATTopic.providedBy(context): query = context.buildQuery() elif IATFolder.providedBy(context): current_path = "/".join(context.getPhysicalPath()) query = { "portal_type": "Event", "path": { "query": current_path }} query["sort_on"] = "start" if self.past_events: query["start"] = { "query": DateTime(), "range" : "max"} query["sort_order"] = "reverse" else: query["start"] = { "query": DateTime(), "range" : "min"} return pc.searchResults(query)
def get_items(self): if IATFolder.providedBy(self.context) or \ IATBTreeFolder.providedBy(self.context): res = self.context.getFolderContents( contentFilter={ 'sort_on': 'getObjPositionInParent', 'portal_type': self.settings.allowed_types, 'limit': self.settings.limit } ) elif IATTopic.providedBy(self.context): res = aq_inner(self.context).queryCatalog( portal_type=self.settings.allowed_types, limit=self.settings.limit ) if self.settings.limit == 0: return res else: return res[:self.settings.limit]
def _getSlotItems(self, slot_number, folder_name='homepage', base_name="slot", num_items=DEFAULT_NUMBER_OF_ITEMS): """Helper to be reused below. We're using sensible defaults for the optional args: folder_name: name of folder containing our Collections. Can be a full path relative to the root. base_name: used with slot_number to construct the id of the Collection. """ slot_obj = self.portal.restrictedTraverse( "%s/%s%s" % (folder_name, base_name, slot_number), None) if slot_obj is None: return None if IATTopic.providedBy(slot_obj): return [ brain.getObject() for brain in slot_obj.queryCatalog()[:num_items] ] else: return [ slot_obj, ]
def getEvents(self, start=None, end=None): """ searches the catalog for event like objects in the given time frame """ query_func = self.portal_catalog.searchResults if IATFolder.providedBy(self.context): query_func = self.context.getFolderContents elif IATTopic.providedBy(self.context) \ and self.context.buildQuery() is not None: query_func = self.context.queryCatalog query = {'object_provides': ICalendarSupport.__identifier__} if start: query['start'] = {'query': DateTime(int(start)), 'range': 'min'} if end: query['end'] = {'query': DateTime(int(end)), 'range': 'max'} brains = query_func(query) jret = [] for brain in brains: jdict = self._buildDict(brain) jret.append(jdict) return jret