示例#1
0
 def retrieve(self, request, *args, **kwargs):
     instance = self.get_object()
     if instance:
         ApiCli.process_answer(instance, request.user)
         serializer = self.get_serializer(instance)
         return success(serializer.data)
     return error('没有找到该回答')
示例#2
0
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            for instance in page:
                ApiCli.process_answer(instance, request.user)
            serializer = self.get_serializer(page, many=True)
            temp = self.get_paginated_response(serializer.data)
            return success(temp.data)
        return error('no more data')
示例#3
0
 def questions(self, request, pk=None):
     profile = self.get_object()
     if profile is None:
         return error('no profile found')
     questions = profile.user.published.all()
     page = self.paginate_queryset(questions)
     if page is not None:
         for question in page:
             ApiCli.process_question(question)
         serializer = QuestionListSerializer(page,
                                             many=True,
                                             context={'request': request})
         temp = self.get_paginated_response(serializer.data)
         return success(temp.data)
     return error('no more data')
示例#4
0
 def favorites(self, request, pk=None):
     profile = self.get_object()
     if profile is None:
         return error('no profile found')
     answers = profile.favorites.all()
     page = self.paginate_queryset(answers)
     if page is not None:
         for answer in page:
             ApiCli.process_answer(answer, request.user)
         serializer = AnswerSerializer(page,
                                       many=True,
                                       context={'request': request})
         temp = self.get_paginated_response(serializer.data)
         return success(temp.data)
     return error('no more data')
示例#5
0
    def get_comments(self, request, pk=None):
        answer = self.get_object()
        if answer is None:
            return error("没有找到该评论所在的回答")

        queryset = self.filter_queryset(answer.comments.all())

        page = self.paginate_queryset(queryset)
        if page is not None:
            for comment in page:
                ApiCli.process_comment(comment)
            serializer = self.get_serializer(page, many=True)
            temp = self.get_paginated_response(serializer.data)
            return success(temp.data)
        return error('没有更多了')
示例#6
0
 def watched_users(self, request, pk=None):
     profile = self.get_object()
     if profile is None:
         return error('no profile found')
     users = profile.watchedUser.all()
     profiles = []
     for user in users:
         ApiCli.process_profile(request.user, user)
         profiles.append(user.profile)
     page = self.paginate_queryset(profiles)
     if page is not None:
         serializer = ProfileSerializer(page,
                                        many=True,
                                        context={'request': request})
         temp = self.get_paginated_response(serializer.data)
         return success(temp.data)
     return error('no more data')
示例#7
0
    def get_answers(self, request, pk):
        question = self.get_object()
        if question is None:
            return error("no topic found")
        if request.user.is_authenticated:
            profile = request.user.profile
            profile.history.add(question)
            profile.save()
        queryset = self.filter_queryset(question.answers.all())

        page = self.paginate_queryset(queryset)
        if page is not None:
            for answer in page:
                ApiCli.process_answer(answer, request.user)
            serializer = self.get_serializer(page, many=True)
            temp = self.get_paginated_response(serializer.data)
            return success(temp.data)
        return error('no more data')
示例#8
0
 def retrieve(self, request, *args, **kwargs):
     question = self.get_object()
     if question is None:
         return error('no question found')
     if request.user.is_authenticated:
         count = request.user.profile \
             .watchedQuestion\
             .filter(title=question).count()
         question.is_watch = count
     else:
         question.is_watch = False
     ApiCli.process_question(question)
     seri = self.get_serializer(question)
     question.visit_count += 1
     question.save()
     for topic in question.topics.all():
         HeatQueue.put_visited(topic)
     return success(seri.data)
示例#9
0
    def activities(self, request, pk=None):
        profile = self.get_object()
        if profile is None:
            return error('no such profile')
        activities = profile.activities.all()
        page = self.paginate_queryset(activities)
        if page is not None:

            for activity in page:
                if activity.watch:
                    user = request.user
                    ApiCli.process_profile(user, activity.watch.user)
                elif activity.question:
                    ApiCli.process_question(activity.question)
                elif activity.answer:
                    profile = activity.answer.author.profile
                    instance = activity.answer
                    user = request.user
                    ApiCli.process_answer(instance, user)

            serializer = self.get_serializer(page, many=True)
            temp = self.get_paginated_response(serializer.data)
            return success(temp.data)
        return error('no more data')