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