Пример #1
0
def getUserDataInfo(username):
    blogList = Blog.objects.filter(auther=User.objects.get(
        username=username)).filter(draft=False)
    followkey = generateKey(username, RedisKey['FOLLOWKEY'])
    fanskey = generateKey(username, RedisKey['FANSKEY'])
    followcount = 0
    fanscount = 0
    blogCount = 0
    commentCount = 0
    pool = ConnectionPool(host='localhost', port='6379', db=0)
    redis = StrictRedis(connection_pool=pool)
    if redis.exists(followkey):
        followcount = redis.scard(followkey)
    if redis.exists(fanskey):
        fanscount = redis.scard(fanskey)

    for blog in blogList:
        blogCount = blogCount + 1
        commentCount = commentCount + blog.commentcount
    messagekey = generateKey(username, RedisKey['UNREADMSGKEY'])
    if redis.exists(messagekey):
        msgcount = redis.llen(messagekey)
    else:
        msgcount = 0
    pool.disconnect()
    userdataInfo = {
        'followcount': followcount,
        'fanscount': fanscount,
        'blogcount': blogCount,
        'commentcount': commentCount,
        'msgcount': msgcount
    }
    return userdataInfo
Пример #2
0
def follow(request, followusername):
    try:
        currentUser = request.user
    except Users.DoesNotExist:
        return HttpResponseRedirect(reverse('users:pleaselogin'))
    except KeyError:
        return HttpResponseRedirect(reverse('users:pleaselogin'))
    currentUsername = currentUser.username
    if currentUser:
        followkey = generateKey(currentUsername, RedisKey['FOLLOWKEY'])
        fanskey = generateKey(followusername, RedisKey['FANSKEY'])
        pool = ConnectionPool(host='localhost', port='6379', db=0)
        redis = StrictRedis(connection_pool=pool)
        if redis.exists(followkey):
            if redis.sismember(followkey, followusername):
                return HttpResponseRedirect(
                    reverse('blogs:content',
                            kwargs={'blogId': request.session['currblogId']}))
            else:
                redis.sadd(followkey, followusername)
                redis.sadd(fanskey, currentUsername)
        else:
            redis.sadd(followkey, followusername)
            redis.sadd(fanskey, currentUsername)
        pool.disconnect()
    return HttpResponseRedirect(
        reverse('blogs:content',
                kwargs={'blogId': request.session['currblogId']}))
Пример #3
0
def setreaded(request):
    try:
        currentUser = request.user
        messagekey = generateKey(currentUser.username,
                                 RedisKey['UNREADMSGKEY'])
        pool = ConnectionPool(host='localhost', port='6379', db=0)
        redis = StrictRedis(connection_pool=pool)
        if redis.exists(messagekey):
            redis.delete(messagekey)
    except Exception as e:
        pass
    return HttpResponseRedirect(reverse('users:messagebox'))
Пример #4
0
def saveComment(request):
    comment_content = request.POST['blogcomment']
    blog = Blog.objects.get(pk=request.session['currblogId'])
    result_info = ''
    try:
        auther = User.objects.get(username=request.user.username)
    except:
        auther = User.objects.get(username='******')
    try:
        mycomment = Comment.create(blog, comment_content, auther,
                                   datetime.datetime.now())
        blogId = request.session['currblogId']
        pool = ConnectionPool(host='localhost', port='6379', db=0)
        redis = StrictRedis(connection_pool=pool, decode_responses=True)
        commentcount_key = generateKey(blogId, RedisKey['COMMENTCOUNTKEY'])
        if redis.exists(commentcount_key):
            redis.incr(commentcount_key)
        else:
            redis.set(commentcount_key, blog.commentcount)
            redis.incr(commentcount_key)
        # blog.commentcount = blog.commentcount + 1
        # blog.save()
        mycomment.save()
        blog.commentcount = redis.get(commentcount_key)
        blog.save()
        # Publish message to auther when new comment added(with redis)
        messagekey = generateKey(blog.auther.username,
                                 RedisKey['UNREADMSGKEY'])
        message_content = auther.username + u'评论了博客' + blog.title + u'于' + str(
            datetime.datetime.now())
        redis.lpush(messagekey, message_content)
        result_info = 'Success'
    except ValidationError as e:
        result_info = 'Fail'

    return HttpResponseRedirect(
        reverse('blogs:content',
                kwargs={'blogId': request.session['currblogId']}))
Пример #5
0
def thumbup(request):
    try:
        currentUser = request.user
    except KeyError:
        return render(request, 'users/pleaselogin.html')
    except Users.DoesNotExist:
        return render(request, 'users/pleaselogin.html')
    blogId = request.session['currblogId']
    blog = Blog.objects.get(pk=blogId)
    auther = blog.auther.username
    userthumb_key = generateKey(currentUser.username, RedisKey['THUMBUPKEY'])
    blogthumb_key = generateKey(blogId, RedisKey['THUMBCOUNTKEY'])
    pool = ConnectionPool(host='localhost', port='6379', db=0)
    redis = StrictRedis(connection_pool=pool, decode_responses=True)
    title = ''
    countOfThumb = 0

    messagekey = generateKey(auther, RedisKey['UNREADMSGKEY'])
    # 每个读者不能给同一篇文章多次点赞
    if redis.sismember(userthumb_key, blogId):
        pass
    else:
        redis.sadd(userthumb_key, blogId)
        if redis.exists(blogthumb_key):
            redis.incr(blogthumb_key)
        else:
            redis.set(blogthumb_key, countOfThumb)
            redis.incr(blogthumb_key)
        message_content = currentUser.username + u'点赞了博客' + blog.title + u'于' + str(
            datetime.datetime.now())
        redis.lpush(messagekey, message_content)

    pool.disconnect()
    return HttpResponseRedirect(
        reverse('blogs:content',
                kwargs={'blogId': request.session['currblogId']}))
Пример #6
0
def messagebox(request):
    try:
        currentUser = request.user
        pool = ConnectionPool(host='localhost', port='6379', db=0)
        redis = StrictRedis(connection_pool=pool)
        messagekey = generateKey(currentUser.username,
                                 RedisKey['UNREADMSGKEY'])
        if redis.exists(messagekey):
            infos = redis.lrange(messagekey, 0, redis.llen(messagekey) - 1)
            msginfos = []
            for msg in infos:
                msg = msg.decode()
                msginfos.append(msg)
            messages = {'infos': msginfos}
        else:
            messages = {}
        # infos = InfoMessage.objects.filter(attachUser=currentUser)

    except Exception as e:
        messages = {}
    return render(request, 'users/messagebox.html', messages)
Пример #7
0
def content(request, blogId):
    pool = ConnectionPool(host='localhost', port='6379', db=0)
    redis = StrictRedis(connection_pool=pool, decode_responses=True)
    currentusername = request.user.username
    blog = Blog.objects.get(id=blogId)
    title_key = generateKey(blogId, RedisKey['TITLEKEY'])
    readcount_key = generateKey(blogId, RedisKey['READCOUNTKEY'])

    if redis.exists(title_key):
        blog_title = redis.get(title_key).decode()
    else:
        redis.set(title_key, blog.title)
        blog_title = redis.get(title_key).decode()

    blog_content = blog.content

    countOfThumb = 0
    blogthumb_key = generateKey(blogId, RedisKey['THUMBCOUNTKEY'])
    if redis.exists(blogthumb_key):
        countOfThumb = redis.get(blogthumb_key).decode()

    userthumb_key = generateKey(currentusername, RedisKey['THUMBUPKEY'])
    thumbflag = 'F'
    if redis.exists(userthumb_key):
        if redis.sismember(userthumb_key, blogId):
            thumbflag = 'T'

    pool.disconnect()
    comment = Comment.objects.filter(attachedblog=blog)
    request.session['currblogId'] = blogId
    # blog_title = blog.title
    # blog_content = blog.content

    blogContent = {
        'blog_title': blog_title,
        'content': blog_content,
        'comment_list': comment,
        'countOfThumb': countOfThumb,
        'thumbupflag': thumbflag,
        'auther': blog.auther,
        'curruser': request.user
    }
    userdataInfo = getUserDataInfo(blog.auther.username)
    blogContent = {**blogContent, **userdataInfo}

    # blog.readcount+=1
    # blog.save()
    readblog_key = generateKey(currentusername, RedisKey['READBLOGKEY'])
    readblogIdlist = []
    response = render(request, 'blogs/content.html', blogContent)
    if readblog_key in request.COOKIES:
        readblogIdlist = request.COOKIES.get(readblog_key).split(',')
        if blogId not in readblogIdlist:
            if redis.exists(readcount_key):
                redis.incr(readcount_key)
            else:
                redis.set(readcount_key, blog.readcount)
                redis.incr(readcount_key)
    else:
        if redis.exists(readcount_key):
            redis.incr(readcount_key)
        else:
            redis.set(readcount_key, blog.readcount)
            redis.incr(readcount_key)
    blog.readcount = redis.get(readcount_key).decode()
    blog.save()
    # 添加cookie
    readblogIdlist.append(blogId)
    readblogIdStr = ','.join(readblogIdlist)
    response.set_cookie(readblog_key, readblogIdStr, 60)

    return response