Exemple #1
0
def _date_time_filter(query: peewee.Query, attr, value: str):
    if '-' in value:
        start, end = value.split('-')
        # TODO: Add normalization for shorter value
        return query.where((attr >= start) & (attr <= end))

    return query.where(attr == value)
Exemple #2
0
def paginate(query: Query) -> Query:
    """分页查询"""
    page, per_page = map(request.args.get, ['page', 'per_page'])
    try:
        page = int(page) if page else 0
        per_page = int(per_page) if per_page else 0
    except ValueError:
        pass
    else:
        if page > 0:
            if per_page > 0:
                return query.paginate(page, per_page)
            else:
                return query.paginate(page)
    return query
Exemple #3
0
def paginate(query: Query,
             page: Optional[int] = None,
             size: Optional[int] = None) -> Pagination:
    """Create pagination object using sane defaults.

    :param query: query to paginate results
    :type query: peewee.Query
    :param page: page number, will be fetched from request if omitted, defaults to
                 None
    :type page: Optional[int], optional
    :param size: page size, defaults to None
    :type size: Optional[int], optional
    :return: pagination object for query
    :rtype: Pagination
    """
    if page is None:
        page = get_page()
    if size is None:
        size = current_app.config.get('LIST_SIZE', 20)
    q = query.paginate(page, size)
    return Pagination(page, size, query.count(), q)
Exemple #4
0
def _add_vote_exclusions(query: peewee.Query,
                         exclusion: Optional[SkipVotedOn]) -> peewee.Query:
    if not exclusion:
        return query

    if exclusion.by == SkipVotedType.DEVICE_ID:
        criteria = AnnotationVote.device_id == exclusion.id
    elif exclusion.by == SkipVotedType.USERNAME:
        criteria = AnnotationVote.username == exclusion.id
    else:
        raise ValueError("Unknown SkipVoteType: {exclusion.by}")

    return query.join(
        AnnotationVote,
        join_type=peewee.JOIN.LEFT_OUTER,
        on=((AnnotationVote.insight_id == ProductInsight.id) & (criteria)),
    ).where(AnnotationVote.id.is_null())
Exemple #5
0
def data_frame_from_peewee_query(query: peewee.Query) -> pandas.DataFrame:
    connection = query._database.connection()  # noqa
    sql, params = query.sql()
    return pandas.read_sql_query(sql=sql, con=connection, params=params)
Exemple #6
0
def _text_filter(query: peewee.Query, attr, value: str):
    if isinstance(value, list):
        return query.where(attr << value)
    value = value.replace('?', '_')
    value = value.replace('*', '%')
    return query.where(attr**value)
Exemple #7
0
 def query(self, query: pw.Query, column: pw.Field, *ops: t.Tuple,
           **_) -> pw.Query:
     """Apply the filters to Peewee QuerySet.."""
     _, value = ops[0]
     return query.where(column.contains(value))  # type: ignore