def add_sorting_widget(context):
    """
    As in version 7.1 we removed default sorting by effective date, in order
    to maintain backward compatibility we will add a sorting widget, hidden
    for all faceted navigable items where this widget is not present
    """
    ctool = getToolByName(context, 'portal_catalog')
    iface = interfaceToName(context, IFacetedNavigable)
    brains = ctool.unrestrictedSearchResults(object_provides=iface)

    count = 0
    for brain in brains:
        try:
            doc = brain.getObject()
            settings = ICriteria(doc)
            sorting = [criterion for criterion in settings.values()
                       if criterion.widget == 'sorting']
            if sorting:
                continue

            settings.add(
                'sorting', 'right',
                 title='Sort on', default='effective(reverse)',
                 hidden=True
            )
        except Exception, err:
            logger.exception(err)
        else:
            logger.info('Added sorting widget for: %s', doc.absolute_url())
            count += 1
Beispiel #2
0
def add_sorting_widget(context):
    """
    As in version 7.1 we removed default sorting by effective date, in order
    to maintain backward compatibility we will add a sorting widget, hidden
    for all faceted navigable items where this widget is not present
    """
    ctool = getToolByName(context, 'portal_catalog')
    iface = interfaceToName(context, IFacetedNavigable)
    brains = ctool.unrestrictedSearchResults(object_provides=iface)

    count = 0
    for brain in brains:
        try:
            doc = brain.getObject()
            settings = ICriteria(doc)
            sorting = [
                criterion for criterion in settings.values()
                if criterion.widget == 'sorting'
            ]
            if sorting:
                continue

            settings.add('sorting',
                         'right',
                         title='Sort on',
                         default='effective(reverse)',
                         hidden=True)
        except Exception, err:
            logger.exception(err)
        else:
            logger.info('Added sorting widget for: %s', doc.absolute_url())
            count += 1
def migrate_autocomplete_widget(context):
    """
    As in version 8.4 we added selection of the autocomplete suggestion
    view. To maintain backward compatibility we will set the value of
    this 'autocomplete_view' field to solr suggestions view.
    """
    ctool = getToolByName(context, 'portal_catalog')
    iface = interfaceToName(context, IFacetedNavigable)
    brains = ctool.unrestrictedSearchResults(object_provides=iface)

    count = 0
    for brain in brains:
        doc = brain.getObject()
        settings = ICriteria(doc)

        for criterion in settings.values():
            if criterion.widget == 'autocomplete':
                criterion.autocomplete_view = u'solr-autocomplete-suggest'
                logger.info(
                    'Set defaut autocomplete view of widget: %s',
                    criterion.title
                )
                count += 1

    logger.info('Migrated %s autocomplete widgets', count)
    def language_present(self):
        """ Is there any widget for Language index?
        """

        criteria = ICriteria(self.context)
        for criterion in criteria.values():
            if criterion.get('index', None) == 'Language':
                if not criterion.hidden:
                    return True
        return False
Beispiel #5
0
    def language_present(self):
        """ Is there any widget for Language index?
        """

        criteria = ICriteria(self.context)
        for criterion in criteria.values():
            if criterion.get('index', None) == 'Language':
                if not criterion.hidden:
                    return True
        return False
 def get_widgets(self, position='', section=''):
     """ Get all widgets
     """
     criteria = ICriteria(self.context)
     for criterion in criteria.values():
         if position and criterion.get('position', 'right') != position:
             continue
         if section and criterion.get('section', 'default') != section:
             continue
         widget = criteria.widget(wid=criterion.get('widget'))
         yield widget(self.context, self.request, criterion)
 def get_widgets(self, position='', section=''):
     """ Get all widgets
     """
     criteria = ICriteria(self.context)
     for criterion in criteria.values():
         if position and criterion.get('position', 'right') != position:
             continue
         if section and criterion.get('section', 'default') != section:
             continue
         widget = criteria.widget(wid=criterion.get('widget'))
         yield widget(self.context, self.request, criterion)
 def get_widgets(self, position="", section=""):
     """ Get all widgets
     """
     criteria = ICriteria(self.context)
     for criterion in criteria.values():
         if position and criterion.get("position", "right") != position:
             continue
         if section and criterion.get("section", "default") != section:
             continue
         widget = criteria.widget(wid=criterion.get("widget"))
         yield widget(self.context, self.request, criterion)
class DatasetsCollectionListView(BrowserView):

    title = u"Collections"

    def __init__(self, context, request):
        # TODO: update this to new workings of collection facet (now that we have a custom portal_type)
        super(DatasetsCollectionListView, self).__init__(context, request)
        self.datasets_url = self.context.absolute_url()
        self.criteria = ICriteria(self.context, {})
        self.defaults = {}
        self.criterion = None
        for criterion in self.criteria.values():
            if criterion.widget == 'pathselect':
                self.criterion = criterion
            if criterion.widget == 'sorting':
                default = criterion.default
                if not default:
                    continue
                if '(reverse)' in default:
                    default = default.replace('(reverse)', '', 1)
                    self.defaults['reversed'] = True
                self.defaults[criterion.getId()] = default

    def categories(self):
        for term in getUtility(IVocabularyFactory,
                               'collection_category_source')(self.context):
            yield term

    def get_browse_link(self, uuid):
        # return link into datasets facetedview to filter given collection
        collection = uuidToCatalogBrain(uuid)
        if not collection:
            return self.datasets_url
        params = dict(self.defaults)
        if self.criterion:
            params[self.criterion.getId()] = collection.UID
            return "{}#{}".format(self.datasets_url, urlencode(params))
        # fallback to original datasets_listing_view
        groupid = collection.getObject().__parent__.getId()
        params['datasets.filter.source:list'] = '{}-{}'.format(
            self.datesets_url, groupid, collection.getId)
        return "{}/?{}".format(self.datasets_url, urlencode(params))
class DatasetsCollectionListView(BrowserView):

    title = u"Collections"

    def __init__(self, context, request):
        # TODO: update this to new workings of collection facet (now that we have a custom portal_type)
        super(DatasetsCollectionListView, self).__init__(context, request)
        self.datasets_url = self.context.absolute_url()
        self.criteria = ICriteria(self.context, {})
        self.defaults = {}
        self.criterion = None
        for criterion in self.criteria.values():
            if criterion.widget == 'pathselect':
                self.criterion = criterion
            if criterion.widget == 'sorting':
                default = criterion.default
                if not default:
                    continue
                if '(reverse)' in default:
                    default = default.replace('(reverse)', '', 1)
                    self.defaults['reversed'] = True
                self.defaults[criterion.getId()] = default

    def categories(self):
        for term in getUtility(IVocabularyFactory, 'collection_category_source')(self.context):
            yield term

    def get_browse_link(self, uuid):
        # return link into datasets facetedview to filter given collection
        collection = uuidToCatalogBrain(uuid)
        if not collection:
            return self.datasets_url
        params = dict(self.defaults)
        if self.criterion:
            params[self.criterion.getId()] = collection.UID
            return "{}#{}".format(self.datasets_url, urlencode(params))
        # fallback to original datasets_listing_view
        groupid = collection.getObject().__parent__.getId()
        params['datasets.filter.source:list'] = '{}-{}'.format(self.datesets_url, groupid, collection.getId)
        return "{}/?{}" . format(self.datasets_url, urlencode(params))
def migrate_autocomplete_widget(context):
    """
    As in version 8.4 we added selection of the autocomplete suggestion
    view. To maintain backward compatibility we will set the value of
    this 'autocomplete_view' field to solr suggestions view.
    """
    ctool = getToolByName(context, 'portal_catalog')
    iface = interfaceToName(context, IFacetedNavigable)
    brains = ctool.unrestrictedSearchResults(object_provides=iface)

    count = 0
    for brain in brains:
        doc = brain.getObject()
        settings = ICriteria(doc)

        for criterion in settings.values():
            if criterion.widget == 'autocomplete':
                criterion.autocomplete_view = u'solr-autocomplete-suggest'
                logger.info('Set defaut autocomplete view of widget: %s',
                            criterion.title)
                count += 1

    logger.info('Migrated %s autocomplete widgets', count)