def front_more(request, nav_data={}, offset=0, tile_renderer="explore_tiles"): offset = int(offset) nav = browse.Navigation.load_json_or_404(nav_data, offset=offset) show_pins = request.user.is_authenticated() if request.user.is_authenticated(): metric = 'logged_in_infinite_scroll' else: metric = 'logged_out_infinite_scroll' @request.on_success.defer def record_scroll(): getattr(Metrics, metric).record(request, nav_data=nav_data, offset=offset) tiles = browse.get_browse_tiles(request.user, nav) #TODO delete once we've resolved the missing small_image issue. for tile in tiles: if hasattr(tile, 'check_for_small_image'): tile.check_for_small_image(request) return _disposition_tiles(request, dict(request=request), tiles, nav, show_pins=show_pins, tile_renderer=tile_renderer)
def test_get_browse_tiles_without_dupes(self): tiles = get_browse_tiles(create_user(), Navigation(sort='hot', offset=0, category=Category.ALL)) self.assertTrue(tiles) tile_ids = [tile.comment.id for tile in tiles] self.assertEqual(sorted(tile_ids), sorted(list(set(tile_ids))))
def test_get_browse_tiles_without_dupes(self): tiles = get_browse_tiles( create_user(), Navigation(sort='hot', offset=0, category=Category.ALL)) self.assertTrue(tiles) tile_ids = [tile.comment.id for tile in tiles] self.assertEqual(sorted(tile_ids), sorted(list(set(tile_ids))))
def landing(request, **kwargs): category = Category.get(name=MONSTER_GROUP) sort = 'new' kwargs['offset'] = request.GET.get('offset', 0) show_pins = False nav = browse.Navigation.load_json_or_404( kwargs, sort=sort, category=category, mobile=request.is_mobile, replies_only=True, public_only=True, ) front_data = { 'tiles': browse.get_browse_tiles(request.user, nav), 'render_options': tile_render_options(sort, show_pins), } # Overrides the default nav category that gets set in a context processor. request.nav_category = category sort_types = [] if sort in ['active', 'new']: sort_types.extend([ ('active threads', '/x/%s/active' % category.name), ('new posts', '/x/%s/new' % category.name) ]) active_sort_url = '/x/%s/%s' % (category.name, sort) nav_data = nav.dump_json() front_data.update(locals()) front_data['nav_category'] = category.details() front_data['DOMAIN'] = settings.DOMAIN return r2r_jinja('monster/landing.html', front_data)
def front_comments_view(request, sort, category=None, tag=None, homepage=False, **kwargs): # category here should always be a first-class Category object. if not isinstance(category, CategoryMixin) and tag is None: raise Http404() user = request.user show_pins = request.user.is_authenticated() if not request.user.is_authenticated() and sort == 'hot' and category == Category.ALL: sort_type = request.GET.get('hot_sort_type', 'order_by_time_plus_log_stickers_and_replies') if sort_type != 'control': kwargs['hot_sort_type'] = sort_type kwargs['offset'] = request.GET.get('offset', 0) nav = browse.Navigation.load_json_or_404( kwargs, sort=sort, category=category, tag=tag, mobile=request.is_mobile, ) front_data = { 'tiles': browse.get_browse_tiles(request.user, nav), 'render_options': tile_render_options(sort, show_pins), 'viewer_is_following_tag': tag and Tag(tag).user_is_following(request.user) } #TODO delete once we've resolved the missing small_image issue. for tile in front_data['tiles']: if hasattr(tile, 'check_for_small_image'): tile.check_for_small_image(request) # Overrides the default nav category that gets set in a context processor. if category is not None: request.nav_category = category if tag is not None: request.nav_tag = tag popular_tag_link = "/x/{}".format(tag) latest_tag_link = "/x/{}/new".format(tag) best_tag_link = "/x/{}/best".format(tag) else: popular_tag_link = "/x/everything" latest_tag_link = "/x/everything/new" best_tag_link = "/x/everything/best" timeperiods = [] if sort =='top' and category is not None: timeperiods = top_timeperiod_urls(category.name) active_period_url = top_url(category.name, kwargs.get('year'), kwargs.get('month'), kwargs.get('day')) sort_types = [] if category is not None: if sort in ["active", "new"]: sort_types.extend([ ('active threads', '/x/%s/active' % category.name), ('new posts', '/x/%s/new' % category.name) ]) active_sort_url = '/x/%s/%s' % (category.name, sort) nav_data = nav.dump_json() front_data.update(locals()) if request.is_mobile: return r2r_jinja("mobile/browse.html", front_data) return r2r_jinja("comment/explore.html", front_data)
def _tiles(self): return get_browse_tiles(self.user, Navigation(sort='hot', offset=0, category=Category.ALL))
def _tiles(self): return get_browse_tiles( self.user, Navigation(sort='hot', offset=0, category=Category.ALL))