| Total Complexity | 4 |
| Total Lines | 40 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | # -*- coding: utf-8 -*- |
||
| 2 | |||
| 3 | from bika.lims import api |
||
| 4 | from plone.indexer import indexer |
||
| 5 | from Products.CMFCore.interfaces import IContentish |
||
| 6 | from Products.CMFPlone.CatalogTool import \ |
||
| 7 | sortable_title as plone_sortable_title |
||
| 8 | from Products.CMFPlone.utils import safe_callable |
||
| 9 | from senaite.core.catalog import SENAITE_CATALOG |
||
| 10 | from senaite.core.interfaces import ISenaiteCatalog |
||
| 11 | from senaite.core.catalog.utils import get_searchable_text_tokens |
||
| 12 | |||
| 13 | |||
| 14 | @indexer(IContentish) |
||
| 15 | def is_active(instance): |
||
| 16 | """Returns False if the status of the instance is 'cancelled' or 'inactive'. |
||
| 17 | Otherwise returns True |
||
| 18 | """ |
||
| 19 | return api.is_active(instance) |
||
| 20 | |||
| 21 | |||
| 22 | @indexer(IContentish) |
||
| 23 | def sortable_title(instance): |
||
| 24 | """Uses the default Plone sortable_text index lower-case |
||
| 25 | """ |
||
| 26 | title = plone_sortable_title(instance) |
||
| 27 | if safe_callable(title): |
||
| 28 | title = title() |
||
| 29 | return title.lower() |
||
| 30 | |||
| 31 | |||
| 32 | @indexer(IContentish, ISenaiteCatalog) |
||
| 33 | def listing_searchable_text(instance): |
||
| 34 | """ Retrieves all the values of metadata columns in the catalog for |
||
| 35 | wildcard searches |
||
| 36 | :return: all metadata values joined in a string |
||
| 37 | """ |
||
| 38 | tokens = get_searchable_text_tokens(instance, SENAITE_CATALOG) |
||
| 39 | return u" ".join(tokens) |
||
| 40 |