Example #1
0
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))
Example #2
0
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)
Example #3
0
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'
            }))
Example #4
0
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)
Example #5
0
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))
Example #6
0
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)
Example #7
0
 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)
Example #8
0
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)
Example #9
0
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)
Example #10
0
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)