예제 #1
0
 def filter_remote_plans_by_key(plans, search_key):
     valid_plans_id = []
     for plan in plans:
         is_need = serversmgr.filter_hosts(search_key, plan.name,
                                           plan.host.name)
         if is_need:
             valid_plans_id.append(plan.id)
     return plans.filter(id__in=valid_plans_id)
예제 #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)
예제 #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'
            }))
예제 #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)
예제 #5
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)