示例#1
0
def get_activity(activity_type,content_id,addtime,fuser):
    item={}
    fuser=get_user_by_id(fuser)
    if activity_type==0:
        question=get_question_from_redis(content_id)
        if question:
            item={'activitytype':activity_type,'addtime':addtime,"data":question,"fuser":fuser}
    elif activity_type==1:
        answer=get_answer_by_answer_id(content_id)
        if answer:
            item={'activitytype':activity_type,'addtime':addtime,"data":answer,"fuser":fuser}
    elif activity_type==2:
        follow=QustionFollow.objects.filter(pk=content_id)#如何解决
        follow=follow[0] if len(follow)>0 else None
        if not follow:
            return None
        question=question=get_question_from_redis(follow.question_id)
        follow.question=question
        item={'activitytype':activity_type,'addtime':addtime,"data":follow,"fuser":fuser}
    elif activity_type==3:
        evalue=AnswerEvaluation.objects.filter(pk=content_id)
        evalue=evalue[0] if len(evalue)>0 else None
        if not evalue:
            return None
        answer=get_answer_by_answer_id(evalue.answer_id)
        evalue.answer=answer
        item={'activitytype':activity_type,'addtime':addtime,"data":evalue,"fuser":fuser}
    return item
示例#2
0
def get_question_from_redis(question_id):
    field=["id","title","content","answercount","addtime","user_id"]
    if not question_client.exists(QUESTION_PRFIX+str(question_id)):
        return load_question_by_id(question_id)
    else:
        question_dict=question_client.hmget(QUESTION_PRFIX+str(question_id),field)
        question=Question(id=question_dict[0],title=question_dict[1].decode("utf-8"),content=question_dict[2].decode("utf-8"),answercount=int(question_dict[3]),\
                addtime=get_datetime(question_dict[4]),user=get_user_by_id(int(question_dict[5])))
        return question
示例#3
0
 def get_user(self,user_id):
     "注意is_active的影响"
     try:
         #user=User.objects.get(pk=user_id)
         user=get_user_by_id(user_id)
         if user and user.is_active:
             return user
         return None
     except User.DoesNotExist:
         return None
示例#4
0
def get_question_from_redis(question_id):
    field = ["id", "title", "content", "answercount", "addtime", "user_id"]
    if not question_client.exists(QUESTION_PRFIX + str(question_id)):
        return load_question_by_id(question_id)
    else:
        question_dict = question_client.hmget(
            QUESTION_PRFIX + str(question_id), field)
        question=Question(id=question_dict[0],title=question_dict[1].decode("utf-8"),content=question_dict[2].decode("utf-8"),answercount=int(question_dict[3]),\
                addtime=get_datetime(question_dict[4]),user=get_user_by_id(int(question_dict[5])))
        return question
示例#5
0
def follow_user(request): 
    try:
        if request.method=="POST":
            userid=request.POST.get("uid",None)
            ftype=request.POST.get('type',None)
            if userid and request.user.is_authenticated():
                touserid=get_user_by_id(userid)
                helper_follow_user(touserid,ftype,request.user)
        return HttpResponse("Ok")
    except Exception,e:
        return HttpResponse("error")
示例#6
0
def get_userinfo(request,userid):
    if not userid:
        userid=request.user.id;
        userinfo=request.user
    userinfo=get_user_by_id(userid)
    events=get_events_list(userid)
    is_self=False
    is_followed=is_follow(request.user.id,userid)
    if int(userid)==request.user.id:
        is_self=True
    return render_to_response("userinfo.html",{"events_list":events["event_list"],"statistics":events["statistics"],"userinfo":\
            userinfo,"is_self": is_self,"is_followed":is_followed},context_instance=RequestContext(request))
示例#7
0
def get_activity(activity_type, content_id, addtime, fuser):
    item = {}
    fuser = get_user_by_id(fuser)
    if activity_type == 0:
        question = get_question_from_redis(content_id)
        if question:
            item = {
                'activitytype': activity_type,
                'addtime': addtime,
                "data": question,
                "fuser": fuser
            }
    elif activity_type == 1:
        answer = get_answer_by_answer_id(content_id)
        if answer:
            item = {
                'activitytype': activity_type,
                'addtime': addtime,
                "data": answer,
                "fuser": fuser
            }
    elif activity_type == 2:
        follow = QustionFollow.objects.filter(pk=content_id)  #如何解决
        follow = follow[0] if len(follow) > 0 else None
        if not follow:
            return None
        question = question = get_question_from_redis(follow.question_id)
        follow.question = question
        item = {
            'activitytype': activity_type,
            'addtime': addtime,
            "data": follow,
            "fuser": fuser
        }
    elif activity_type == 3:
        evalue = AnswerEvaluation.objects.filter(pk=content_id)
        evalue = evalue[0] if len(evalue) > 0 else None
        if not evalue:
            return None
        answer = get_answer_by_answer_id(evalue.answer_id)
        evalue.answer = answer
        item = {
            'activitytype': activity_type,
            'addtime': addtime,
            "data": evalue,
            "fuser": fuser
        }
    return item
示例#8
0
def get_answers_from_redis(question_id,limit=0,skip=0,user_id=None):
    field=["id","content","addtime","user_id","commentcount","favorcount","opposecount"]
    if not question_client.exists(QUESTION_ANSWER_PREFIX+str(question_id)):
        load_question_answer_by_id(question_id)
    answer_id=None
    if limit:
        answer_id=question_client.lrange(QUESTION_ANSWER_PREFIX+str(question_id),skip+1,limit+skip+1)
    else:
        answer_id=question_client.lrange(QUESTION_ANSWER_PREFIX+str(question_id),0,-1)
    answer_id=[i for i in answer_id if i!="-1" ]
    if answer_id:
        answers=[]
        answer_list=[question_client.hmget(ANSWER_PRFIX+str(i),field) for i in answer_id if i!='-1']
        for answer in answer_list:
            an=Answer(id=answer[0],content=answer[1],addtime=get_datetime(answer[2]),user=get_user_by_id(answer[3]),commentcount=int(answer[4]),favorcount=\
                int(answer[5]),opposecount=int(answer[6]))
            answers.append(an)
        if user_id:
            if not question_client.exists(USER_FAVOR_ANSWER_PREFIX+str(user_id)):
                load_favor_answer(user_id) 
            question_client.sadd(TEMP_PREFIX+str(user_id),*answer_id)
            #import pdb;pdb.set_trace()
            favors=question_client.sinter(TEMP_PREFIX+str(user_id),USER_FAVOR_ANSWER_PREFIX+str(user_id))
            for favor in favors:
                 for answer in answers:
                    if answer.id==favor:
                        answer.evaluation=1
                        answer.eid=int(question_client.hget(ANSWEREVALUATION_PRFIX+"a:"+str(answer.id)+"u:"+str(user_id),"id"))
            if not question_client.exists(USER_FAVOR_ANSWER_PREFIX+str(user_id)):
                 load_oppose_answer(user_id)
            opposes=question_client.sinter(TEMP_PREFIX+str(user_id),USER_OPPOSE_ANSWER_PREFIX+str(user_id))
            for oppose in opposes:
                for answer in answers:
                    if answer.id==oppose:
                        answer.evaluation=2
                        answer.eid=int(question_client.hget(ANSWEREVALUATION_PRFIX+"a:"+str(answer.id)+"u:"+str(user_id),"id"))
            question_client.delete(TEMP_PREFIX+str(user_id))
        return answers
    return None
示例#9
0
def get_answer_by_answer_id(answer_id):
    field=["id","content","addtime","user_id","commentcount","favorcount","opposecount","question_id"]
    if not question_client.exists(ANSWER_PRFIX+str(answer_id)):
        return load_answer_by_id(answer_id)
    else:
        answer=question_client.hmget(ANSWER_PRFIX+str(answer_id),field)
        an=Answer(id=answer[0],content=answer[1],addtime=get_datetime(answer[2]),user=get_user_by_id(answer[3]),commentcount=int(answer[4]),favorcount=\
                int(answer[5]),opposecount=int(answer[6]),question=get_question_from_redis(answer[7]))
        return an
示例#10
0
def get_answers_from_redis(question_id, limit=0, skip=0, user_id=None):
    field = [
        "id", "content", "addtime", "user_id", "commentcount", "favorcount",
        "opposecount"
    ]
    if not question_client.exists(QUESTION_ANSWER_PREFIX + str(question_id)):
        load_question_answer_by_id(question_id)
    answer_id = None
    if limit:
        answer_id = question_client.lrange(
            QUESTION_ANSWER_PREFIX + str(question_id), skip + 1,
            limit + skip + 1)
    else:
        answer_id = question_client.lrange(
            QUESTION_ANSWER_PREFIX + str(question_id), 0, -1)
    answer_id = [i for i in answer_id if i != "-1"]
    if answer_id:
        answers = []
        answer_list = [
            question_client.hmget(ANSWER_PRFIX + str(i), field)
            for i in answer_id if i != '-1'
        ]
        for answer in answer_list:
            an=Answer(id=answer[0],content=answer[1],addtime=get_datetime(answer[2]),user=get_user_by_id(answer[3]),commentcount=int(answer[4]),favorcount=\
                int(answer[5]),opposecount=int(answer[6]))
            answers.append(an)
        if user_id:
            if not question_client.exists(USER_FAVOR_ANSWER_PREFIX +
                                          str(user_id)):
                load_favor_answer(user_id)
            question_client.sadd(TEMP_PREFIX + str(user_id), *answer_id)
            #import pdb;pdb.set_trace()
            favors = question_client.sinter(
                TEMP_PREFIX + str(user_id),
                USER_FAVOR_ANSWER_PREFIX + str(user_id))
            for favor in favors:
                for answer in answers:
                    if answer.id == favor:
                        answer.evaluation = 1
                        answer.eid = int(
                            question_client.hget(
                                ANSWEREVALUATION_PRFIX + "a:" +
                                str(answer.id) + "u:" + str(user_id), "id"))
            if not question_client.exists(USER_FAVOR_ANSWER_PREFIX +
                                          str(user_id)):
                load_oppose_answer(user_id)
            opposes = question_client.sinter(
                TEMP_PREFIX + str(user_id),
                USER_OPPOSE_ANSWER_PREFIX + str(user_id))
            for oppose in opposes:
                for answer in answers:
                    if answer.id == oppose:
                        answer.evaluation = 2
                        answer.eid = int(
                            question_client.hget(
                                ANSWEREVALUATION_PRFIX + "a:" +
                                str(answer.id) + "u:" + str(user_id), "id"))
            question_client.delete(TEMP_PREFIX + str(user_id))
        return answers
    return None
示例#11
0
def get_answer_by_answer_id(answer_id):
    field = [
        "id", "content", "addtime", "user_id", "commentcount", "favorcount",
        "opposecount", "question_id"
    ]
    if not question_client.exists(ANSWER_PRFIX + str(answer_id)):
        return load_answer_by_id(answer_id)
    else:
        answer = question_client.hmget(ANSWER_PRFIX + str(answer_id), field)
        an=Answer(id=answer[0],content=answer[1],addtime=get_datetime(answer[2]),user=get_user_by_id(answer[3]),commentcount=int(answer[4]),favorcount=\
                int(answer[5]),opposecount=int(answer[6]),question=get_question_from_redis(answer[7]))
        return an