Пример #1
0
def project_tag():
    from model import CATEGORY, TYPE, PROJECT
    try:
        category_model_list = list(CATEGORY.objects.raw({'delete': False}))
    except Exception as e:
        logging.error('Request Error: {}\nStack: {}\n'.format(
            e, traceback.format_exc()))
        return raise_status(500, '后台异常')
    tag_list = []
    for model in category_model_list:
        category = {'id': str(model._id), 'category': model.name}
        try:
            type_list = list(
                TYPE.objects.raw({
                    'category': model._id,
                    'delete': False
                }))
        except Exception as e:
            logging.error('Request Error: {}\nStack: {}\n'.format(
                e, traceback.format_exc()))
            return raise_status(500, '后台异常')
        tag = []
        for type_model in type_list:
            count = PROJECT.objects.raw({
                'tag': type_model._id,
                'delete': False
            }).count()
            tag.append({
                'id': str(type_model._id),
                'name': type_model.name,
                'count': count
            })
        category['type'] = tag
        tag_list.append(category)
    return jsonify(tag_list)
Пример #2
0
def tenant_create():
    from application.tenant_app import tenant_app
    requestObj = request.get_json()
    fields = request.args.get('fields')
    needed = ['name', 'remark', 'activated', 'namespace']
    query_list = [
        'name', 'logo', 'remark', 'resources', 'activated', 'namespace'
    ]
    requestObj = filter(query_list=query_list, updateObj=requestObj)
    for i in needed:
        if i not in requestObj.keys():
            return raise_status(400, '信息有缺失')
    try:
        TENANT.objects.get({'name': requestObj['name'], 'delete': False})
        return raise_status(400, '租户名已存在')
    except TENANT.DoesNotExist:
        if not requestObj.get('resources'):
            requestObj['resources'] = {}
        if 'logo' not in requestObj.keys():
            requestObj['logo'] = None
        try:
            tenant = tenant_app(requestObj=requestObj).tenant_insert()
            re = tenant_app(fields=fields).get_return_by_fields(tenant=tenant)
            return jsonify(re)
        except Exception as e:
            logging.error('Request Error: {}\nStack: {}\n'.format(
                e, traceback.format_exc()))
            return raise_status(400, '租户创建失败')
Пример #3
0
def book_delete():
    from app import db
    returnObj = {}
    try:
        book_list = request.json.get('book_list')
        action_list = []
        for book_id in book_list:
            db.t_books.update({'_id': ObjectId(book_id)},
                              {'$set': {
                                  'change_status': '2'
                              }})
            action_list.append({
                'userid':
                session['id'],
                'username':
                session['username'],
                'action':
                'delete',
                'type':
                '1',
                'aid':
                book_id,
                'date':
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            })
        db.mg_action_record.insert_many(action_list)
        returnObj['info'] = '操作成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- book_delete error as: ', e)
        raise_status(500, str(e))
Пример #4
0
def book_image(book_id):
    returnObj = {}
    try:
        type = request.args.get('type')
        allowed_extensions = set(['png', 'jpg', 'JPG', 'PNG', 'gif', 'GIF'])
        file = request.files.get('avatar')
        extension = file.filename.rsplit('.', 1)[1]
        if extension in allowed_extensions:
            message = img_bulk(file, extension)
            print(message)
            if type == '0':
                session['insert'] = message
                returnObj['message'] = message
                returnObj['info'] = '操作成功'
            elif type == '1':
                session[book_id] = message
                returnObj['message'] = message
                returnObj['info'] = '操作成功'
        else:
            info = '图片格式不对'
            return raise_status(400, info)
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- book_image error as: ', e)
        raise_status(500, str(e))
Пример #5
0
def project_change(projectId):
    from application.project_app import project_app
    from model import PROJECT
    from bson import ObjectId

    try:
        projectId = ObjectId(projectId)
        project_app().projectId_check(projectId=projectId)
    except PROJECT.DoesNotExist:
        return jsonify({'error': raise_status(400, 'projectIdError')})
    except Exception as e:
        logging.error('Request Error: {}\nStack: {}\n'.format(
            e, traceback.format_exc()))
        return jsonify({'error': raise_status(400, 'ObjectIdError')})
    requestObj = {'_id': projectId}
    updateObj = request.json
    query_list = [
        'creator', 'title', 'description', 'requirement', 'timeConsume',
        'material', 'reference', 'image', 'base', 'spec', 'tag'
    ]
    updateObj = filter(query_list=query_list, updateObj=updateObj)
    if updateObj.get('id'):
        del updateObj['id']
    try:
        if updateObj.get('base') and updateObj.get('base') != projectId:
            updateObj['base'] = ObjectId(updateObj['base'])
            project_app().project_reference_check(reference=updateObj['base'])
    except PROJECT.DoesNotExist:
        return jsonify({'error': raise_status(400, 'referenceError')})
    try:
        project_app(requestObj=requestObj,
                    updateObj=request.json).project_update_set()
        project = project_app(requestObj=requestObj).project_find_one()
    except Exception as e:
        logging.error('Request Error: {}\nStack: {}\n'.format(
            e, traceback.format_exc()))
        return '后台异常', 500
    if project._id == project.base:
        baseId = None
    else:
        baseId = str(project.base._id)
    returnObj = {
        'id': str(project._id),
        'creator': str(project.creator),
        'title': project.title,
        'description': project.description,
        'requirement': project.requirement,
        'material': project.material,
        'reference': project.reference,
        'tag': project.tag.name,
        'labs': project.labs,
        'timeConsume': project.timeConsume,
        'image': project.image,
        'base': baseId,
        'spec': project.spec,
        'createdAt': project.createdAt,
        'updatedAt': project.updatedAt
    }
    return jsonify(returnObj)
Пример #6
0
def tenant_delete(tenant_id):
    from application.tenant_app import tenant_app
    try:
        TENANT.objects.get({'_id': ObjectId(tenant_id), 'delete': False})
    except TENANT.DoesNotExist:
        return raise_status(400, '无效的租户id')
    requestObj = {'_id': tenant_id}
    tenant_app(requestObj=requestObj).tenant_delete()
    return raise_status(200)
Пример #7
0
def user_update_by_set(userId):
    from bson import ObjectId

    requestObj = {'_id': ObjectId(userId)}
    updateObj = request.json()
    try:
        user_app(requestObj=requestObj, updateObj=updateObj).user_update()
    except Exception as e:
        print('user_update_totally error:', e)
        return raise_status(500, '后台异常')
    return raise_status(200)
Пример #8
0
def login():
    from app import db
    from datetime import datetime
    returnObj = {}
    try:
        username = request.json.get('username')
        password = request.json.get('password')
        data_check = db.mg_user.find_one({
            'username': username,
            'password': password
        })
        if data_check:
            session['username'] = username
            session['id'] = str(data_check['_id'])
            role_list = data_check['role_list']
            role = []
            collection = {'1': '书摘模块', '2': '书籍模块', '3': '用户模块'}
            icon_list = {'1': 'home', '2': 'yonghu', '3': 'yonghu'}
            # 数据库中取出该用户权限列表,判断并生成基础菜单和进阶菜单
            for single in role_list:
                key = 0
                for menu in role:
                    if single['id'][0] == menu.get('id'):
                        menu['children'].append(single)
                        key = 1
                if key == 0:
                    menu_id = single['id'][0]
                    menu = {
                        'id': menu_id,
                        'name': collection[menu_id],
                        'icon': icon_list[menu_id],
                        'children': [single]
                    }
                    role.append(menu)
            LoginTime = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            db.mg_user.update({'_id': data_check['_id']},
                              {'$set': {
                                  'RecentLogin': LoginTime
                              }})
            returnObj['data'] = {'username': username, 'role': role}
            returnObj['info'] = '登录成功'
            return jsonify(returnObj)
        else:
            check_username = db.mg_user.find_one({'username': username})
            if check_username:
                info = '密码错误'
                return raise_status(400, info)
            else:
                info = '不存在该用户'
                return raise_status(400, info)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- login error as: ', e)
        return raise_status(500, str(e))
Пример #9
0
 def login(self):
     try:
         user = USER.objects.get(self.requestObj)
     except USER.DoesNotExist:
         try:
             USER.objects.get({'name': self.requestObj['name']})
             return raise_status(400, '密码错误')
         except USER.DoesNotExist:
             return raise_status(400, '用户名错误')
     session = {'id': str(user._id), 'name': user.name, 'role': user.role}
     return session
Пример #10
0
def tenant_get_by_id(tenant_id):
    from application.tenant_app import tenant_app
    try:
        TENANT.objects.get({'_id': ObjectId(tenant_id), 'delete': False})
    except TENANT.DoesNotExist:
        return raise_status(400, '无效的租户id')
    requestObj = {'_id': tenant_id}
    fields = request.args.get('fields')
    tenant = tenant_app(requestObj=requestObj,
                        collection='tenant').tenant_find_one()
    if tenant == 'DoesNotExist':
        return raise_status(400, '错误的id')
    re = tenant_app(fields=fields).get_return_by_fields(tenant=tenant)
    return jsonify(re)
Пример #11
0
 def user_count(self):
     try:
         count = USER.objects.raw(self.requestObj).count()
         return count
     except Exception as e:
         print('user_count error:', e)
         return raise_status(500, '后台异常')
Пример #12
0
def excerpt_delete():
    from app import db
    returnObj = {}
    try:
        excerpt_list = request.json.get('excerpt_list')
        action_list = []
        count = 0
        for excerpt in excerpt_list:
            data_excerpt = db.t_excerpts.find_one_and_update(
                {'_id': ObjectId(excerpt)}, {'$set': {
                    'change_status': '2'
                }})
            action_list.append({
                'userid':
                session['id'],
                'username':
                session['username'],
                'action':
                'delete',
                'type':
                '2',
                'aid':
                excerpt,
                'date':
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            })
            count += 1
        data_book = db.t_books.find_one(
            {'_id': ObjectId(data_excerpt['bookid'])})
        if data_book.get('digest_ck'):
            digest_ck = [
                data_book['digest_ck'][0] - count, data_book['digest_ck'][1]
            ]
        else:
            digest_count = db.t_excerpts.count(
                {'bookid': data_excerpt['bookid']})
            ck_count = db.t_excerpts.count({
                'bookid':
                data_excerpt['bookid'],
                '$or': [{
                    'change_status': '1'
                }, {
                    'change_status': '2'
                }]
            })
            digest_ck = [digest_count - ck_count, digest_count]
        db.t_books.update_one({'_id': ObjectId(data_excerpt['bookid'])},
                              {'$set': {
                                  'digest_ck': digest_ck
                              }})
        db.mg_action_record.insert_many(action_list)
        returnObj['info'] = '操作成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- excerpt_delete error as: ', e)
        return raise_status(500, str(e))
Пример #13
0
def project_delete(projectId):
    from application.project_app import project_app
    from model import PROJECT
    from auth import raise_status
    from bson import ObjectId

    try:
        projectId = ObjectId(projectId)
        project_app().projectId_check(projectId=projectId)
        requestObj = {'_id': projectId}
        project_app(requestObj=requestObj).project_delete()
    except PROJECT.DoesNotExist:
        return raise_status(400, '无效的项目')
    except Exception as e:
        logging.error('Request Error: {}\nStack: {}\n'.format(
            e, traceback.format_exc()))
        return jsonify({'error': raise_status(400, '错误的ObjectId')})
    return raise_status(200)
Пример #14
0
def user_update_totally(userId):
    from bson import ObjectId

    requestObj = {'_id': ObjectId(userId)}
    updateObj = request.json()
    fields_list = [
        'name', 'key', 'role', 'mobile', 'email', 'remark', 'certification',
        'thumb'
    ]
    for i in fields_list:
        if i not in updateObj.keys():
            return raise_status(400, '信息不全')
    try:
        user_app(requestObj=requestObj, updateObj=updateObj).user_update()
    except Exception as e:
        print('user_update_totally error:', e)
        return raise_status(500, '后台异常')
    return raise_status(200)
Пример #15
0
def user_get_by_id(userId):
    from bson import ObjectId

    requestObj = {'_id': ObjectId(userId)}
    try:
        user = user_app(requestObj=requestObj).user_find_one()
    except Exception:
        return raise_status(400, '无效的Id')
    re = user_app().get_return(user=user)
    return jsonify(re)
Пример #16
0
def user_delete():
    from app import db
    returnObj = {}
    try:
        user_list = request.json.get('user_list')
        for User in user_list:
            db.mg_user.remove({'username': User})
        returnObj['info'] = '操作成功'
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- user_delete error as: ', e)
        return raise_status(500, str(e))
Пример #17
0
def tenant_update_totally(tenant_id):
    from application.tenant_app import tenant_app
    try:
        TENANT.objects.get({'_id': ObjectId(tenant_id), 'delete': False})
    except TENANT.DoesNotExist:
        return raise_status(400, '无效的租户id')
    requestObj = {'_id': tenant_id}
    updateObj = request.get_json()
    fields = request.args.get('fields')
    query_list = [
        'name', 'logo', 'remark', 'resources', 'activated', 'namespace'
    ]
    needed = ['name', 'remark', 'activated', 'namespace', 'resources', 'logo']
    for i in needed:
        if i not in updateObj.keys():
            return raise_status(400, '信息有缺失')
    updateObj = filter(query_list=query_list, updateObj=updateObj)
    tenant_app(requestObj=requestObj, updateObj=updateObj).tenant_update_set()
    tenant = tenant_app(requestObj=requestObj,
                        collection='tenant').tenant_find_one()
    re = tenant_app(fields=fields).get_return_by_fields(tenant=tenant)
    return jsonify(re)
Пример #18
0
def user_manage():
    from app import db
    returnObj = {}
    try:
        start = int(request.args.get('start', 0))
        end = int(request.args.get('end', 20))
        lmt = end - start
        data_user = db.mg_user.find().limit(lmt).skip(start).sort([('username',
                                                                    1)])
        count = db.mg_user.find().count()
        returnObj['data'] = []
        for User in data_user:
            username = User['username']
            role_list = User['role_list']
            role = []
            collection = {'1': '书摘模块', '2': '书籍模块', '3': '用户模块'}
            # 数据库中取出该用户权限列表,判断并生成基础菜单和进阶菜单
            for single in role_list:
                key = 0
                for menu in role:
                    if single['id'][0] == menu.get('id'):
                        menu['children'].append(single)
                        key = 1
                if key == 0:
                    menu_id = single['id'][0]
                    menu = {
                        'id': menu_id,
                        'name': collection[menu_id],
                        'children': [single]
                    }
                    role.append(menu)
            email = User['email']
            mobile = User['mobile']
            remark = User['remark']
            uid = str(User['_id'])
            returnObj['data'].append({
                'uid': uid,
                'username': username,
                'mobile': mobile,
                'email': email,
                'role_list': role,
                'remark': remark
            })
            returnObj['count'] = count
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- user_manage error as: ', e)
        return raise_status(500, str(e))
Пример #19
0
def change_password():
    from app import db
    returnObj = {}
    try:
        password = request.json.get('password')
        db.mg_user.update({'_id': ObjectId(session['id'])},
                          {'$set': {
                              'password': password
                          }})
        returnObj['info'] = '修改成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- change_password error as: ', e)
        return raise_status(500, str(e))
Пример #20
0
def user_sign():
    requestObj = request.json
    returnObj = {}
    try:
        if type(requestObj) == list:
            returnObj['users'] = []
            for insertObj in requestObj:
                user_model = user_app(requestObj=insertObj).user_insert()
                returnObj['users'].append(user_app().get_return(user_model))
        elif type(requestObj) == dict:
            user_model = user_app(requestObj, 'user').user_insert()
            returnObj['users'] = user_app().get_return(user_model)
        return jsonify(returnObj)
    except Exception as e:
        print(e)
        return jsonify(raise_status(400, '创建失败'))
Пример #21
0
def users_list():
    requestObj = {}
    page = int(request.args.get('page', '1'))
    pageSize = int(request.args.get('pageSize', '20'))
    queries = ['name', 'role', 'certification']
    for query in queries:
        value = request.args.get(query)
        if value:
            if query == 'role':
                requestObj[query] = int(value)
            else:
                requestObj[query] = value
    if request.args.get('all'):
        page = pageSize = None
    else:
        count = user_app(requestObj=requestObj).user_count()
        if count % pageSize == 0:
            totalPage = count // pageSize
        else:
            totalPage = (count // pageSize) + 1
        if page > totalPage:
            return raise_status(400, '页数超出范围')
    users_list = user_app(requestObj=requestObj).user_find_all(page, pageSize)
    user_ln_list = []
    for user in users_list:
        re = user_app().get_return(user=user)
        user_ln_list.append(re)
    returnObj = {}
    if not request.args.get('all'):
        returnObj['meta'] = {
            'page': page,
            'pageSize': pageSize,
            'total': count,
            'totalPage': totalPage
        }
    returnObj['users'] = user_ln_list
    return jsonify(returnObj)
Пример #22
0
def excerpt_update():
    from app import db
    returnObj = {}
    try:
        excerpt_list = request.json.get('excerpt_list')
        for data_book in excerpt_list:
            excerpt_id = data_book.get('excerpt_id')
            ck_exp_chp_id = data_book.get('ck_exp_chp_id')
            ck_exp_chp_title = data_book.get('ck_exp_chp_title')
            ck_exp_text = data_book.get('ck_exp_text')
            ck_is_hot_exp = data_book.get('ck_is_hot_exp')
            # if not ck_is_hot_exp and not ck_exp_text and not ck_exp_chp_title and not ck_exp_chp_id:
            #     info = '没有修改信息'
            #     return raise_status(400, info)
            db.t_excerpts.update({'_id': ObjectId(excerpt_id)}, {
                '$set': {
                    'ck_exp_chp_id': ck_exp_chp_id,
                    'ck_exp_chp_title': ck_exp_chp_title,
                    'ck_exp_text': ck_exp_text,
                    'ck_is_hot_exp': ck_is_hot_exp,
                    'change_status': '1'
                }
            })
            operation = {
                session['id']: [
                    session['username'], 'update',
                    datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                ]
            }
            db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                 {'$push': {
                                     'operation': operation
                                 }})
            db.mg_action_record.insert({
                'userid':
                session['id'],
                'username':
                session['username'],
                'action':
                'change',
                'type':
                '2',
                'aid':
                excerpt_id,
                'date':
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            })
            summary = db.t_excerpts.find_one({'_id': ObjectId(excerpt_id)})
            book_id = summary['bookid']
            data_count = db.t_books.find_one({'_id': ObjectId(book_id)})
            if data_count.get('digest_ck'):
                digest_ck = data_count['digest_ck']
                digest_ck[0] = digest_ck[0] - 1
            else:
                digest_count = db.t_excerpts.count({'bookid': book_id})
                ck_count = db.t_excerpts.count({
                    'bookid':
                    book_id,
                    '$or': [{
                        'change_status': '1'
                    }, {
                        'change_status': '2'
                    }]
                })
                digest_ck = [digest_count - ck_count, digest_count]
            db.t_books.update({'_id': ObjectId(book_id)},
                              {'$set': {
                                  'digest_ck': digest_ck
                              }})
            # data['ck_exp_chp_id'] = ck_exp_chp_id
            # data['ck_exp_chp_title'] = ck_exp_chp_title
            # data['ck_exp_text'] = ck_exp_text
            # data['ck_is_hot_exp'] = ck_is_hot_exp
            # data['change_status'] = '1'
            # operation = data.get('operation', [])
            # operation.append({session['id']: [session['username'],'update',\
            #                                   datetime.now().strftime('%Y-%m-%d %H:%M:%S')]})
            # data['operation'] = operation
            # db.t_excerpts.update({'_id': ObjectId(excerpt_id)}, {'$set': data})
        returnObj['info'] = '修改成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- excerpt_update error as: ', e)
        return raise_status(500, str(e))
Пример #23
0
def excerpt_search():
    from app import db
    returnObj = {}
    try:
        data_search = {}
        book_name = request.json.get('book_name')
        exp_text = request.json.get('exp_text')
        exp_chp_id = request.json.get('exp_chp_id')
        exp_chp_title = request.json.get('exp_chp_title')
        is_hot_exp = request.json.get('is_hot_exp')
        shelf_status = request.json.get('shelf_status')
        check_status = request.json.get('check_status')
        change_status = request.json.get('change_status')
        recommend_status = request.json.get('recommend_status')
        # 查询均采用模糊查询
        if book_name:
            data_search['book_name'] = {'$regex': book_name}
        if exp_text:
            data_search['exp_text'] = {'$regex': exp_text}
        if exp_chp_id:
            data_search['exp_chp_id'] = {'$regex': exp_chp_id}
        if exp_chp_title:
            data_search['exp_chp_title'] = {'$regex': exp_chp_title}
        if is_hot_exp:
            data_search['is_hot_exp'] = {'$regex': is_hot_exp}
        if shelf_status or change_status or check_status or recommend_status:
            if shelf_status == '0' or check_status == '0' or change_status == '0' or recommend_status == '0':
                data_search['$and'] = []
            if shelf_status == '1':
                data_search['shelf_status'] = shelf_status
            elif shelf_status == '0':
                shelf = {
                    '$or': [{
                        'shelf_status': '0'
                    }, {
                        'shelf_status': {
                            '$exists': 0
                        }
                    }]
                }
                data_search['$and'].append(shelf)
                # data_search['$or'] = [{'shelf_status': '0'}, {'shelf_status': {'$exists': 0}}]
            if check_status == '1':
                data_search['check_status'] = check_status
            elif check_status == '0':
                check = {
                    '$or': [{
                        'check_status': '0'
                    }, {
                        'check_status': {
                            '$exists': 0
                        }
                    }]
                }
                data_search['$and'].append(check)
                # data_search['$or'] = [{'check_status': '0'}, {'check_status': {'$exists': 0}}]
            if change_status == '1':
                data_search['change_status'] = change_status
            elif change_status == '0':
                change = {
                    '$or': [{
                        'change_status': '0'
                    }, {
                        'change_status': {
                            '$exists': 0
                        }
                    }]
                }
                data_search['$and'].append(change)
                # data_search['$or'] = [{'change_status': '0'}, {'change_status': {'$exists': 0}}]
            elif change_status == '2':
                data_search['change_status'] = change_status
            elif change_status == '11':
                change = {
                    '$or': [{
                        'change_status': '0'
                    }, {
                        'change_status': {
                            '$exists': 0
                        }
                    }]
                }
                data_search['$and'].append(change)
            elif change_status == '12':
                change = {
                    '$or': [{
                        'change_status': '1'
                    }, {
                        'change_status': '2'
                    }]
                }
                data_search['$and'].append(change)
            if recommend_status == '1':
                data_search['recommend_status'] = recommend_status
            elif recommend_status == '0':
                recommend = {
                    '$or': [{
                        'recommend_status': '0'
                    }, {
                        'recommend_status': {
                            '$exists': 0
                        }
                    }]
                }
                data_search['$and'].append(recommend)
        key_status = 0
        if change_status == '11' and check_status == '0':
            key_status = 1
        elif change_status == '0' and check_status == '0':
            key_status = 1
        elif not change_status and not check_status:
            key_status = 1
        if book_name or exp_text or is_hot_exp:
            key_status = 0
        start = int(request.args.get('start', '0'))
        end = int(request.args.get('end', '30'))
        length = end - start
        # print(change_status, check_status)
        if start > 10000 or key_status == 0:
            count_excerpt = db.t_excerpts.find(data_search).count()
        elif start == 0:
            count_excerpt = start + 150
        else:
            count_excerpt = start + 45
        data = db.t_excerpts.find(data_search).limit(length).skip(start).sort([
            ('book_name', 1), ('exp_text', 1)
        ])
        dataObj = []
        # 查询出的文档可能没有ck字段,即没有修改内容,所以采用get方法,修改内容取原始内容
        for digest in data:
            excerptObj = {}
            excerptObj['excerpt_id'] = str(digest['_id'])
            excerptObj['exp_chp_id'] = digest['exp_chp_id']
            excerptObj['exp_chp_title'] = digest['exp_chp_title']
            excerptObj['exp_text'] = digest['exp_text']
            excerptObj['book_name'] = digest['book_name']
            excerptObj['is_hot_exp'] = digest['is_hot_exp']
            excerptObj['ck_exp_chp_id'] = digest.get('ck_exp_chp_id',
                                                     digest['exp_chp_id'])
            excerptObj['ck_exp_chp_title'] = digest.get(
                'ck_exp_chp_title', digest['exp_chp_title'])
            excerptObj['ck_exp_text'] = digest.get('ck_exp_text',
                                                   digest['exp_text'])
            excerptObj['ck_is_hot_exp'] = digest.get('ck_is_hot_exp',
                                                     digest['is_hot_exp'])
            excerptObj['shelf_status'] = digest.get('shelf_status', '0')
            excerptObj['check_status'] = digest.get('check_status', '0')
            excerptObj['change_status'] = digest.get('change_status', '0')
            excerptObj['recommend_status'] = digest.get(
                'recommend_status', '0')
            dataObj.append(excerptObj)
        returnObj['data'] = dataObj
        returnObj['count'] = count_excerpt
        returnObj['info'] = '查询成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- excerpt_search error as: ', e)
        return raise_status(500, str(e))
Пример #24
0
def book_insert():
    from app import db
    returnObj = {}
    try:
        # 13个字段
        tags = request.json.get('tags')
        score = request.json.get('score')
        subtitle = request.json.get('sbutitle')
        author_list = request.json.get('author_list')
        all_version = request.json.get('all_version')
        summary = request.json.get('summary')
        original_name = request.json.get('original_name')
        category_list = request.json.get('category')
        cover_thumbnail = session.get('insert')
        publish_info = request.json.get('publish_info')
        catalog_info = request.json.get('catalog_info')
        series = request.json.get('series')
        book_name = request.json.get('book_name')
        if not tags or not score or not author_list or not summary\
                or not category_list or not publish_info or not catalog_info or not book_name or not cover_thumbnail:
            info = '有未填信息'
            return raise_status(400, info)
        dataObj = {}
        dataObj['book_name'] = book_name
        dataObj['tags'] = tags
        dataObj['score'] = score
        if not subtitle:
            subtitle = ''
        dataObj['subtitle'] = subtitle
        list = []
        for author in author_list:
            simple = {'id': 100000, 'author_name': author}
            list.append(simple)
        dataObj['author_list'] = list
        if not all_version:
            all_version = []
        dataObj['all_version'] = all_version
        dataObj['summary'] = summary
        if not original_name:
            original_name = ''
        dataObj['original_name'] = original_name
        list = []
        for category in category_list:
            simple = {'id': 100, 'name': category}
            list.append(simple)
        dataObj['category'] = list
        if not cover_thumbnail:
            cover_thumbnail = "http://wfqqreader-1252317822.image.myqcloud.com/cover/873/21031873/s_21031873.jpg"
        dataObj['cover_thumbnail'] = cover_thumbnail
        dataObj['publish_info'] = publish_info
        if ',' in catalog_info[0]:
            catalog_info = catalog_info[0].split(',')
        dataObj['catalog_info'] = catalog_info
        if not series:
            series = []
        dataObj['series'] = series
        operation = {
            session['id']: [
                session['username'], 'insert',
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            ]
        }
        dataObj['operation'] = [operation]
        dataObj['change_status'] = '1'
        dataObj['shelf_status'] = '0'
        dataObj['check_status'] = '0'
        result = db.t_books.insert_one(dataObj)
        db.mg_action_record.insert_one({
            'userid':
            session['id'],
            'username':
            session['username'],
            'action':
            'insert',
            'type':
            '1',
            'aid':
            str(result.inserted_id),
            'date':
            datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        })
        returnObj['info'] = '录入成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- book_insert error as: ', e)
        return raise_status(500, str(e))
Пример #25
0
def excerpt_insert():
    from app import db
    returnObj = {}
    try:
        bookid = request.json.get('bookid')
        # book_name = request.json.get('book_name')
        exp_text = request.json.get('exp_text')
        # exp_chp_id = request.json.get('exp_chp_id')
        # exp_chp_title = request.json.get('exp_chp_title')
        is_hot_exp = request.json.get('is_hot_exp')
        if not bookid or not exp_text or not is_hot_exp:
            info = '有未填信息'
            return raise_status(400, info)
        data = db.t_books.find_one({'_id': ObjectId(bookid)})
        book_name = data['book_name']
        operation = {
            session['id']: [
                session['username'], 'insert',
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            ]
        }
        data_insert = []
        exp_count = 0
        for content in exp_text:
            excerpt = {
                'bookid': bookid,
                'book_name': book_name,
                'exp_text': content,
                'exp_chp_id': '',
                'exp_chp_title': '',
                'is_hot_exp': is_hot_exp,
                'operation': [operation],
                'check_status': '0',
                'shelf_status': '0',
                'change_status': '1',
                'recommend_status': '0'
            }
            data_insert.append(excerpt)
            exp_count += 1
        data_book = db.t_books.find_one({'_id': ObjectId(bookid)})
        if data_book.get('digest_ck'):
            digest_ck = [
                data_book['digest_ck'][0],
                data_book['digest_ck'][1] + exp_count
            ]
        else:
            digest_count = db.t_excerpts.count({'bookid': bookid})
            ck_count = db.t_excerpts.count({
                'bookid':
                bookid,
                '$or': [{
                    'change_status': '1'
                }, {
                    'change_status': '2'
                }]
            })
            digest_ck = [digest_count - ck_count, digest_count + exp_count]
        db.t_books.update_one({'_id': ObjectId(bookid)},
                              {'$set': {
                                  'digest_ck': digest_ck
                              }})
        results = db.t_excerpts.insert_many(data_insert)
        action_list = []
        for excerpt_id in results.inserted_ids:
            action_list.append({
                'userid':
                session['id'],
                'username':
                session['username'],
                'action':
                'insert',
                'type':
                '2',
                'aid':
                str(excerpt_id),
                'date':
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            })
        db.mg_action_record.insert_many(action_list)
        returnObj['info'] = '录入成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- excerpt_insert error as: ', e)
        return raise_status(500, str(e))
Пример #26
0
def book_operation():
    from app import db
    returnObj = {}
    try:
        list = request.json.get('list')
        action = request.args.get('action')
        key_status = 0
        if action == 'up':
            book_doc = []
            category_list = []
            for book_id in list:
                data_insert = db.t_books.find_one({'_id': ObjectId(book_id)})
                if data_insert.get('shelf_status') == '1':
                    info = '已有上架书籍'
                    key_status = 1
                    continue
                operation = {
                    session['id']: [
                        session['username'], 'up',
                        datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    ]
                }
                db.t_books.update({'_id': ObjectId(book_id)},
                                  {'$push': {
                                      'operation': operation
                                  }})
                db.t_books.update({'_id': ObjectId(book_id)},
                                  {'$set': {
                                      'shelf_status': '1'
                                  }})
                del data_insert['_id']
                doc = {
                    'index': {
                        '_index': 't_books',
                        '_type': 'digest',
                        '_id': book_id
                    }
                }
                book_doc.append(doc)
                book_doc.append(data_insert)
                for single in data_insert['category']:
                    category_list.append(single)
            if book_doc == []:
                info = '书籍均已上架'
                return raise_status(400, info)
            es_bulk('t_books', book_doc)
            redis_zincrby(category_list, 1)
        elif action == 'down':
            category_list = []
            for book_id in list:
                operation = {
                    session['id']: [
                        session['username'], 'down',
                        datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    ]
                }
                db.t_books.update({'_id': ObjectId(book_id)},
                                  {'$push': {
                                      'operation': operation
                                  }})
                db.t_books.update({'_id': ObjectId(book_id)}, {
                    '$set': {
                        'shelf_status': '0',
                        'change_status': '0',
                        'check_status': '0'
                    }
                })
                # 书籍下架时,书籍下的书摘也都下架,下架后修改状态为未修改、审核状态为未审核
                # db.t_excerpts.update({'bookid': book_id}, {'$push': {'operation': operation}})
                # db.t_excerpts.update({'bookid': book_id}, {'$set': {'shelf_status': '0',
                #                                                  'change_status': '0', 'check_status': '0'}})
                try:
                    es_delete('t_books', book_id)
                except Exception as e:
                    info = '有书籍存在异常,请重新点击查询'
                    key_status = 1
                data_down = db.t_books.find_one({'_id': ObjectId(book_id)})
                for single in data_down['category']:
                    category_list.append(single)
            redis_zincrby(category_list, -1)
        elif action == 'pass':
            for book_id in list:
                operation = {
                    session['id']: [
                        session['username'], 'pass',
                        datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    ]
                }
                data = db.t_books.find_one({'_id': ObjectId(book_id)})
                if data.get('change_status') == '2':
                    db.t_excerpt.remove({'bookid': ObjectId(book_id)})
                    db.t_books.remove({'_id': ObjectId(book_id)})
                if data.get('ck_book_name'):
                    data['book_name'] = data['ck_book_name']
                    db.t_excerpts.update_many(
                        {'bookid': book_id},
                        {'$set': {
                            'book_name': data['ck_book_name']
                        }})
                if data.get('ck_author_list'):
                    data['author_list'] = data['ck_author_list']
                if data.get('ck_category'):
                    data['category'] = data['ck_category']
                if data.get('ck_catalog_info'):
                    data['catalog_info'] = data['ck_catalog_info']
                if data.get('ck_tags'):
                    data['tags'] = data['ck_tags']
                if data.get('ck_summary'):
                    data['summary'] = data['ck_summary']
                if data.get('ck_cover_thumbnail'):
                    data['cover_thumbnail'] = data['ck_cover_thumbnail']
                if data.get('ck_score'):
                    data['score'] = data['ck_score']
                if data.get('ck_publish_info'):
                    data['publish_info'] = data['ck_publish_info']
                data['check_status'] = '1'
                db.t_books.update({'_id': ObjectId(book_id)},
                                  {'$push': {
                                      'operation': operation
                                  }})
                db.t_books.update({'_id': ObjectId(book_id)}, data)
        elif action == 'refuse':
            for book_id in list:
                operation = {
                    session['id']: [
                        session['username'], 'refuse',
                        datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    ]
                }
                db.t_books.update({'_id': ObjectId(book_id)},
                                  {'$push': {
                                      'operation': operation
                                  }})
                db.t_books.update(
                    {'_id': ObjectId(book_id)},
                    {'$set': {
                        'check_status': '0',
                        'change_status': '0'
                    }})
        returnObj['info'] = '操作成功'
        if key_status == 1:
            return raise_status(400, info)
        action_list = []
        for book_id in list:
            action_list.append({
                'userid':
                session['id'],
                'username':
                session['username'],
                'action':
                action,
                'type':
                '1',
                'aid':
                book_id,
                'date':
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            })
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- book_operation error as: ', e)
        return raise_status(500, str(e))
Пример #27
0
def excerpt_operation():
    from app import db
    returnObj = {}
    try:
        key_status = 0
        list = request.json.get('list')
        action = request.args.get('action')
        if action == 'up':
            excerpt_doc = []
            for excerpt_id in list:
                data_excerpt = db.t_excerpts.find_one(
                    {'_id': ObjectId(excerpt_id)})
                if data_excerpt.get('shelf_status') == '1':
                    info = '有书摘已上架'
                    key_status = 1
                    continue
                data_check = db.t_books.find_one(
                    {'_id': ObjectId(data_excerpt['bookid'])})
                if data_check.get('shelf_status') == '1':
                    operation = {
                        session['id']: [
                            session['username'], 'up',
                            datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                        ]
                    }
                    db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                         {'$push': {
                                             'operation': operation
                                         }})
                    db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                         {'$set': {
                                             'shelf_status': '1'
                                         }})
                    del data_excerpt['_id']
                    doc = {
                        'index': {
                            '_index': 't_excerpts',
                            '_type': 'digest',
                            '_id': excerpt_id
                        }
                    }
                    excerpt_doc.append(doc)
                    excerpt_doc.append(data_excerpt)
                    # 书摘上架将书籍的category加入redis
                    redis_zincrby(data_check['category'], 1)
                else:
                    info = '有书籍未上架'
                    key_status = 1
            if key_status == 0:
                es_bulk('t_excerpts', excerpt_doc)
            elif excerpt_doc == []:
                info = '书摘均已上架或有书籍未上架'
                return raise_status(400, info)
        elif action == 'down':
            for excerpt_id in list:
                dg = db.t_excerpts.find_one({'_id': ObjectId(excerpt_id)})
                book = db.t_books.find_one({'_id': ObjectId(dg['bookid'])})
                digest_ck = [book['digest_ck'][0] + 1, book['digest_ck'][1]]
                operation = {
                    session['id']: [
                        session['username'], 'down',
                        datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    ]
                }
                db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                     {'$push': {
                                         'operation': operation
                                     }})
                db.t_excerpts.update({'_id': ObjectId(excerpt_id)}, {'$set': {'shelf_status': '0',\
                                                                              'check_status': '0',\
                                                                              'change_status': '0'}})
                db.t_books.update({'_id': ObjectId(dg['bookid'])},
                                  {'$set': {
                                      'digest_ck': digest_ck
                                  }})
                # 书摘下架将书籍的category从redis中-1
                redis_zincrby(book['category'], -1)
                try:
                    es_delete('t_excerpts', excerpt_id)
                except Exception as e:
                    print(e)
                    info = '有书摘已下架或不存在,请重新点击查询'
                    key_status = 1
        elif action == 'pass':
            for excerpt_id in list:
                operation = {
                    session['id']: [
                        session['username'], 'pass',
                        datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    ]
                }
                data = db.t_excerpts.find_one({'_id': ObjectId(excerpt_id)})
                # data['exp_chp_id'] = data['ck_exp_chp_id']
                # data['exp_chp_title'] = data['ck_exp_chp_title']
                if data.get('change_status') == '2':
                    data_book = db.t_books.find_one(
                        {'_id': ObjectId(data['bookid'])})
                    if data_book.get('digest_ck'):
                        digest_ck = [
                            data_book['digest_ck'][0],
                            data_book['digest_ck'][1] - 1
                        ]
                        db.t_books.update_one(
                            {'_id': ObjectId(data['bookid'])},
                            {'$set': {
                                'digest_ck': digest_ck
                            }})
                    db.t_excerpts.remove({'_id': ObjectId(excerpt_id)})
                if data.get('ck_exp_text'):
                    data['exp_text'] = data['ck_exp_text']
                if data.get('ck_is_hot_exp'):
                    data['is_hot_exp'] = data['ck_is_hot_exp']
                data['check_status'] = "1"
                db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                     {'$push': {
                                         'operation': operation
                                     }})
                db.t_excerpts.update({'_id': ObjectId(excerpt_id)}, data)
        elif action == 'refuse':
            for excerpt_id in list:
                dg = db.t_excerpts.find_one({'_id': ObjectId(excerpt_id)})
                book = db.t_books.find_one({'_id': ObjectId(dg['bookid'])})
                digest_ck = [book['digest_ck'][0] + 1, book['digest_ck'][1]]
                operation = {
                    session['id']: [
                        session['username'], 'refuse',
                        datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    ]
                }
                db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                     {'$push': {
                                         'operation': operation
                                     }})
                db.t_excerpts.update({'_id': ObjectId(excerpt_id)}, {'$set': {'check_status': '0', 'change_status': '0',\
                                                                              'digest_ck': digest_ck}})
                db.t_books.update({'_id': ObjectId(dg['bookid'])},
                                  {'$set': {
                                      'digest_ck': digest_ck
                                  }})
        elif action == 'recommend':
            for excerpt_id in list:
                data_check = db.t_excerpts.find_one(
                    {'_id': ObjectId(excerpt_id)})
                if data_check.get('shelf_status') == '1':
                    operation = {session['id']: [session['username'], 'recommend',\
                                                 datetime.now().strftime('%Y-%m-%d %H:%M:%S')]}
                    db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                         {'$push': {
                                             'operation': operation
                                         }})
                    db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                         {'$set': {
                                             'recommend_status': '1'
                                         }})
                else:
                    info = '有未上架书摘'
                    key_status = 1
        elif action == 'deprecated':
            for excerpt_id in list:
                operation = {session['id']: [session['username'], 'deprecated',\
                                             datetime.now().strftime('%Y-%m-%d %H:%M:%S')]}
                db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                     {'$push': {
                                         'operation': operation
                                     }})
                db.t_excerpts.update({'_id': ObjectId(excerpt_id)},
                                     {'$set': {
                                         'recommend_status': '0'
                                     }})
        if key_status == 1:
            return raise_status(400, info)
        action_list = []
        for excerpt_id in list:
            action_list.append({
                'userid':
                session['id'],
                'username':
                session['username'],
                'action':
                action,
                'type':
                '2',
                'aid':
                excerpt_id,
                'date':
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            })
        db.mg_action_record.insert_many(action_list)
        returnObj['info'] = '操作成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- excerpt_operation error as: ', e)
        if action == 'pass':
            try:
                for excerpt_id in list:
                    db.t_excerpts.update_one({'_id': ObjectId(excerpt_id)},
                                             {'$set': {
                                                 'shelf_status': '0'
                                             }})
            except Exception as err:
                print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                      "- excerpt_operation's except error as: ", err)
        return raise_status(500, str(e))
Пример #28
0
def book_search():
    from app import db
    returnObj = {}
    try:
        book_name = request.json.get('book_name')
        author_list = request.json.get('author_list')
        tags = request.json.get('tags')
        score = request.json.get('score')
        summary = request.json.get('summary')
        category = request.json.get('category')
        catalog_info = request.json.get('catalog_info')
        publish_info = request.json.get('publish_info')
        shelf_status = request.json.get('shelf_status')
        check_status = request.json.get('check_status')
        change_status = request.json.get('change_status')
        digest_status = request.json.get('digest_ck')
        data_search = {}
        if publish_info:
            publish_date = publish_info.get('publish_date')
            ISBN = publish_info.get('ISBN')
            binding = publish_info.get('binding')
            price = publish_info.get('price')
            pages = publish_info.get('pages')
            words = publish_info.get('words')
            publisher = publish_info.get('publisher')
            if publish_date:
                data_search['publish_info.publish_date'] = {
                    '$regex': publish_date
                }
            if ISBN:
                data_search['publish_info.ISBN'] = {'$regex': ISBN}
            if binding:
                data_search['publish_info.binding'] = {'$regex': binding}
            if price:
                data_search['publish_info.price'] = {'$regex': price}
            if pages:
                data_search['publish_info.pages'] = {'$regex': pages}
            if words:
                data_search['publish_info.words'] = {'$regex': words}
            if publisher:
                data_search['publish_info.publisher'] = {'$regex': publisher}
        if book_name:
            data_search['book_name'] = {'$regex': book_name}
        if author_list:
            if not change_status or change_status == '11':
                data_search['author_list.author_name'] = {'$all': author_list}
            else:
                data_search['author_list.author_name'] = {
                    '$all': author_list.split(',')
                }
        if tags:
            data_search['tags'] = {'$all': tags}
        if score:
            data_search['score'] = {'$regex': score}
        if summary:
            data_search['summary'] = {'$regex': summary}
        if category:
            if type(category) == str:
                category = category.split(',')
            data_search['category.name'] = {'$all': category}
        if catalog_info:
            data_search['catalog_info'] = {'$all': catalog_info}
        if digest_status == '0':
            data_search['digest_ck.0'] = 0
        elif digest_status == '1':
            data_search['digest_ck.0'] = {'$gt': 0}
        if shelf_status or change_status or check_status:
            if shelf_status == '0' or check_status == '0' or change_status == '0':
                data_search['$and'] = []
            if shelf_status == '1':
                data_search['shelf_status'] = shelf_status
            elif shelf_status == '0':
                shelf = {
                    '$or': [{
                        'shelf_status': '0'
                    }, {
                        'shelf_status': {
                            '$exists': 0
                        }
                    }]
                }
                data_search['$and'].append(shelf)
                # data_search['$or'] = [{'shelf_status': '0'}, {'shelf_status': {'$exists': 0}}]
            if check_status == '1':
                data_search['check_status'] = check_status
            elif check_status == '0':
                check = {
                    '$or': [{
                        'check_status': '0'
                    }, {
                        'check_status': {
                            '$exists': 0
                        }
                    }]
                }
                data_search['$and'].append(check)
                # data_search['$or'] = [{'check_status': '0'}, {'check_status': {'$exists': 0}}]
            if change_status == '1':
                data_search['change_status'] = change_status
            elif change_status == '0':
                change = {
                    '$or': [{
                        'change_status': '0'
                    }, {
                        'change_status': {
                            '$exists': 0
                        }
                    }]
                }
                data_search['$and'].append(change)
                # data_search['$or'] = [{'change_status': '0'}, {'change_status': {'$exists': 0}}]
            elif change_status == '2':
                data_search['change_status'] = change_status
            elif change_status == '11':
                change = {
                    '$or': [{
                        'change_status': '0'
                    }, {
                        'change_status': {
                            '$exists': 0
                        }
                    }, {
                        'change_status': '1'
                    }]
                }
                data_search['$and'].append(change)
            elif change_status == '12':
                change = {
                    '$or': [{
                        'change_status': '1'
                    }, {
                        'change_status': '2'
                    }]
                }
                data_search['$and'].append(change)
        key_status = 0
        if change_status == '11' and check_status == '0':
            key_status = 1
        elif change_status == '0' and check_status == '0':
            key_status = 1
        elif not change_status and not check_status:
            key_status = 1
        if book_name or author_list or tags or publish_info or category or digest_status:
            key_status = 0
        start = int(request.args.get('start', '0'))
        end = int(request.args.get('end', '30'))
        length = end - start
        # count_book = 8000000
        # print(data_search)
        # print(change_status, check_status)
        if start > 10000 or key_status == 0:
            count_book = db.t_books.count(data_search)
        elif start == 0:
            count_book = start + 150
        else:
            count_book = start + 45
        books = db.t_books.find(data_search).limit(length).skip(start).sort([
            ('score', -1)
        ])
        data_list = []
        for data in books:
            dataObj = {}
            dataObj['book_id'] = str(data['_id'])
            dataObj['book_name'] = data['book_name']
            dataObj['author_list'] = []
            # dataObj['author_list'] = data['author_list']
            for author in data['author_list']:
                dataObj['author_list'].append(author['author_name'])
            dataObj['category'] = []
            for cate in data['category']:
                dataObj['category'].append((cate['name']))
            dataObj['catalog_info'] = data['catalog_info']
            dataObj['tags'] = data['tags']
            dataObj['summary'] = data['summary']
            dataObj['cover_thumbnail'] = data['cover_thumbnail']
            dataObj['score'] = data['score']
            dataObj['publish_info'] = data['publish_info']
            dataObj['ck_book_name'] = data.get('ck_book_name',
                                               data['book_name'])
            dataObj['ck_author_list'] = []
            # dataObj['ck_author_list'] = data.get('ck_author_list', data['author_list'])
            for author in data.get('ck_author_list', data['author_list']):
                dataObj['ck_author_list'].append(author['author_name'])
            dataObj['ck_category'] = []
            for ck_cate in data.get('ck_category', data['category']):
                dataObj['ck_category'].append(ck_cate['name'])
            dataObj['ck_catalog_info'] = data.get('ck_catalog_info',
                                                  data['catalog_info'])
            dataObj['ck_tags'] = data.get('ck_tags', data['tags'])
            dataObj['ck_summary'] = data.get('ck_summary', data['summary'])
            dataObj['ck_cover_thumbnail'] = data.get('ck_cover_thumbnail',
                                                     data['cover_thumbnail'])
            dataObj['ck_score'] = data.get('ck_score', data['score'])
            dataObj['ck_publish_info'] = data.get('ck_publish_info',
                                                  data['publish_info'])
            dataObj['check_status'] = data.get('check_status', '0')
            dataObj['shelf_status'] = data.get('shelf_status', '0')
            dataObj['change_status'] = data.get('change_status', '0')
            digest_ck = data.get('digest_ck', ['-', '-'])
            ck_count = str(digest_ck[0]) + '/' + str(digest_ck[1])
            dataObj['digest_ck'] = ck_count
            data_list.append(dataObj)
        returnObj['data'] = data_list
        returnObj['count'] = count_book
        returnObj['info'] = '查询成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- book_search error as: ', e)
        return raise_status(500, str(e))
Пример #29
0
def index():
    from auth import raise_status
    return raise_status(200)
Пример #30
0
def book_update():
    from app import db
    returnObj = {}
    try:
        book_list = request.json.get('book_list')
        for data_book in book_list:
            book_id = data_book.get('book_id')
            ck_book_name = data_book.get('ck_book_name')
            author_list = data_book.get('ck_author_list')
            if type(author_list) == str:
                author_list = author_list.replace(' ', '')
                author_list = author_list.replace(',', ',')
                author_list = author_list.split(',')
            ck_author_list = []
            for author in author_list:
                ck_author_list.append({'id': 1000000, 'author_name': author})
            category_list = data_book.get('ck_category')
            if type(category_list) == str:
                category_list = category_list.replace(' ', '')
                category_list = category_list.replace(',', ',')
                category_list = category_list.split(',')
            ck_category_list = []
            for category in category_list:
                ck_category_list.append({'id': 100, 'name': category})
            ck_catalog_info = data_book.get('ck_catalog_info')
            ck_tags = data_book.get('ck_tags')
            ck_summary = data_book.get('ck_summary')
            ck_cover_thumbnail = session.get(book_id)
            ck_score = data_book.get('ck_score')
            ck_publish_info = data_book.get('ck_publish_info')
            # if not ck_book_name and not ck_author_list and not ck_category and not ck_catalog_info and not ck_tags\
            #     and not ck_summary and not ck_cover_thumbnail and not ck_score and not ck_publish_info:
            #     info = '没有修改信息'
            #     return raise_status(400, info)
            data_update = {}
            data_update['ck_book_name'] = ck_book_name
            data_update['ck_author_list'] = ck_author_list
            data_update['ck_category'] = ck_category_list
            data_update['ck_catalog_info'] = ck_catalog_info
            data_update['ck_tags'] = ck_tags
            data_update['ck_summary'] = ck_summary
            data_update['ck_cover_thumbnail'] = ck_cover_thumbnail
            data_update['ck_score'] = ck_score
            data_update['ck_publish_info'] = ck_publish_info
            data_update['change_status'] = '1'
            operation = {
                session['id']: [
                    session['username'], 'update',
                    datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                ]
            }
            db.t_books.update({'_id': ObjectId(book_id)},
                              {'$set': data_update})
            db.t_books.update({'_id': ObjectId(book_id)},
                              {'$push': {
                                  'operation': operation
                              }})
            db.mg_action_record.insert_one({
                'userid':
                session['id'],
                'username':
                session['username'],
                'action':
                'change',
                'type':
                '1',
                'aid':
                book_id,
                'date':
                datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            })
        returnObj['info'] = '修改成功'
        return jsonify(returnObj)
    except Exception as e:
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
              '- book_update error as: ', e)
        return raise_status(500, str(e))