예제 #1
0
파일: views.py 프로젝트: sirramin/backend
    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()
예제 #2
0
    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()
예제 #3
0
    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()
예제 #4
0
    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()