Ejemplo n.º 1
0
def search_db(term):
    """
    Search database for a term
    """
    session = get_session()
    try:
        search_statement = or_(
            search.c.name.ilike('%' + term + '%'),
            search.c.about.ilike('%' + term + '%'),
            search.c.kind.ilike('%' + term + '%'),
            search.c.image.ilike('%' + term + '%'),
            cast(search.c.id, Text).ilike('%' + term + '%'),
            cast(search.c.release_date, Text).ilike('%' + term + '%'))
        query = session.query(search).filter(search_statement)
        query = search_filter(request.args, query)
        query = order_query(search, request.args, query)
        final_query = query

        query = set_limit_offset(request.args, query)

        data = query.all()
        count = final_query.count()
        return jsonify({
            'items': search_schema.dump(data, many=True).data,
            'count': count
        })
    finally:
        session.close()
Ejemplo n.º 2
0
def get_labels():
    """
    Get all possible values for label in album table
    """
    session = get_session()
    try:
        query = session.query(Album.label).distinct()
        final_query = query
        labels = query.all()
        label_list = []
        for label in labels:
            label_list.append(label[0])
        count = final_query.count()
        return jsonify({'items': label_list, 'count': count})
    finally:
        session.close()
Ejemplo n.º 3
0
def query_single(model_id, Model, model_schema):
    """
    Make a query for a model instance
    """
    session = get_session()
    try:
        model_id = int(model_id)
        model = session.query(Model).get(model_id)

        if model is None:
            return abort(404)

        return jsonify(model_schema.dump(model).data)
    except ValueError:
        return abort(404)
    finally:
        session.close()
Ejemplo n.º 4
0
def get_genres():
    """
    Get genres
    """
    session = get_session()
    try:
        query = session.query(Genre)
        final_query = query
        query = set_limit_offset(request.args, query)
        genres = query.all()

        count = final_query.count()
        return jsonify({
            'items': genre_schema.dump(genres, many=True).data,
            'count': count
        })
    finally:
        session.close()
Ejemplo n.º 5
0
    def setUp(self):
        self.app = app.create_app()
        app.register_routes(self.app)
        app.connect_db('sqlite:///:memory:', create=True)

        self.app.testing = True
        self.client = self.app.test_client()

        with self.app.app_context():
            session = get_session()
            self.populate_database(session)
            session.close()

        self.commit_patch = patch('app.blueprints.routes.get_commits',
                                  return_value=({}, 0))
        self.issue_patch = patch('app.blueprints.routes.get_issues',
                                 return_value=({}, 0))
        self.commit_patch.start()
        self.issue_patch.start()
Ejemplo n.º 6
0
def query_multiple(query_params, search_func, filter_func, Model,
                   models_schema):
    """
    Make a query for multiple model instances
    """
    session = get_session()
    table = Model.__table__
    try:
        query = session.query(Model)
        if query_params.get('search') is not None:
            query = search_func(query, query_params.get('search'))
        query = filter_func(query_params, query)
        query = order_query(table, query_params, query)
        final_query = query
        query = set_limit_offset(request.args, query)

        models = query.all()
        count = final_query.count()
        return jsonify({
            'items': models_schema.dump(models, many=True).data,
            'count': count
        })
    finally:
        session.close()