Example #1
0
	def get(self, request):

		# get page param
		page = request.GET.get('page')
		queries = []
		sort_by = getValidateSort(request.GET.get('sortBy'));
		queries = [
			getValidatePriceQuery(request.GET.get('price')),
			getValidateSquareFeetQuery(request.GET.get('squareFeet')),
			getValidateTypeQuery(request.GET.get('type')),
			getValidateRoomsQuery(request.GET.get('rooms')),
			getSearchQuery(request.GET.get('sq')),
			*getValidateShouldHasQuery(request.GET.get('shouldHas')),
			Q(status='fs', is_verified=True),
		]
		# filter properties
		properties = Property.objects.filter(reduce( operator.and_, queries )).order_by(sort_by)

		paginator = paginate(query_set=properties, paginate_by=PAGINATE_BY, page=page)

		response = {
			'data': PropertySerializer(paginator['data'], many=True).data,
			'has_next': paginator['has_next']
		}

		return Response(data=response, status=status.HTTP_200_OK)
Example #2
0
    def list(self, request, *args, **kwargs):
        """ Return a list of basic question data with filters applied.

        This only retrieves basic information about the question without any of
        its linked information.

        """

        # Get the queryset from the specified parent queryset.
        queryset = super().get_queryset()

        # Get query params, and set to default if not specified
        objective_id = request.GET.get("objective_id")
        page = int(request.GET.get("page") or 0) or 1

        # Filter the queryset
        if objective_id:
            filtered_questions = queryset.filter(
                Q(objective__id=objective_id)
            )
        else:
            filtered_questions = queryset

        data = paginate(page, filtered_questions, QuestionBasicSerializer)

        # Return a HTTP response
        return Response(data, status=status.HTTP_200_OK)
Example #3
0
	def get(self, request):
		# get latest_id param
		page = request.GET.get('page')
		# get user bookmarks
		bookmarks = request.user.user_bookmarks.all().order_by('-id')

		# paginate data
		paginator = paginate(query_set=bookmarks, paginate_by=PAGINATE_BY, page=page)

		response = {
			'data': UserBookmarkSerializer(paginator['data'], many=True).data,
			'bookmarks_count': bookmarks.count(),
			'has_next': paginator['has_next']
		}

		return Response(data=response, status=status.HTTP_200_OK)
Example #4
0
    def list(self, request, *args, **kwargs):
        """ Return a list of objectives with filters applied.
        """

        # Get the queryset from the specified parent queryset.
        queryset = super().get_queryset()

        # Get query params, and set to default if not specified
        search = request.GET.get("search")
        page = int(request.GET.get("page") or 0) or 1
        specialties = request.GET.getlist("specialty") or [
            ch[0] for ch in Objective.SPECIALTY_CHOICES
        ]
        topics = request.GET.getlist("topic") or [
            ch[0] for ch in Objective.TOPIC_CHOICES
        ]
        stage = request.GET.getlist("stage") or [
            ch[0] for ch in Objective.STAGE_CHOICES
        ]

        # Filter the queryset by specialty, topic and stage
        if search:
            filtered_objectives = queryset.filter(
                Q(specialty__in=specialties)
                & Q(topic__in=topics)
                & Q(stage__in=stage)
                & (Q(title__contains=search) | Q(contributor__username__contains=search))
            )
        else:
            filtered_objectives = queryset.filter(
                Q(specialty__in=specialties)
                & Q(topic__in=topics)
                & Q(stage__in=stage)
            )

        ordered_objectives = filtered_objectives.order_by("stage", "specialty", "topic", "id")

        data = paginate(
            page,
            ordered_objectives,
            ObjectiveSerializer
        )

        # Return a HTTP response
        return Response(data, status=status.HTTP_200_OK)
Example #5
0
def form_ajax_response(request, device_objects):
    devices, *_ = paginate(request, device_objects)
    status = []
    for device in devices:
        status.append({
            'id': device.id,
            'on_line': device.is_online,
            'name': device.name,
            'temperature': device.last_temperature,
            'humidity': device.last_humidity,
            'switch': device.switch,
            'last': formats.date_format(timezone.localtime(device.date_of_modify),
                                        'd M Y H:i:s') if device.is_online else formats.date_format(
                timezone.localtime(device.last_off_line), 'd M Y H:i:s'),
            'status_temp': device.temperature_status,
            'status_hum': device.humidity_status,
        })
    return JsonResponse(status, safe=False)
Example #6
0
    async def _eval(self, ctx, *, body):
        """Evaluates python code."""
        env = {
            "bot": self.bot,
            "ctx": ctx,
            "channel": ctx.channel,
            "author": ctx.author,
            "guild": ctx.guild,
            "message": ctx.message,
            "msg": ctx.message,
            "_": self.bot._last_result,
            "source": inspect.getsource,
            "src": inspect.getsource,
            "session": self.bot.session
        }

        env.update(globals())

        body = self.cleanup_code(body)
        stdout = io.StringIO()
        err = out = None

        to_compile = f'async def func():\n{textwrap.indent(body, "  ")}'

        try:
            exec(to_compile, env)
        except Exception as e:
            err = await ctx.send(f'```py\n{e.__class__.__name__}: {e}\n```')
            return await ctx.message.add_reaction('\u2049')

        func = env['func']
        try:
            with redirect_stdout(stdout):
                ret = await func()
        except Exception as e:
            value = stdout.getvalue()
            err = await ctx.send(f'```py\n{value}{traceback.format_exc()}\n```'
                                 )
        else:
            value = stdout.getvalue()
            if ret is None:
                if value:
                    try:

                        out = await ctx.send(f'```py\n{value}\n```')
                    except:
                        paginated_text = paginate(value)
                        for page in paginated_text:
                            if page == paginated_text[-1]:
                                out = await ctx.send(f'```py\n{page}\n```')
                                break
                            await ctx.send(f'```py\n{page}\n```')
            else:
                self.bot._last_result = ret
                try:
                    out = await ctx.send(f'```py\n{value}{ret}\n```')
                except:
                    paginated_text = paginate(f"{value}{ret}")
                    for page in paginated_text:
                        if page == paginated_text[-1]:
                            out = await ctx.send(f'```py\n{page}\n```')
                            break
                        await ctx.send(f'```py\n{page}\n```')

        if out:
            await ctx.message.add_reaction('\u2705')  # tick
        elif err:
            await ctx.message.add_reaction('\u2049')  # x
        else:
            await ctx.message.add_reaction('\u2705')