Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    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,
         ]
Ejemplo n.º 14
0
    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