Example #1
0
def random_walk(request):
    articleid = redis_conn.srandmember(Article.ALL_PRIMARY_IDS_KEY)
    article = Article.objects.filter(id=articleid).first()
    if article is None:
        raise Http404

    return render(request, "web/random_walk.html", {
        "article": article,
    })
Example #2
0
def random_walk(request):
    articleid = redis_conn.srandmember(Article.ALL_PRIMARY_IDS_KEY)
    article = Article.objects.filter(id=articleid).first()
    if article is None:
        raise Http404

    return render(request, 
                  "web/random_walk.html", 
                  {
                        "article": article,

                  })
Example #3
0
def random_article(request):
    ''' put all primary article id to the redis
        redis[all] = set(1,2,3)
        put all user read in redis
        redis[user] = set(1,2, 3)

        consider use sdiff: r.sdiff(keys=('local', 'mythtv'))
    '''

    # use request.user 
    # if we need to collect anonymous user data
    if request.user.is_authenticated(): 
        article_id_sets = redis_conn.sdiff((Article.ALL_PRIMARY_IDS_KEY, request.user.id)) or 0
        if article_id_sets == 0:
            raise Http404
        article_id = random.sample(article_id_sets, 1)[0]
        redis_conn.sadd(request.user.id, article_id)
        UserReadArticle.objects.get_or_create(user=request.user, article_id=article_id)

    else:
        article_id = redis_conn.srandmember(Article.ALL_PRIMARY_IDS_KEY) or 0

    return redirect("/api/article/%s/"%article_id)