Example #1
0
def add_answer(request):
    question_id=request.POST["questionid"]
    content=request.POST["content"]
    answer=Answer(user=request.user,question_id=question_id,content=content)
    answer.submit_answer(request.user)
    html_str=render_to_string('answerlist.html',{'answers_list':[answer]})
    return HttpResponse(html_str)
Example #2
0
def add_answer(**kwargs):
    answer=Answer(**kwargs)
    answer_id=get_next_answer_id()
    answer.id=answer_id
    #answer.addtime=datetime.now()
    load_answer_by_answer(answer)
    return answer_id
Example #3
0
def add_answer(**kwargs):
    answer = Answer(**kwargs)
    answer_id = get_next_answer_id()
    answer.id = answer_id
    #answer.addtime=datetime.now()
    load_answer_by_answer(answer)
    return answer_id
Example #4
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
Example #5
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
Example #6
0
 def save(self, answer_set):
     from quest.models import Answer
     choices = self.cleaned_data['choice']
     if self._instance is not None:
         answer = self._instance
     else:
         answer = Answer()
     answer.text = ''
     answer.answer_set = answer_set
     answer.question = self._question
     answer.save()
     answer.choices = choices
     return answer
Example #7
0
 def get_activity_list(self,userid,**kwargs):
     """获取好友最新动态 使用了存储过程 目前动态有0、1、2、3四类 分别代表 提问、回答问题、关注问题、赞或反对问题 """
     activity_list=[]
     question_submit_count=0
     answer_count=0
     page=kwargs.pop('page',1)
     pagecount=kwargs.pop('pagecount',15)
     cursor=connection.cursor()
     cursor.callproc("sp_friendactiviy",(userid,(page-1)*15,pagecount))
     for row in cursor.fetchall():
         #import pdb;pdb.set_trace()
         if row[0]==0:
             question=Question(id=row[13],title=row[14])
             user=User(id=row[15],name=row[16],surname=row[17],avatar=row[18])
             question.user=user
             activity_list.append({'activitytype':row[0],'addtime':row[1],"data":question,"fuser":User(id=row[20],name=row[21],\
                     surname=row[22],avatar=row[23])})
             question_submit_count+=1
         elif row[0]==1:
             answer=Answer(id=row[3],content=row[4],addtime=row[5],commentcount=row[6],favorcount=row[7],opposecount=row[8])
             answer.user=User(id=row[9],name=row[10],surname=row[11],avatar=row[12])
             answer.question=Question(id=row[13],title=row[14],user=User(id=row[15],name=row[16],surname=row[17],avatar=row[18])) 
             activity_list.append({'activitytype':row[0],'addtime':row[1],"data":answer,"fuser":User(id=row[20],name=row[21],\
                     surname=row[22],avatar=row[23])})
             answer_count +=1
         elif row[0]==2:
             follow=QustionFollow(id=row[19])
             question=Question(id=row[13],title=row[14])
             user=User(id=row[15],name=row[16],surname=row[17],avatar=row[18])
             question.user=user
             follow.question=question
             activity_list.append({'activitytype':row[0],'addtime':row[1],"data":follow,"fuser":User(id=row[20],name=row[21],\
                     surname=row[22],avatar=row[23])})
         elif row[0]==3:
             evalue=AnswerEvaluation(status=row[2])
             answer=Answer(id=row[3],content=row[4],addtime=row[5],commentcount=row[6],favorcount=row[7],opposecount=row[8])
             answer.user=User(id=row[9],name=row[10],surname=row[11],avatar=row[12])
             answer.question=Question(id=row[13],title=row[14],user=User(id=row[15],name=row[16],surname=row[17],avatar=row[18]))
             evalue.answer=answer
             activity_list.append({'activitytype':row[0],'addtime':row[1],"data":evalue,"fuser":User(id=row[20],name=row[21],\
                     surname=row[22],avatar=row[23])})
     return {"activity_list":activity_list,"statistics":{"submit_question":question_submit_count,"answer":answer_count}}
Example #8
0
def insert_solr(solrtype, **kwargs):
    """对象序列化问题尚未解决 json or pickle 目前使用传递字典代替"""
    sleep(2)
    solr = None
    obj = None
    try:
        if solrtype == "answer":
            solr = AnswerSolr()
            obj = Answer(**kwargs)
            #obj=Answer(id=id,content=content,question_id=question_id,user_id=user_id)
        elif solrtype == "question":
            solr = QuestionSolr()
            obj = Question(**kwargs)
        elif solrtype == "user":
            solr = UserSolr()
            obj = User(**kwargs)
        solr.add(obj)
        return True
    except Exception, e:
        print e
        return e
Example #9
0
 def get_activity_list(self,userid,**kwargs):
     """获取好友最新动态 使用了存储过程 目前动态有0、1、2、3四类 分别代表 提问、回答问题、关注问题、赞或反对问题 """
     activity_list=[]
     question_submit_count=0
     answer_count=0
     page=kwargs.pop('page',1)
     pagecount=kwargs.pop('pagecount',15)
     cursor=connection.cursor()
     cursor.callproc("sp_friendactiviy",(userid,(page-1)*15,pagecount))
     for row in cursor.fetchall():
         #import pdb;pdb.set_trace()
         if row[0]==0:
             question=Question(id=row[13],title=row[14])
             user=User(id=row[15],name=row[16],surname=row[17],avatar=row[18])
             question.user=user
             activity_list.append({'activitytype':row[0],'addtime':row[1],"data":question,"fuser":User(id=row[20],name=row[21],\
                     surname=row[22],avatar=row[23])})
             question_submit_count+=1
         elif row[0]==1:
             answer=Answer(id=row[3],content=row[4],addtime=row[5],commentcount=row[6],favorcount=row[7],opposecount=row[8])
             answer.user=User(id=row[9],name=row[10],surname=row[11],avatar=row[12])
             answer.question=Question(id=row[13],title=row[14],user=User(id=row[15],name=row[16],surname=row[17],avatar=row[18])) 
             activity_list.append({'activitytype':row[0],'addtime':row[1],"data":answer,"fuser":User(id=row[20],name=row[21],\
                     surname=row[22],avatar=row[23])})
             answer_count +=1
         elif row[0]==2:
             follow=QustionFollow(id=row[19])
             question=Question(id=row[13],title=row[14])
             user=User(id=row[15],name=row[16],surname=row[17],avatar=row[18])
             question.user=user
             follow.question=question
             activity_list.append({'activitytype':row[0],'addtime':row[1],"data":follow,"fuser":User(id=row[20],name=row[21],\
                     surname=row[22],avatar=row[23])})
         elif row[0]==3:
             evalue=AnswerEvaluation(status=row[2])
             answer=Answer(id=row[3],content=row[4],addtime=row[5],commentcount=row[6],favorcount=row[7],opposecount=row[8])
             answer.user=User(id=row[9],name=row[10],surname=row[11],avatar=row[12])
             answer.question=Question(id=row[13],title=row[14],user=User(id=row[15],name=row[16],surname=row[17],avatar=row[18]))
             evalue.answer=answer
             activity_list.append({'activitytype':row[0],'addtime':row[1],"data":evalue,"fuser":User(id=row[20],name=row[21],\
                     surname=row[22],avatar=row[23])})
     return {"activity_list":activity_list,"statistics":{"submit_question":question_submit_count,"answer":answer_count}}