def get_plans_list(request): params = request.GET page_rows = params.get('rows', '10') page_index = params.get('page', '1') paginator = Paginator(object_list=search_plan_by_keyword(request), per_page=page_rows) all_rows = paginator.count page_num = paginator.num_pages get_pagex = paginator.page(page_index).object_list ret = { 'a': 'list', 'records': all_rows, 'total': page_num, 'page': page_index, 'rows': [], 'r': 0 } for plan in get_pagex: ret['rows'].append({ 'cell': get_one_plan_abstract_info(plan.id), 'id': plan.id }) functions.sort_gird_rows(request, ret) return HttpResponse(json.dumps(ret))
def getPlanList(request): paramsQD = request.GET perPage = paramsQD.get('rows', '10') # 设置每页条数 targPage = paramsQD.get('page', '1') # 返回第几页 search_key = request.GET.get('s_key', None) allPlans = ArchiveScheduleViews().get(request=request).data rowList = list() for planAttr in allPlans: next_run_date = None last_run_date = None if planAttr['last_run_date']: last_run_date = planAttr['last_run_date'].replace( 'T', ' ').split('.')[0] if planAttr['next_run_date']: next_run_date = planAttr['next_run_date'].replace( 'T', ' ').split('.')[0] one_info = { 'id': planAttr['id'], 'cell': [ planAttr['id'], planAttr['name'], planAttr['host']['name'], '启用' if planAttr['enabled'] else '禁用', '整机导出', last_run_date, next_run_date ] } backup_host_ip_str = get_host_ip_str( planAttr['host']['id']) if search_key else '' is_need = serversmgr.filter_hosts(search_key, one_info['cell'][1], one_info['cell'][2], backup_host_ip_str) if is_need: rowList.append(one_info) else: pass rowList.sort(key=lambda x: x['id']) paginator = Paginator(object_list=rowList, per_page=perPage) plansNum = paginator.count pagesNum = paginator.num_pages getPlans = paginator.page(targPage).object_list retInfo = { 'r': 0, 'a': 'list', 'page': targPage, 'total': pagesNum, 'records': plansNum, 'rows': getPlans } functions.sort_gird_rows(request, retInfo) jsonStr = json.dumps(retInfo, ensure_ascii=False) return HttpResponse(jsonStr)
def lists(request): paramsQD = request.GET perPage = paramsQD.get('rows', '10') # 设置每页条数 targPage = paramsQD.get('page', '1') # 返回第几页 search_key = request.GET.get('s_key', None) rsp = DeployTemplateCURD().get(request) if status.is_success(rsp.status_code): rowList = list() for row in rsp.data: # '序号', '模板名称', '创建时间', '状态', '描述' one_info = { 'id': row['id'], 'cell': [row['id'], row['name'], row['create_datetime'], row['desc']] } if search_key: is_need = serversmgr.filter_hosts(search_key, one_info['cell'][1], one_info['cell'][2], one_info['cell'][3]) else: is_need = True if is_need: rowList.append(one_info) paginator = Paginator(object_list=rowList, per_page=perPage) plansNum = paginator.count pagesNum = paginator.num_pages getPlans = paginator.page(targPage).object_list retInfo = { 'r': 0, 'a': 'list', 'page': targPage, 'total': pagesNum, 'records': plansNum, 'rows': getPlans } functions.sort_gird_rows(request, retInfo) jsonStr = json.dumps(retInfo, ensure_ascii=False) return HttpResponse(jsonStr) else: return HttpResponse( json.dumps({ 'r': 1, 'e': rsp.data if rsp.data else '内部错误64' }))
def list_host(request): paramsQD = request.GET perPage = paramsQD.get('rows', '10') # 设置每页条数 targPage = paramsQD.get('page', '1') # 返回第几页 search_key = request.GET.get('s_key', None) allPlans = VirtualHostSession().get(request).data rowList = list() for planAttr in allPlans: center = VirtualCenterConnection.objects.get(id=planAttr['connection']) one_info = { 'id': planAttr['id'], 'cell': [ planAttr['id'], planAttr['name'], '启用' if planAttr['enable'] else '禁用', center.address ] } is_need = serversmgr.filter_hosts(search_key, one_info['cell'][1], one_info['cell'][3]) if is_need: rowList.append(one_info) else: pass rowList.sort(key=lambda x: x['id']) paginator = Paginator(object_list=rowList, per_page=perPage) plansNum = paginator.count pagesNum = paginator.num_pages getPlans = paginator.page(targPage).object_list retInfo = { 'r': 0, 'a': 'list', 'page': targPage, 'total': pagesNum, 'records': plansNum, 'rows': getPlans } functions.sort_gird_rows(request, retInfo) jsonStr = json.dumps(retInfo, ensure_ascii=False) return HttpResponse(jsonStr)
def query_all_tunnels(request): params = request.GET page_rows = params.get('rows', '10') page_index = params.get('page', '1') all_tunnel = Tunnel.objects.all() if request.user.is_superuser: all_tunnel = [set_tunnel_user(tunnel) for tunnel in all_tunnel] else: all_tunnel = TunnelManage.filter_out_invalid_tunnel(all_tunnel) if request.user.is_superuser: objects = all_tunnel else: objects = list( filter(lambda tunnel: tunnel.user == request.user, all_tunnel)) paginator = Paginator(object_list=objects, per_page=page_rows) all_rows = paginator.count page_num = paginator.num_pages get_pagex = paginator.page(page_index).object_list ret = { 'a': 'list', 'records': all_rows, 'total': page_num, 'page': page_index, 'rows': [], 'r': 0 } for obj in get_pagex: ret['rows'].append({ 'cell': [ obj.id, obj.host_ip, obj.host_port, obj.user.username, get_del_btn(obj) ], 'id': obj.id }) functions.sort_gird_rows(request, ret) return HttpResponse(json.dumps(ret))
def getImportBackupDataList(request): paramsQD = request.GET perPage = paramsQD.get('rows', '10') # 设置每页条数 targPage = paramsQD.get('page', '1') # 返回第几页 search_key = request.GET.get('s_key', None) allPlans = ImportTaskExecute().get(request=request).data rowList = list() for planAttr in allPlans: host_snapshot_id = planAttr['host_snapshot'] host_snapshot = HostSnapshot.objects.get(id=host_snapshot_id) host_display_name = host_snapshot.host.display_name point_name = '整机备份{}'.format( host_snapshot.start_datetime.strftime( xdatetime.FORMAT_WITH_USER_SECOND)) status = planAttr['status'] one_info = { 'id': planAttr['id'], 'cell': [planAttr['id'], host_display_name, point_name, status] } if not host_snapshot.deleted: rowList.append(one_info) rowList.sort(key=lambda x: x['id']) paginator = Paginator(object_list=rowList, per_page=perPage) plansNum = paginator.count pagesNum = paginator.num_pages getPlans = paginator.page(targPage).object_list retInfo = { 'r': 0, 'a': 'list', 'page': targPage, 'total': pagesNum, 'records': plansNum, 'rows': getPlans } functions.sort_gird_rows(request, retInfo) jsonStr = json.dumps(retInfo, ensure_ascii=False) return HttpResponse(jsonStr)
def listRemoteBackupSchedule(self, request, api_request): rs = RemoteBackupSchedule.objects.filter(deleted=False, host__user_id=request.user.id) search_key = request.GET.get('s_key', None) if search_key: rs = self.filter_remote_plans_by_key(rs, search_key) sidx = api_request.get('sidx', None) page = api_request['page'] if sidx is not None: rs = rs.order_by(sidx) paginator = Paginator(object_list=rs, per_page=api_request['rows']) records = paginator.count total = paginator.num_pages page = total if page > total else page object_list = paginator.page(page).object_list rslist = list() for object in object_list: one = {'cell': list(), 'id': object.id} created = object.created.strftime( xdatetime.FORMAT_WITH_MICROSECOND) if object.last_run_date: last_run_date = object.last_run_date.strftime( xdatetime.FORMAT_WITH_SECOND) else: last_run_date = '--' next_run_date = self._get_next_run_date(object) one['cell'] = [ object.id, object.name, object.host.display_name, created, object.ext_config, object.enabled, last_run_date, next_run_date ] rslist.append(one) result = { 'r': 0, 'a': 'list', 'page': page, 'total': total, 'records': records, 'rows': rslist } functions.sort_gird_rows(request, result) return json.dumps(result, ensure_ascii=False)
def getDriveList(request): paramsQD = request.GET perPage = paramsQD.get('rows', '10') # 设置每页条数 targPage = paramsQD.get('page', '1') # 返回第几页 search_key = request.GET.get('s_key', None) with open(DRIVE_FILE, 'r') as f: data = json.load(f) drive_info = {} for index, i in enumerate(data['sys']): drive_info[index + 1] = data['sys'][index] rows = [] if search_key is None: for key, value in drive_info.items(): row_info = {'id': key, 'cell': [key, value]} rows.append(row_info) else: for key, value in drive_info.items(): if search_key in value: row_info = {'id': key, 'cell': [key, value]} rows.append(row_info) paginator = Paginator(object_list=rows, per_page=perPage) plansNum = paginator.count pagesNum = paginator.num_pages getPlans = paginator.page(targPage).object_list retInfo = { 'r': 0, 'a': 'list', 'page': targPage, 'total': pagesNum, 'records': plansNum, 'rows': getPlans } functions.sort_gird_rows(request, retInfo) jsonStr = json.dumps(retInfo, ensure_ascii=False) return HttpResponse(jsonStr)
def getPlanList(request): paramsQD = request.GET perPage = paramsQD.get('rows', '10') # 设置每页条数 targPage = paramsQD.get('page', '1') # 返回第几页 search_key = request.GET.get('s_key', None) bgroup = paramsQD.get('group', '') backup_source_type = int( request.GET.get('backup_source_type', BackupTaskSchedule.BACKUP_DISKS)) schedules = BackupTaskSchedule.objects.filter( deleted=False, backup_source_type=backup_source_type).select_related( 'host').order_by('id') if not request.user.is_superuser: schedules = schedules.filter(host__user=request.user) rowList = list() gss = GroupBackupTaskSchedule.objects.filter(user_id=request.user.id) gs_schedule_ids = set() for gs in gss: for sc in gs.schedules.all(): gs_schedule_ids.add(sc.id) for schedule in schedules: if bgroup == 'group': if schedule.id in gs_schedule_ids: # 如果计划在组计划里 就不显示 continue next_run_date = None last_run_date = None if schedule.last_run_date: last_run_date = schedule.last_run_date.strftime( xdatetime.FORMAT_WITH_USER_SECOND) if schedule.next_run_date: next_run_date = schedule.next_run_date.strftime( xdatetime.FORMAT_WITH_USER_SECOND) one_info = { 'id': schedule.id, 'cell': [ schedule.id, schedule.name, schedule.host.name, '启用' if schedule.enabled else '禁用', '整机备份', last_run_date, next_run_date ] } backup_host_ip_str = get_host_ip_str( schedule.host) if search_key else '' is_need = serversmgr.filter_hosts(search_key, one_info['cell'][1], one_info['cell'][2], backup_host_ip_str) if is_need: rowList.append(one_info) else: pass if bgroup == 'group': for schedule in gss: schedule_id = 'group_{}'.format(schedule.id) host_name = '{}台客户端'.format(schedule.schedules.count()) one_info = { 'id': schedule_id, 'cell': [ schedule_id, schedule.name, host_name, '启用' if schedule.enabled else '禁用', '整机备份', '-', '-' ] } is_need = serversmgr.filter_hosts(search_key, schedule.name) if is_need: rowList.append(one_info) paginator = Paginator(object_list=rowList, per_page=perPage) plansNum = paginator.count pagesNum = paginator.num_pages getPlans = paginator.page(targPage).object_list retInfo = { 'r': 0, 'a': 'list', 'page': targPage, 'total': pagesNum, 'records': plansNum, 'rows': getPlans } functions.sort_gird_rows(request, retInfo) jsonStr = json.dumps(retInfo, ensure_ascii=False) return HttpResponse(jsonStr)
def getclientlist(request): # 默认值 page = 1 rows = 30 if 'page' in request.GET: page = int(request.GET['page']) if 'rows' in request.GET: rows = int(request.GET['rows']) sidx = request.GET.get('sidx', None) host_ids = request.GET.get('ids', None) sord = request.GET.get('sord', 'asc') if sidx not in ('display_name', 'last_ip', 'network_transmission_type', 'user',): sidx = None if sidx and sord == 'desc': sidx = '-{}'.format(sidx) host_id = None user_id = None group_id = request.GET.get('group_id') search_key = request.GET.get('s_key', '') search_is_use_name = request.GET.get('user_name', '') search_is_online = request.GET.get('online', '') # 'online', 'no-online' search_is_encrypt = request.GET.get('encrypt', '') # 'encrypt', 'no-encrypt' search_online_time = request.GET.get('online_time', '') if 'hostid' in request.GET and request.GET['hostid'] != 'null': host_id = request.GET['hostid'] if 'usedid' in request.GET and request.GET['usedid'] != 'null': user_id = request.GET['usedid'] hosts = Host.objects.select_related('user', 'vm_session', 'vm_session__connection').all() if request.user.is_superuser: if host_id: # 查询指定的host hosts = hosts.filter(id=host_id) elif user_id: # 从属于user的host hosts = hosts.filter(user_id=user_id) else: # 所有的host pass else: hosts = hosts.filter(user=request.user) if group_id: if group_id == '-1': # 未分组的客户端 hosts = hosts.filter(groups=None) else: hosts = hosts.filter(groups__id=group_id) else: pass if host_ids: hosts = hosts.filter(id__in=host_ids.split(',')) if sidx is not None: hosts = hosts.order_by(sidx) # 过滤掉 验证的主机 hosts = list(filter(lambda x: not x.is_verified, hosts)) # 过滤掉 被删除的主机 hosts = list(filter(lambda x: not x.is_deleted, hosts)) rowList = list() ident2groups = defaultdict(set) for group in HostGroup.objects.all(): for h in group.hosts.all(): ident2groups[h.ident].add(group.name) for host in hosts: cell_info = get_host_info(request, host, ident2groups.get(host.ident, list())) kwd_status = filter_hosts(search_key, cell_info[1], cell_info[3]) # 1.关键词 if search_is_use_name: # 2.所属用户 username = host.user.username if host.user else '未分配' use_status = search_is_use_name in username else: use_status = True if search_is_online: # 3.在线状态 if search_is_online == 'online': online_status = '在线' in cell_info[5] elif search_is_online == 'remote-host': online_status = '远程主机' in cell_info[5] else: online_status = '离线' in cell_info[5] else: online_status = True if search_is_encrypt: # 4.加密与否 if search_is_encrypt == 'encrypt': encrypt_status = '加密' == cell_info[4] else: encrypt_status = '不加密' == cell_info[4] else: encrypt_status = True if search_online_time: # 5.在线时间 if request.user.is_superuser: time_status = search_online_time in cell_info[6] else: time_status = search_online_time in cell_info[7] else: time_status = True if all([kwd_status, use_status, online_status, encrypt_status, time_status]): detailDict = {'id': host.id, 'cell': cell_info} rowList.append(detailDict) else: pass paginator = Paginator(rowList, rows) totalPlan = paginator.count totalPage = paginator.num_pages page = totalPage if page > totalPage else page currentObjs = paginator.page(page).object_list retInfo = {'r': 0, 'a': 'list', 'page': str(page), 'total': totalPage, 'records': totalPlan, 'rows': currentObjs} functions.sort_gird_rows(request, retInfo) jsonStr = json.dumps(retInfo, ensure_ascii=False) return HttpResponse(jsonStr)