def get(self): """Get role list.""" args = request.args current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) user_id = args.get('user_id', type=int) id = args.get('id', type=int) name = args.get('name', type=str) role_query = DBRole.query if id is not None: role_query = role_query.filter_by(id=id) if name is not None: role_query = role_query.filter_by(name=name) if user_id is not None: role_query = role_query \ .join(DBUserRole, and_(DBUserRole.role_id == DBRole.id)) \ .join(DBUser, and_(DBUser.id == DBUserRole.user_id)) \ .filter(DBUser.id == user_id) marshal_records = marshal( role_query.order_by(DBRole.id.desc()).paginate( current_page, page_size, error_out=False).items, role_fields) results_wrapper = { 'total': role_query.count(), 'roles': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_role_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """Get record list.""" args = request.args current_page = request.args.get('currentPage', 1, type=int) page_size = request.args.get('pageSize', 10, type=int) id = args.get('id', type=int) host = args.get('host', type=str) ip = args.get('ip', type=str) env = args.get('env', type=str) dns_server_type = args.get('dns_server_type', type=str) server_query = db.session.query(DBDNSServer) \ .join(DBPrivilege, and_( DBDNSServer.id == DBPrivilege.resource_id, DBPrivilege.resource_type == ResourceType.SERVER, DBPrivilege.operation == Operation.ACCESS )) \ .join(DBRolePrivilege, and_( DBPrivilege.id == DBRolePrivilege.privilege_id )) \ .join(DBRole, and_(DBRole.id == DBRolePrivilege.role_id)) \ .join(DBUserRole, and_(DBUserRole.role_id == DBRole.id)) \ .join(DBUser, and_(DBUser.id == DBUserRole.user_id)) \ .filter(DBUser.id == g.current_user.id) if id is not None: server_query = server_query.filter(DBDNSServer.id == id) if host is not None: server_query = server_query.filter( DBDNSServer.host.like('%' + host + '%')) if ip is not None: server_query = server_query.filter( DBDNSServer.ip.like('%' + ip + '%')) if env is not None: server_query = server_query.filter( DBDNSServer.env.like('%' + env + '%')) if dns_server_type is not None: server_query = server_query.filter( DBDNSServer.dns_server_type == dns_server_type) marshal_records = marshal( server_query.order_by(DBDNSServer.id.desc()).paginate( current_page, page_size, error_out=False).items, server_fields) results_wrapper = { 'total': server_query.count(), 'servers': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_server_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """Get record list.""" args = request.args zone_id = args.get('zone_id') if zone_id: if not g.current_user.is_admin(): current_zone = DBZone.query.get(int(zone_id)) if not current_zone.can_access: abort(403) else: if not g.current_user.is_admin(): abort(403) current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) id = args.get('id', type=int) host = args.get('host', type=str) record_type = args.get('record_type', type=str) ttl = args.get('ttl', type=str) value = args.get('value', type=str) view_name = args.get('view_name', type=str) record_query = DBRecord.query if id is not None: record_query = record_query.filter(DBRecord.id == id) if host is not None: record_query = record_query.filter( DBRecord.host.like('%' + host + '%')) if record_type is not None: record_query = record_query.filter( DBRecord.record_type == record_type) if ttl is not None: record_query = record_query.filter(DBRecord.ttl == ttl) if value is not None: record_query = record_query.filter(DBRecord.value == value) if view_name is not None: record_query = record_query.filter(DBRecord.view_name == view_name) if zone_id is not None: record_query = record_query.filter( DBRecord.zone_id == int(zone_id)) marshal_records = marshal( record_query.order_by(DBRecord.id.desc()).paginate( current_page, page_size, error_out=False).items, record_fields) results_wrapper = { 'total': record_query.count(), 'records': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_record_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """Get view list.""" args = request.args zone_id = args.get('zone_id', type=int) current_page = request.args.get('currentPage', 1, type=int) page_size = request.args.get('pageSize', 10, type=int) id = args.get('id', type=int) name = args.get('name', type=str) view_query = DBView.query \ .join(DBPrivilege, and_( DBView.id == DBPrivilege.resource_id, DBPrivilege.resource_type == ResourceType.VIEW, DBPrivilege.operation == Operation.ACCESS )) \ .join(DBRolePrivilege, and_( DBPrivilege.id == DBRolePrivilege.privilege_id )) \ .join(DBRole, and_(DBRole.id == DBRolePrivilege.role_id)) \ .join(DBUserRole, and_(DBUserRole.role_id == DBRole.id)) \ .join(DBUser, and_(DBUser.id == DBUserRole.user_id)) \ .filter(DBUser.id == g.current_user.id) if id is not None: view_query = view_query.filter_by(id=id) if name is not None: view_query = view_query.filter(DBView.name.like('%' + name + '%')) if zone_id is not None: current_zone = DBZone.query.get(zone_id) if current_zone.zone_group == 0: return DNSPod.getDNSPodLines(current_zone.name) view_query = view_query.join( DBViewZone, and_(DBViewZone.view_id == DBView.id)) \ .join(DBZone, and_(DBZone.id == DBViewZone.zone_id)) \ .filter(DBZone.id == int(zone_id)) marshal_records = marshal( view_query.order_by(DBView.id.desc()).paginate( current_page, page_size, error_out=False).items, view_fields) results_wrapper = { 'total': view_query.count(), 'views': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_view_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """Get zone list.""" args = request.args current_page = request.args.get('currentPage', 1, type=int) page_size = request.args.get('pageSize', 10, type=int) id = args.get('id', type=int) name = args.get('name', type=str) zone_group = args.get('zone_group', type=int) zone_type = args.get('zone_type', type=str) zone_query = DBZone.query \ .join(DBPrivilege, and_( DBZone.id == DBPrivilege.resource_id, DBPrivilege.resource_type == ResourceType.ZONE, DBPrivilege.operation == Operation.ACCESS )) \ .join(DBRolePrivilege, and_( DBPrivilege.id == DBRolePrivilege.privilege_id )) \ .join(DBRole, and_(DBRole.id == DBRolePrivilege.role_id)) \ .join(DBUserRole, and_(DBUserRole.role_id == DBRole.id)) \ .join(DBUser, and_(DBUser.id == DBUserRole.user_id)) \ .filter(DBUser.id == g.current_user.id) if id is not None: zone_query = zone_query.filter(DBZone.id == id) if name is not None: zone_query = zone_query.filter(DBZone.name == name) if zone_group is not None: zone_query = zone_query.filter(DBZone.zone_group == zone_group) if zone_type is not None: zone_query = zone_query.filter(DBZone.zone_type == zone_type) marshal_records = marshal( zone_query.order_by(DBZone.id.desc()).paginate( current_page, page_size, error_out=False).items, zone_fields) results_wrapper = { 'total': zone_query.count(), 'zones': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_zone_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """Get privilege list.""" args = request.args current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) role_id = args.get('role_id', type=int) id = args.get('id', type=int) name = args.get('name', type=str) operation = args.get('operation', type=int) resource_type = args.get('resource_type', type=int) resource_id = args.get('resource_id', type=int) privilege_query = DBPrivilege.query if id is not None: privilege_query = privilege_query.filter_by(id=id) if name is not None: privilege_query = privilege_query.filter_by(name=name) if operation is not None: privilege_query = privilege_query.filter_by(operation=operation) if resource_type is not None: privilege_query = privilege_query.filter_by(resource_type=resource_type) if resource_id is not None: privilege_query = privilege_query.filter_by(resource_id=resource_id) if role_id is not None: privilege_query = privilege_query.join( DBRolePrivilege, and_(DBRolePrivilege.privilege_id == DBPrivilege.id)) \ .join(DBRole, and_(DBRole.id == DBRolePrivilege.role_id)) \ .filter(DBRole.id == role_id) marshal_records = marshal( privilege_query.order_by(DBPrivilege.id.desc()).paginate( current_page, page_size, error_out=False ).items, privilege_fields) results_wrapper = { 'total': privilege_query.count(), 'privileges': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields(fields.Nested(paginated_privilege_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """Get zone list.""" args = request.args current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) id = args.get('id', type=int) operation_type = args.get('operation_type', type=str) operator = args.get('operator', type=str) target_type = args.get('target_type', type=str) target_name = args.get('target_name', type=str) oplog_query = DBOperationLog.query if id is not None: oplog_query = oplog_query.filter(DBOperationLog.id == id) if operation_type is not None: oplog_query = oplog_query.filter( DBOperationLog.operation_type == operation_type) if operator is not None: oplog_query = oplog_query.filter( DBOperationLog.operator == operator) if target_type is not None: oplog_query = oplog_query.filter( DBOperationLog.target_type == target_type) if target_name is not None: oplog_query = oplog_query.filter( DBOperationLog.target_name == target_name) marshal_records = marshal( oplog_query.order_by(DBOperationLog.id.desc()).paginate( current_page, page_size, error_out=False).items, log_fields) results_wrapper = { 'total': oplog_query.count(), 'operation_logs': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_log_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """Get user list.""" args = request.args current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) id = args.get('id', type=int) email = args.get('email', type=str) username = args.get('username', type=str) chinese_name = args.get('chinese_name', type=str) cellphone = args.get('cellphone', type=str) actived = args.get('actived', type=int) user_query = DBUser.query if id is not None: user_query = user_query.filter_by(id=id) if email is not None: user_query = user_query.filter_by(email=email) if username is not None: user_query = user_query.filter_by(username=username) if chinese_name is not None: user_query = user_query.filter_by(chinese_name=chinese_name) if cellphone is not None: user_query = user_query.filter_by(cellphone=cellphone) if actived is not None: user_query = user_query.filter_by(actived=actived) marshal_records = marshal( user_query.order_by(DBUser.id.desc()).paginate( current_page, page_size, error_out=False).items, user_fields) results_wrapper = { 'total': user_query.count(), 'users': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_user_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """ 功能:获取Zone资源列表 --- security: - UserSecurity: [] tags: - Zone parameters: - name: currentPage in: query description: Zone list in current page type: integer default: 1 - name: pageSize in: query description: the number of zones per page. type: integer default: 30 - name: id in: query description: Zone id type: integer default: 1 - name: name type: string in: query description: the name of Zone default: z1.com - name: zone_group in: query type: integer description: the group current zone in. default: 1 enum: [0, 1, 2] - name: zone_type in: query type: integer description: the id of role default: master enum: ['master', 'forward only'] definitions: Zone: properties: total: type: integer description: the number of zones current_page: type: integer description: current page number zones: type: array items: $ref: "#/definitions/Zone" responses: 200: description: 请求结果 schema: properties: code: type: integer description: response code msg: type: string description: response message data: $ref: "#/definitions/Zone" examples: { "code": 100000, "data": { "total": 5, "zones": [ { "id": 4, "name": "xx1.com", "zone_group": 1, "zone_type": "master", "forwarders": "", "view_name_list": "['wqerqwer', 'vvvv111111111', 'jtest']", "can_update": true, "can_delete": true, "view_ids": [ 1, 2, 5 ] }, { "id": 3, "name": "xxx.com", "zone_group": 1, "zone_type": "forward only", "forwarders": "0.0.0.0; 0.0.0.4;", "view_name_list": "['vvvv111111111', 'wqerqwer']", "can_update": true, "can_delete": true, "view_ids": [ 2, 1 ] } ], "current_page": 1 }, "msg": "获取成功!" } """ args = request.args current_page = request.args.get('currentPage', 1, type=int) page_size = request.args.get('pageSize', 10, type=int) id = args.get('id', type=int) name = args.get('name', type=str) zone_group = args.get('zone_group', type=int) zone_type = args.get('zone_type', type=str) zone_query = DBZone.query \ .join(DBPrivilege, and_( DBZone.id == DBPrivilege.resource_id, DBPrivilege.resource_type == ResourceType.ZONE, DBPrivilege.operation == Operation.ACCESS )) \ .join(DBRolePrivilege, and_( DBPrivilege.id == DBRolePrivilege.privilege_id )) \ .join(DBRole, and_(DBRole.id == DBRolePrivilege.role_id)) \ .join(DBUserRole, and_(DBUserRole.role_id == DBRole.id)) \ .join(DBUser, and_(DBUser.id == DBUserRole.user_id)) \ .filter(DBUser.id == g.current_user.id) if id is not None: zone_query = zone_query.filter(DBZone.id == id) if name is not None: zone_query = zone_query.filter(DBZone.name.like('%' + name + '%')) if zone_group is not None: zone_query = zone_query.filter(DBZone.zone_group == zone_group) if zone_type is not None: zone_query = zone_query.filter(DBZone.zone_type == zone_type) marshal_records = marshal( zone_query.order_by(DBZone.id.desc()).paginate( current_page, page_size, error_out=False).items, zone_fields) results_wrapper = { 'total': zone_query.count(), 'zones': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_zone_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """ 功能: 获取用户列表资源 --- security: - UserSecurity: [] tags: - User parameters: - name: currentPage in: query description: the page of User type: integer default: 1 - name: pageSize in: query description: the max records of page type: integer default: 10 - name: id in: query description: User id type: integer default: 1 - name: username type: string in: query description: the username of User default: test - name: chinese_name in: query type: string description: the chinese_name of User default: 小李 - name: cellphone in: query type: string description: the cellphone of User default: 186121234 - name: email in: query type: string description: the email of User default: [email protected] - name: actived in: query type: integer description: the active status of User enum: [0, 1] default: 1 definitions: Users: properties: total: type: integer current_page: type: integer groups: type: array items: $ref: "#/definitions/User" responses: 200: description: 请求结果 schema: properties: code: type: integer msg: type: string data: $ref: "#/definitions/Users" examples: { "code": 100000, "data": { "total": 8, "users": [ { "id": 8, "email": "*****@*****.**", "username": "******", "chinese_name": "", "cellphone": "", "position": "", "location": "", "member_since": "2017-12-04 17:34:25", "last_seen": "2017-12-04 17:34:25", "roles": [] }, { "id": 7, "email": "*****@*****.**", "username": "******", "chinese_name": "", "cellphone": "1371111", "position": "", "location": "", "member_since": "2017-11-29 14:16:27", "last_seen": "2017-11-29 14:16:27", "roles": [] } ], "current_page": 1 }, "msg": "获取成功!" } """ args = request.args current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) id = args.get('id', type=int) email = args.get('email', type=str) username = args.get('username', type=str) chinese_name = args.get('chinese_name', type=str) cellphone = args.get('cellphone', type=str) actived = args.get('actived', type=int) user_query = DBUser.query if id is not None: user_query = user_query.filter_by(id=id) if email is not None: user_query = user_query.filter(DBUser.email.like('%' + email + '%')) if username is not None: user_query = user_query.filter( DBUser.username.like('%' + username + '%')) if chinese_name is not None: user_query = user_query.filter( DBUser.chinese_name.like('%' + chinese_name + '%')) if cellphone is not None: user_query = user_query.filter( DBUser.cellphone.like('%' + cellphone + '%')) if actived is not None: user_query = user_query.filter_by(actived=actived) marshal_records = marshal( user_query.order_by(DBUser.id.desc()).paginate( current_page, page_size, error_out=False).items, user_fields) results_wrapper = { 'total': user_query.count(), 'users': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_user_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """ 功能:获取日志资源列表 --- security: - UserSecurity: [] tags: - DNSOperationLog parameters: - name: currentPage in: query description: 当前是第几页 type: integer required: false default: 1 - name: pageSize in: query description: 每页显示的记录数 type: integer required: false default: 10 - name: id in: query description: 日志ID type: integer required: false - name: operation_type in: query description: 操作类型,添加/修改/删除 type: string required: false - name: operator in: query description: 操作人 type: string required: false - name: target_type in: query description: 资源类型,Server/View/Zone/Record type: string required: false - name: target_name in: query description: 资源名称 type: string required: false - name: target_id in: query description: 资源ID type: integer required: false responses: 200: description: 请求结果 schema: properties: code: type: integer description: response code msg: type: string description: response message data: type: string description: response data examples: { "code": 100000, "data": { "total": 66, "operation_logs": [ { "id": 67, "operation_time": "2017-12-04 18:22:19", "operation_type": "添加", "operator": "LIJIAJIA873", "target_type": "Record", "target_name": "xxx333", "target_id": "32", "target_detail": "id: 32\\n记录主机: xxx333\\n记录类型: A\\n记录值: 0.0.0.0\\nTTL: 600\\n线路类型: wqerqwer\\n备注: xxx111\\n创建人: None\\n创建时间: 2017-12-04 18:22:18.805320" } ], "current_page": 1 }, "msg": "获取成功!" } """ args = request.args current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) id = args.get('id', type=int) operation_type = args.get('operation_type', type=str) operator = args.get('operator', type=str) target_type = args.get('target_type', type=str) target_name = args.get('target_name', type=str) oplog_query = DBOperationLog.query if id is not None: oplog_query = oplog_query.filter(DBOperationLog.id == id) if operation_type is not None: oplog_query = oplog_query.filter( DBOperationLog.operation_type == operation_type) if operator is not None: oplog_query = oplog_query.filter( DBOperationLog.operator.like('%' + operator + '%')) if target_type is not None: oplog_query = oplog_query.filter( DBOperationLog.target_type == target_type) if target_name is not None: oplog_query = oplog_query.filter( DBOperationLog.target_name.like('%' + target_name + '%')) marshal_records = marshal( oplog_query.order_by(DBOperationLog.id.desc()).paginate( current_page, page_size, error_out=False).items, log_fields) results_wrapper = { 'total': oplog_query.count(), 'operation_logs': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_log_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """ 功能: 获取角色列表资源 --- security: - UserSecurity: [] tags: - Role parameters: - name: currentPage in: query description: the page of Role type: integer default: 1 - name: pageSize in: query description: the max records of page type: integer default: 10 - name: id in: query description: Role id type: integer default: 1 - name: name type: string in: query description: the name of Role default: Guest - name: user_id in: query type: integer description: the id of User default: 1 definitions: Roles: properties: total: type: integer current_page: type: integer roles: type: array items: $ref: "#/definitions/Role" responses: 200: description: 请求结果 schema: properties: code: type: integer msg: type: string data: $ref: "#/definitions/Roles" examples: { "code": 100000, "msg": "获取成功!", "data": { "total": 7, "roles": [ { "id": 6, "name": "zone_admin", "privileges": [ { "id": 2, "name": "ZONE_ADD", "operation": 0, "resource_type": 0, "resource_id": 0, "comment": null }, { "id": 6, "name": "ZONE#xcvwretwgvrfv3wf.com#UPDATE", "operation": 1, "resource_type": 2, "resource_id": 1, "comment": null } ] }, { "id": 2, "name": "server_admin", "privileges": [ { "id": 1, "name": "SERVER_ADD", "operation": 0, "resource_type": 0, "resource_id": 0, "comment": null }, { "id": 17, "name": "SERVER#s1#ACCESS", "operation": 0, "resource_type": 0, "resource_id": 1, "comment": null } ] } ] }, "current_page": 1 } """ args = request.args current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) user_id = args.get('user_id', type=int) id = args.get('id', type=int) name = args.get('name', type=str) role_query = DBRole.query if id is not None: role_query = role_query.filter_by(id=id) if name is not None: role_query = role_query.filter(DBRole.name.like('%'+name+'%')) if user_id is not None: role_query = role_query \ .join(DBUserRole, and_(DBUserRole.role_id == DBRole.id)) \ .join(DBUser, and_(DBUser.id == DBUserRole.user_id)) \ .filter(DBUser.id == user_id) marshal_records = marshal( role_query.order_by(DBRole.id.desc()).paginate( current_page, page_size, error_out=False).items, role_fields) results_wrapper = { 'total': role_query.count(), 'roles': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields(fields.Nested(paginated_role_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """ 功能:获取Server资源列表 --- security: - UserSecurity: [] tags: - Server parameters: - name: currentPage in: query description: Server list in current page type: integer default: 1 - name: pageSize in: query description: the number of servers per page. type: integer default: 10 - name: id in: query description: Server id type: integer default: 1 - name: host type: string in: query description: server host name default: s1 - name: ip in: query description: the ip address of the server type: integer default: 1.1.1.1 - name: env type: string in: query description: the env group of the server default: prod enum: ['qa', 'smk', 'prod'] - name: dns_server_type type: string in: query description: the env group of the server default: master enum: ['master', 'slave'] definitions: Server: properties: total: type: integer description: the number of servers current_page: type: integer description: current page number servers: type: array items: $ref: "#/definitions/Server" responses: 200: description: 请求结果 schema: properties: code: type: integer description: response code msg: type: string description: response message data: $ref: "#/definitions/Server" examples: { "code": 100000, "data": { "total": 4, "servers": [ { "id": 2, "host": "s2", "ip": "0.0.0.1", "env": "anhouse", "dns_server_type": "master", "zb_process_itemid": "222", "zb_port_itemid": "222", "zb_resolve_itemid": "222", "zb_resolve_rate_itemid": "189254", "can_update": true, "can_delete": true }, { "id": 1, "host": "s1", "ip": "0.0.0.0", "env": "dev", "dns_server_type": "master", "zb_process_itemid": "111", "zb_port_itemid": "111", "zb_resolve_itemid": "111", "zb_resolve_rate_itemid": "189243", "can_update": true, "can_delete": true } ], "current_page": 1 }, "msg": "获取成功!" } """ args = request.args current_page = request.args.get('currentPage', 1, type=int) page_size = request.args.get('pageSize', 10, type=int) id = args.get('id', type=int) host = args.get('host', type=str) ip = args.get('ip', type=str) env = args.get('env', type=str) dns_server_type = args.get('dns_server_type', type=str) server_query = db.session.query(DBDNSServer) \ .join(DBPrivilege, and_( DBDNSServer.id == DBPrivilege.resource_id, DBPrivilege.resource_type == ResourceType.SERVER, DBPrivilege.operation == Operation.ACCESS )) \ .join(DBRolePrivilege, and_( DBPrivilege.id == DBRolePrivilege.privilege_id )) \ .join(DBRole, and_(DBRole.id == DBRolePrivilege.role_id)) \ .join(DBUserRole, and_(DBUserRole.role_id == DBRole.id)) \ .join(DBUser, and_(DBUser.id == DBUserRole.user_id)) \ .filter(DBUser.id == g.current_user.id) if id is not None: server_query = server_query.filter(DBDNSServer.id == id) if host is not None: server_query = server_query.filter( DBDNSServer.host.like('%' + host + '%')) if ip is not None: server_query = server_query.filter( DBDNSServer.ip.like('%' + ip + '%')) if env is not None: server_query = server_query.filter( DBDNSServer.env.like('%' + env + '%')) if dns_server_type is not None: server_query = server_query.filter( DBDNSServer.dns_server_type == dns_server_type) marshal_records = marshal( server_query.order_by(DBDNSServer.id.desc()).paginate( current_page, page_size, error_out=False).items, server_fields) results_wrapper = { 'total': server_query.count(), 'servers': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_server_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """ 功能: 获取权限列表资源 --- security: - UserSecurity: [] tags: - Privilege parameters: - name: currentPage in: query description: the page of Privilege type: integer default: 1 - name: pageSize in: query description: the max records of page type: integer default: 10 - name: id in: query description: Privilege id type: integer default: 1 - name: name type: string in: query description: the name of Privilege default: PRIVILEGE_MODIFY - name: operation in: query type: integer description: the value of Privilege default: 1 enum: [0, 1, 2] - name: role_id in: query type: integer description: the id of role default: 1 - name: resource_type in: query type: integer description: the id of resource_type default: 1 enum: [0, 1, 2, 3] - name: resource_id in: query type: integer description: the id of resource default: 1 definitions: Privileges: properties: total: type: integer description: the count of records current_page: type: integer description: the current page privileges: type: array items: $ref: "#/definitions/Privilege" responses: 200: description: 请求结果 schema: properties: code: type: integer description: response code msg: type: string description: response message data: $ref: "#/definitions/Privileges" examples: { "code": 100000, "data": { "total": 37, "privileges": [ { "id": 58, "name": "VIEW#v555#DELETE", "operation": 2, "resource_type": 1, "resource_id": 6, "comment": null }, { "id": 57, "name": "VIEW#v555#UPDATE", "operation": 1, "resource_type": 1, "resource_id": 6, "comment": null } ], "current_page": 1 }, "msg": "获取成功!" } """ args = request.args current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) role_id = args.get('role_id', type=int) id = args.get('id', type=int) name = args.get('name', type=str) operation = args.get('operation', type=int) resource_type = args.get('resource_type', type=int) resource_id = args.get('resource_id', type=int) privilege_query = DBPrivilege.query if id is not None: privilege_query = privilege_query.filter_by(id=id) if name is not None: privilege_query = privilege_query.filter( DBPrivilege.name.like('%' + name + '%')) if operation is not None: privilege_query = privilege_query.filter_by(operation=operation) if resource_type is not None: privilege_query = privilege_query.filter_by( resource_type=resource_type) if resource_id is not None: privilege_query = privilege_query.filter_by( resource_id=resource_id) if role_id is not None: privilege_query = privilege_query.join( DBRolePrivilege, and_(DBRolePrivilege.privilege_id == DBPrivilege.id)) \ .join(DBRole, and_(DBRole.id == DBRolePrivilege.role_id)) \ .filter(DBRole.id == role_id) marshal_records = marshal( privilege_query.order_by(DBPrivilege.id.desc()).paginate( current_page, page_size, error_out=False).items, privilege_fields) results_wrapper = { 'total': privilege_query.count(), 'privileges': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_privilege_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """ 功能:获取View资源列表 --- security: - UserSecurity: [] tags: - View parameters: - name: currentPage in: query description: View list in current page type: integer default: 1 - name: pageSize in: query description: the number of views per page. type: integer default: 10 - name: id in: query description: View id type: integer default: 1 - name: name type: string in: query description: the name of View default: z1.com - name: zone_id in: query description: the id of the zone which was related to views type: integer default: 1 definitions: View: properties: total: type: integer description: the number of views current_page: type: integer description: current page number views: type: array items: $ref: "#/definitions/View" responses: 200: description: 请求结果 schema: properties: code: type: integer description: response code msg: type: string description: response message data: $ref: "#/definitions/View" examples: { "code": 100000, "data": { "total": 4, "views": [ { "id": 2, "name": "vvvv111111111", "acl": "0.0.0.0", "can_update": true, "can_delete": true }, { "id": 1, "name": "wqerqwer", "acl": "0.0.0.0\\n1.1.1.1", "can_update": true, "can_delete": true } ], "current_page": 1 }, "msg": "获取成功!" } """ args = request.args zone_id = args.get('zone_id', type=int) current_page = request.args.get('currentPage', 1, type=int) page_size = request.args.get('pageSize', 10, type=int) id = args.get('id', type=int) name = args.get('name', type=str) view_query = DBView.query \ .join(DBPrivilege, and_( DBView.id == DBPrivilege.resource_id, DBPrivilege.resource_type == ResourceType.VIEW, DBPrivilege.operation == Operation.ACCESS )) \ .join(DBRolePrivilege, and_( DBPrivilege.id == DBRolePrivilege.privilege_id )) \ .join(DBRole, and_(DBRole.id == DBRolePrivilege.role_id)) \ .join(DBUserRole, and_(DBUserRole.role_id == DBRole.id)) \ .join(DBUser, and_(DBUser.id == DBUserRole.user_id)) \ .filter(DBUser.id == g.current_user.id) if id is not None: view_query = view_query.filter_by(id=id) if name is not None: view_query = view_query.filter(DBView.name.like('%' + name + '%')) if zone_id is not None: current_zone = DBZone.query.get(zone_id) if current_zone.zone_group == 0: return get_response(RequestCode.SUCCESS, '获取成功!', DNSPod.getDNSPodLines(current_zone.name)) view_query = view_query.join( DBViewZone, and_(DBViewZone.view_id == DBView.id)) \ .join(DBZone, and_(DBZone.id == DBViewZone.zone_id)) \ .filter(DBZone.id == int(zone_id)) marshal_records = marshal( view_query.order_by(DBView.id.desc()).paginate( current_page, page_size, error_out=False).items, view_fields) results_wrapper = { 'total': view_query.count(), 'views': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields( fields.Nested(paginated_view_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)
def get(self): """ 功能:获取Record资源列表 --- security: - UserSecurity: [] tags: - Record parameters: - name: currentPage in: query description: Record list in current page type: integer default: 1 - name: pageSize in: query description: the number of records per page. type: integer default: 10 - name: zone_id in: query description: Zone id the record related to type: integer default: 1 - name: id in: query description: Record id type: integer default: 1 - name: host type: string in: query description: record host name - name: record_type type: string in: query description: record type default: A enum: ['A', 'CNAME', 'PTR', 'NS'] - name: value type: string in: query description: ip address format default: 1.1.1.1 - name: ttl type: integer in: query description: ttl default: 600 enum: [600, 1800, 3600] - name: view_name type: string in: query description: view name definitions: Record: properties: total: type: integer description: the number of records current_page: type: integer description: current page number records: type: array items: $ref: "#/definitions/Record" responses: 200: description: 请求结果 schema: properties: code: type: integer description: response code msg: type: string description: response message data: $ref: "#/definitions/Record" examples: { "code": 100000, "data": { "total": 9, "records": [ { "id": 16, "host": "xxx333", "record_type": "A", "ttl": "600", "value": "0.0.0.0", "view_name": "jtest", "comment": "xxx111", "zone_id": 4, "can_update": true, "can_delete": true }, { "id": 15, "host": "xxx333", "record_type": "A", "ttl": "600", "value": "0.0.0.0", "view_name": "vvvv111111111", "comment": "xxx111", "zone_id": 4, "can_update": true, "can_delete": true } ], "current_page": 1 }, "msg": "获取成功!" } """ args = request.args zone_id = args.get('zone_id') if zone_id: if not g.current_user.is_admin(): current_zone = DBZone.query.get(int(zone_id)) if not current_zone.can_access: abort(403) else: if not g.current_user.is_admin(): abort(403) current_page = args.get('currentPage', 1, type=int) page_size = args.get('pageSize', 10, type=int) id = args.get('id', type=int) host = args.get('host', type=str) record_type = args.get('record_type', type=str) ttl = args.get('ttl', type=str) value = args.get('value', type=str) view_name = args.get('view_name', type=str) record_query = DBRecord.query if id is not None: record_query = record_query.filter(DBRecord.id==id) if host is not None: record_query = record_query.filter(DBRecord.host.like('%'+host+'%')) if record_type is not None: record_query = record_query.filter(DBRecord.record_type==record_type) if ttl is not None: record_query = record_query.filter(DBRecord.ttl==ttl) if value is not None: record_query = record_query.filter(DBRecord.value.like('%'+value+'%')) if view_name is not None: record_query = record_query.filter(DBRecord.view_name==view_name) if zone_id is not None: record_query = record_query.filter(DBRecord.zone_id==int(zone_id)) marshal_records = marshal( record_query.order_by(DBRecord.id.desc()) .paginate(current_page, page_size, error_out=False).items, record_fields) results_wrapper = { 'total': record_query.count(), 'records': marshal_records, 'current_page': current_page } response_wrapper_fields = get_response_wrapper_fields(fields.Nested(paginated_record_fields)) response_wrapper = get_response(RequestCode.SUCCESS, '获取成功!', results_wrapper) return marshal(response_wrapper, response_wrapper_fields)