def get(self, request, id, *args, **kwargs): try: arguments = parser.parse(request.GET.urlencode()) size = int(arguments.pop('size', 20)) index = int(arguments.pop('index', 0)) size, index = permissions.pagination_permission(request.user, size, index) size = index + size instance = self.model.objects.get(id=id, is_deleted=False) if not instance.has_legal_issue: if not instance.approved: if request.user == instance.creator or (not request.user.is_anonymous and request.user.is_staff): pass else: raise self.model.DoesNotExist serialize_data = self.get_serializer(instance.interviewcomment_set.filter( is_deleted=False, approved=True ).all(), many=True) data = serialize_data.data data = sorted(data, key=lambda x: x['vote_count'], reverse=True) else: data = [] return responses.SuccessResponse(data[index:size], index=index, total=len(data)).send() except self.model.DoesNotExist as e: return responses.ErrorResponse(message='Instance does not Found.', status=404).send() except ValidationError as e: return responses.ErrorResponse(message=e.detail, status=e.status_code).send()
def get(self, request, *args, **kwargs): try: arguments = parser.parse(request.GET.urlencode()) size = int(arguments.pop('size', 20)) index = int(arguments.pop('index', 0)) size, index = permissions.pagination_permission( request.user, size, index) size = index + size sort = None if arguments.get('order_by'): sort = arguments.pop('order_by') result = self.model.objects.filter(**arguments) if sort: result = result.order_by(sort) result = result.all() total = len(result) result = result[index:size] data = self.get_serializer(result, many=True) return responses.SuccessResponse(data.data, index=index, total=total).send() except FieldError as e: return responses.ErrorResponse(message=str(e)).send()
def get(self, request, *args, **kwargs): try: arguments = parser.parse(request.GET.urlencode()) size = int(arguments.pop('size', 20)) index = int(arguments.pop('index', 0)) size, index = permissions.pagination_permission( request.user, size, index) size = index + size sort = None if arguments.get('order_by'): sort = arguments.pop('order_by') result = self.model.objects.filter(**arguments) if self.model in MODELS_HAVE_IS_DELETED: result = result.filter(is_deleted=False) if self.model == CompanyReview or self.model == Interview: result = result.filter(approved=True) if sort: result = result.order_by(sort) if self.model in [City, Pros, Cons]: result = result.order_by('-priority') result = result.all() total = len(result) result = result[index:size] data = self.get_serializer(result, many=True) return responses.SuccessResponse(data.data, index=index, total=total).send() except FieldError as e: return responses.ErrorResponse(message=str(e)).send()
def get(self, request, question_slug, *args, **kwargs): try: arguments = parser.parse(request.GET.urlencode()) size = int(arguments.pop('size', 20)) index = int(arguments.pop('index', 0)) size, index = permissions.pagination_permission( request.user, size, index) size = index + size sort = None if arguments.get('order_by'): sort = arguments.pop('order_by') question = self.model.objects.get(question_slug=question_slug, is_deleted=False) if not isinstance(request.user, AnonymousUser): question.view.add(request.user) question.total_view += 1 question.save() result = question.answer_set result = result.filter(is_deleted=False) if sort: result = result.order_by(sort) result = result.all() total = len(result) result = result[index:size] data = self.get_serializer(result, many=True) return responses.SuccessResponse(data.data, index=index, total=total).send() except FieldError as e: return responses.ErrorResponse(message=str(e)).send()