예제 #1
0
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)
예제 #2
0
    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))))
예제 #3
0
    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))))
예제 #4
0
파일: api.py 프로젝트: StetHD/canvas-2
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
 def _tiles(self):
     return get_browse_tiles(self.user, Navigation(sort='hot', offset=0, category=Category.ALL))
예제 #8
0
 def _tiles(self):
     return get_browse_tiles(
         self.user, Navigation(sort='hot', offset=0, category=Category.ALL))