Exemple #1
0
def get_admin_users():
    start, count = paginate()
    group_id = request.args.get('group_id')
    condition = {
        'admin': UserAdmin.COMMON.value,
        'group_id': group_id
    } if group_id else {
        'admin': UserAdmin.COMMON.value
    }

    users = db.session.query(
        manager.user_model,
        manager.group_model.name).filter_by(soft=True, **condition).join(
            manager.group_model, manager.user_model.group_id ==
            manager.group_model.id).offset(start).limit(count).all()

    user_and_group = []
    for user, group_name in users:
        setattr(user, 'group_name', group_name)
        user._fields.append('group_name')
        user.hide('update_time')
        user_and_group.append(user)
        # 有分组的时候就加入分组条件
        # total_nums = get_total_nums(manager.user_model, is_soft=True, admin=UserAdmin.COMMON.value)
    total = get_total_nums(manager.user_model, is_soft=True, **condition)
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    return json_res(count=count,
                    items=user_and_group,
                    page=page,
                    total=total,
                    total_page=total_page)
Exemple #2
0
def get_all_file():
    # 1 img ,2 txt,3 audio,4 video
    form = GetGroupFile().validate_for_api()
    folder_id = int(form.folder_id.data)
    isDelete = int(form.isDelete.data)
    current_path = current_app.static_url_path
    site_domain = current_app.config.get('SITE_DOMAIN') \
        if current_app.config.get('SITE_DOMAIN') else 'http://127.0.0.1:2100'
    join_path = site_domain + current_path
    start, count = paginate()
    FileManage = FileMap[form.type.data]
    total = get_total_nums(FileManage, True)
    if (isDelete):
        FileObj = FileManage.query.filter(
            db.and_(FileManage.folder_id == folder_id, FileManage.delete_time
                    != None) if folder_id else FileManage.delete_time != None)
        paths = FileObj.order_by(
            db.desc('create_time')).offset(start).limit(count).all()
        total = get_total_nums(FileManage) - total
    else:
        FileObj = FileManage.query.filter(
            db.and_(FileManage.folder_id == folder_id, FileManage.delete_time
                    == None) if folder_id else FileManage.delete_time == None)
        paths = FileObj.order_by(
            db.desc('create_time')).offset(start).limit(count).all()
    for x in paths:
        x.path = x.path if re.search(r'http', x.path) else join_path + x.path

    total_page = math.ceil(total / count)
    page = get_page_from_query()
    return json_res(count=count,
                    items=paths,
                    page=page,
                    total=total,
                    total_page=total_page)
Exemple #3
0
def get_admin_groups():
    start, count = paginate()
    groups = manager.group_model.query.filter().offset(start).limit(
        count).all()
    if groups is None:
        raise NotFound(msg='不存在任何权限组')

    for group in groups:
        auths = db.session.query(manager.auth_model.auth,
                                 manager.auth_model.module).filter_by(
                                     soft=False, group_id=group.id).all()

        auths = [{'auth': auth[0], 'module': auth[1]} for auth in auths]
        res = _split_modules(auths)
        setattr(group, 'auths', res)
        group._fields.append('auths')

    total = get_total_nums(manager.group_model)
    total_page = math.ceil(total / count)
    page = get_page_from_query()

    return json_res(count=count,
                    items=groups,
                    page=page,
                    total=total,
                    total_page=total_page)
Exemple #4
0
def search_info():
    form = HistoryInfoForm().validate_for_api()
    keyword = request.args.get('keyword', default=None, type=str)
    if keyword is None or '':
        raise ParameterException(msg='搜索关键字不可为空')
    start, count = paginate()
    # logs = Log.query.filter(Log.message.like(f'%{keyword}%'))
    # res = OpenVPNLogInfo.query.filter(OpenVPNLogInfo.common_name.like((f'%{keyword}%')))
    res = OpenVPNLogInfo.query.filter(
        OpenVPNLogInfo.remote_ip.like(f"%{keyword}%"))
    if form.username.data:
        res = OpenVPNLogInfo.query.filter(
            OpenVPNLogInfo.common_name == form.username.data)
    if form.start.data and form.end.data:
        res = res.filter(
            OpenVPNLogInfo.starting_time.between(form.start.data,
                                                 form.end.data))
    total = res.count()
    res = res.order_by(
        text('starting_time desc')).offset(start).limit(count).all()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    if not res:
        res = []
    return json_res(page=page,
                    count=count,
                    total=total,
                    items=res,
                    total_page=total_page)
def get_users():
    start, count = paginate()
    users = OpenVPNUser.get_all(start, count)
    total = OpenVPNUser.get_total_nums()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    return json_res(count=count, page=page, total=total, total_page=total_page, items=users)
def get_info():
    start, count = paginate()
    info = OpenVPNLogInfo.get_all(start, count)
    total = OpenVPNLogInfo.get_total_nums()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    return json_res(count=count, page=page, total=total, total_page=total_page, items=info)
Exemple #7
0
def get_logs():
    form = LogFindForm().validate_for_api()
    start, count = paginate()
    logs = db.session.query(Log).filter()
    if form.name.data:
        logs = logs.filter(Log.user_name == form.name.data)
    if form.start.data and form.end.data:
        logs = logs.filter(Log.time.between(form.start.data, form.end.data))
    total = logs.count()
    logs = logs.order_by(text('time desc')).offset(start).limit(count).all()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    if not logs:
        logs = []
    return json_res(page=page, count=count, total=total, items=logs, total_page=total_page)
Exemple #8
0
def get_user_logs():
    form = LogFindForm().validate_for_api()
    keyword = request.args.get('keyword', default=None, type=str)
    if keyword is None or '':
        raise ParameterException(msg='搜索关键字不可为空')
    start, count = paginate()
    logs = Log.query.filter(Log.message.like(f'%{keyword}%'))
    if form.name.data:
        logs = logs.filter(Log.user_name == form.name.data)
    if form.start.data and form.end.data:
        logs = logs.filter(Log._time.between(form.start.data, form.end.data))
    total = logs.count()
    logs = logs.order_by(text('time desc')).offset(start).limit(count).all()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    if not logs:
        logs = []
    return json_res(page=page, count=count, total=total, items=logs, total_page=total_page)