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), })
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, } })