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 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
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)