Example #1
0
    def _get_items(self, ctype, state=None, sort=False):
        """get filtered items """

        if ctype is None:
            res = self.context.getRelatedItems()
            if sort:
                return sorted(res, key=lambda obj: sortable_title(obj)())
            return res

        if not isinstance(ctype, list) and not isinstance(ctype, tuple):
            ctype = [ctype]

        items = [
            rel for rel in self.context.getRelatedItems()
            if rel and rel.portal_type in ctype
        ]

        if state:
            wf_tool = getToolByName(self.context, 'portal_workflow')
            items = [
                rell for rell in items
                if wf_tool.getInfoFor(rell, 'review_state') in state
            ]
        if sort:
            return sorted(items, key=lambda obj: sortable_title(obj)())

        return items
Example #2
0
def sortable_title_transform(brain, value):
    """This transform should only be used for sorting items by title
    using the sortable_title indexer. Its used as wrapper for for the
    CatalogTool sortable_title indexer for making it callable like a
    normal ftw.table transform.
    """

    return sortable_title(brain)()
Example #3
0
 def get_sortable_title(self, analysis):
     analysis = api.get_object(analysis)
     sort_key = analysis.getSortKey()
     if sort_key is None:
         sort_key = 999999
     title = sortable_title(analysis)
     if callable(title):
         title = title()
     return "{:010.3f}{}".format(sort_key, title)
Example #4
0
def org_sortable_title_index(obj):
    """Indexer of 'sortable_title' for IOrganization. Stores organization chain concatenated by | !"""
    # sortable_title(org) returns <plone.indexer.delegate.DelegatingIndexer object> that must be called
    parts = [
        sortable_title(org)() for org in obj.get_organizations_chain()
        if org.title
    ]
    parts and parts.append('')
    return '|'.join(parts)
Example #5
0
    def all_items(self):
        res = []

        for item in self.assigned():
            adapter = sortable_title(item)
            st = adapter()
            o = Item(
                item.Title(),
                self.get_description(item),
                self.get_icons(item),
                st,
                item.absolute_url(),
            )
            res.append(o)

        combine = self.data.get("combine_results", False)

        if not combine:
            if res:
                if self.data.get("sortBy", "") == "NAME":
                    return sorted(res, key=lambda o: o.sortable_title)
                else:
                    return res

        for item in self.items():
            obj = item.getObject()
            adapter = sortable_title(obj)
            st = adapter()
            o = Item(
                item.Title,
                item.Description,
                self.get_icons(item),
                st,
                item.getURL(),
            )
            res.append(o)

        return res
Example #6
0
    def _get_items(self, ctype, state=None, sort=False):
        """get filtered items """

        if ctype is None:
            res = self.context.getRelatedItems()
            if sort:
                return sorted(res, key=lambda obj: sortable_title(obj)())
            return res

        if not isinstance(ctype, list) and not isinstance(ctype, tuple):
            ctype = [ctype]

        items = [rel for rel in self.context.getRelatedItems()
                    if rel and rel.portal_type in ctype]

        if state:
            wf_tool = getToolByName(self.context, 'portal_workflow')
            items = [rell for rell in items
                      if wf_tool.getInfoFor(rell, 'review_state') in state]
        if sort:
            return sorted(items, key=lambda obj: sortable_title(obj)())

        return items
Example #7
0
def org_sortable_title_index(obj):
    """ Return organization chain concatenated by | """
    # sortable_title(org) returns <plone.indexer.delegate.DelegatingIndexer object> that must be called
    parts = [sortable_title(org)() for org in obj.get_organizations_chain() if org.title]
    parts and parts.append('')
    return '|'.join(parts)
Example #8
0
def sortable_organization(obj):
    return sortable_title(obj.organization)
Example #9
0
 def getSortKey(self, item):
     from Products.CMFPlone.CatalogTool import sortable_title
     return sortable_title(item)()
Example #10
0
def sortable_organization(obj):
    return sortable_title(obj.organization)