Beispiel #1
0
def all_books():
    query = request.args
    job_id = query.get('id')
    where = {}
    cursor = Book.find({})
    records = list(cursor)
    for book in records:

        def get_children(item):
            return {
                'value': item['_id'],
                'label': item.get('name'),
                'isLeaf': True,
            }

        entries = Playbook.find({'book_id': str(book['_id']), 'role': 'entry'})
        children = map(get_children, entries)
        book['children'] = list(children)

    return jsonify({
        'message': 'ok',
        'code': 0,
        'data': list(records),
    })
Beispiel #2
0
def books():
    query = request.args
    page = int(query.get('page', 1))
    size = int(query.get('pageSize', 50))
    offset = (page - 1) * size
    keyword = query.get('keyword')
    is_admin = login_user.get('is_admin')
    start = query.get('start')
    end = query.get('end')
    maintainer = query.get('maintainer')
    where = {'status': {'$ne': -1}}
    if keyword:
        where['name'] = {'$regex': keyword}

    if not is_admin:
        where['maintainer'] = {'$in': [login_user.get('username')]}
    elif maintainer:
        where['maintainer'] = {'$in': [maintainer]}

    date = []
    if start:
        date.append({
            'created_at': {
                '$gte': int(time.mktime(time.strptime(start, '%Y-%m-%d')))
            }
        })

    if end:
        date.append({
            'created_at': {
                '$lte': int(time.mktime(time.strptime(end, '%Y-%m-%d')))
            }
        })

    if date:
        where['$and'] = date

    cursor = Book.find(where, skip=offset, limit=size)
    total = cursor.count()
    records = list(cursor)
    data = []
    for item in records:

        item['job'] = None
        where = {
            'type': 'playbook',
            'template.entry': {
                '$in': [str(item['_id'])]
            }
        }
        job = db.collection('jobs').find_one(where)
        if job:
            item['job'] = {
                '_id': job.get('_id'),
                'name': job.get('name'),
                'type': job.get('type'),
            }

        if item.get('status'):
            data.append(item)
            continue

        where = {
            'role': 'entry',
            'book_id': item['_id'],
        }
        entry = Playbook.find_one(where)
        if not entry:
            Book.update_one({'_id': item['_id']}, {'$set': {'status': 0}})
            item['status'] = 0

        data.append(item)

    return jsonify({
        'message': 'ok',
        'code': 0,
        'data': {
            'list': records,
            'page': page,
            'pageSize': size,
            'total': total,
        }
    })