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('没有找到该回答')
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')
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')
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')
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('没有更多了')
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')
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')
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)
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')