web_server.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:shakecast 作者: usgs 项目源码 文件源码
def get_fac_data():
    session = Session()
    filter_ = json.loads(request.args.get('filter', '{}'))
    query = session.query(Facility)

    if filter_:
        if filter_.get('group', None) is not None:
            query = query.filter(Facility.groups.any(Group.name.like(filter_['group'])))
        if filter_.get('latMax', None) is not None:
            query = query.filter(Facility.lat_min < float(filter_['latMax']))
        if filter_.get('latMin', None) is not None:
            query = query.filter(Facility.lat_max > float(filter_['latMin']))
        if filter_.get('lonMax', None) is not None:
            query = query.filter(Facility.lon_min < float(filter_['lonMax']))
        if filter_.get('lonMin', None) is not None:
            query = query.filter(Facility.lon_max > float(filter_['lonMin']))
        if filter_.get('facility_type', None) is not None:
            query = query.filter(Facility.facility_type.like(filter_['facility_type']))
        if filter_.get('keywords', None) is not None:

            keys_raw = filter_['keywords'].lower().split(',')
            keys = [key.strip(' ') for key in keys_raw]

            key_filter = [or_(literal(key).contains(func.lower(Facility.name)),
                                            func.lower(Facility.name).contains(key),
                                            func.lower(Facility.description).contains(key)) for key in keys]
            query = query.filter(and_(*key_filter))

    if filter_.get('count', None) is None:
        facs = query.limit(50).all()
    else:
        all_facs = query.all()

        if len(all_facs) > filter_['count'] + 50:
            facs = all_facs[filter_['count']:filter_['count'] + 50]
        else:
            facs = all_facs[filter_['count']:]

    dicts = []
    for fac in facs:
        dict_ = fac.__dict__.copy()
        dict_.pop('_sa_instance_state', None)
        dicts += [dict_]

    Session.remove()
    return jsonify(success=True, data=dicts)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号