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
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
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
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
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")
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))
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
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
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
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
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