Ejemplo n.º 1
0
 def search_channels(self):
     if use_elasticsearch():
         ch = ChannelSearch(self.get_locale())
         offset, limit = self.get_page()
         ch.set_paging(offset, limit)
         ch.search_terms(request.args.get("q", ""))
         ch.add_filter(filters.verified_channel_boost())
         ch.add_filter(filters.negatively_boost_favourites())
         if request.args.get("order") == "latest":
             ch.date_sort("desc")
         items, total = ch.channels(with_owners=True), ch.total
     else:
         # DB fallback
         date_order = True if request.args.get("order") == "latest" else False
         items, total = get_db_channels(
             self.get_locale(), self.get_page(), query=request.args.get("q", ""), date_order=date_order
         )
     return dict(channels=dict(items=items, total=total))
Ejemplo n.º 2
0
def get_es_channels(locale, paging, category, category_boosts=None,
                    prefix_boosts=None, add_tracking=None, enable_promotion=True):
    cs = ChannelSearch(locale)
    cs.set_paging(*paging)
    # Boost popular channels based on ...
    if category_boosts:
        for boost in category_boosts:
            cs.add_filter(filters.category_boost(*boost))
    if prefix_boosts:
        for boost in prefix_boosts:
            cs.add_filter(filters.channel_prefix_boost(*boost))
    cs.add_filter(filters.boost_from_field_value('editorial_boost'))
    cs.add_filter(filters.negatively_boost_favourites())
    cs.add_filter(filters.channel_rank_boost(locale))
    cs.filter_category(category)
    if enable_promotion:
        cs.promotion_settings(category)
    cs.date_sort(request.args.get('date_order'))
    if request.args.get('user_id'):
        cs.add_term('owner', request.args.get('user_id'))
    channels = cs.channels(with_owners=True, add_tracking=add_tracking)
    return channels, cs.total