Beispiel #1
0
def export_software_information(platform, release):
    smu_loader = SMUInfoLoader(platform, release)
    if not smu_loader.is_valid:
        return jsonify({'status': 'Failed'})

    export_format = request.args.get('export_format')
    export_layout = request.args.get('export_layout')
    export_filter = request.args.get('filter')

    if export_filter == 'Optimal':
        smu_list = smu_loader.get_optimal_smu_list()
        sp_list = smu_loader.get_optimal_sp_list()
    else:
        smu_list = smu_loader.get_smu_list()
        sp_list = smu_loader.get_sp_list()

    if export_format == ExportInformationFormat.HTML:
        if export_layout == ExportSoftwareInformationLayout.CONCISE:
            writer = ExportSoftwareInfoHTMLConciseWriter(user=current_user, smu_loader=smu_loader,
                                                         smu_list=smu_list, sp_list=sp_list)
        else:
            writer = ExportSoftwareInfoHTMLDefaultWriter(user=current_user, smu_loader=smu_loader,
                                                         smu_list=smu_list, sp_list=sp_list)
    else:
        if export_layout == ExportSoftwareInformationLayout.CONCISE:
            writer = ExportSoftwareInfoExcelConciseWriter(user=current_user, smu_loader=smu_loader,
                                                          smu_list=smu_list, sp_list=sp_list)
        else:
            writer = ExportSoftwareInfoExcelDefaultWriter(user=current_user, smu_loader=smu_loader,
                                                          smu_list=smu_list, sp_list=sp_list)

    return send_file(writer.write_report(), as_attachment=True)
Beispiel #2
0
def api_get_smu_list(platform, release):
    smu_loader = SMUInfoLoader(platform, release, from_cco=False)
    if not smu_loader.is_valid:
        return jsonify(**{'data': []})

    hostname = request.args.get('hostname')
    hide_installed_packages = request.args.get('hide_installed_packages')

    if request.args.get('filter') == 'Optimal':
        return get_smu_or_sp_list(hostname, hide_installed_packages,
                                  smu_loader.get_optimal_smu_list(), smu_loader.file_suffix)
    else:
        return get_smu_or_sp_list(hostname, hide_installed_packages,
                                  smu_loader.get_smu_list(), smu_loader.file_suffix)
Beispiel #3
0
def api_get_smu_list(platform, release):
    smu_loader = SMUInfoLoader(platform, release, from_cco=False)
    if not smu_loader.is_valid:
        return jsonify(**{'data': []})

    hostname = request.args.get('hostname')
    hide_installed_packages = request.args.get('hide_installed_packages')

    if request.args.get('filter') == 'Optimal':
        return get_smu_or_sp_list(hostname, hide_installed_packages,
                                  smu_loader.get_optimal_smu_list(),
                                  smu_loader.file_suffix)
    else:
        return get_smu_or_sp_list(hostname, hide_installed_packages,
                                  smu_loader.get_smu_list(),
                                  smu_loader.file_suffix)
Beispiel #4
0
def api_get_cco_software(request):
    """
    http://localhost:5000/api/v1/cco/software?platform=asr9k_px&release=5.3.3
    """
    validate_url_parameters(request, ['platform', 'release', 'date'])

    platform = request.args.get('platform')
    release = request.args.get('release')
    date = request.args.get('date')

    if date:
        date = datetime.datetime.strptime(date, "%m-%d-%Y")
    else:
        date = datetime.datetime.strptime('01-01-2000', "%m-%d-%Y")

    optimal = request.args.get('optimal')

    rows = []
    smu_loader = SMUInfoLoader(platform, release)

    if smu_loader.is_valid:
        if optimal and optimal == 'false':
            smu_list = smu_loader.get_smu_list()
            sp_list = smu_loader.get_sp_list()
        else:
            smu_list = smu_loader.get_optimal_smu_list()
            sp_list = smu_loader.get_optimal_sp_list()

        for smu_info in smu_list:
            if datetime.datetime.strptime(smu_info.posted_date.split()[0],
                                          "%m/%d/%Y") >= date:
                rows.append(get_smu_info(smu_info))

        for sp_info in sp_list:
            if datetime.datetime.strptime(sp_info.posted_date.split()[0],
                                          "%m/%d/%Y") >= date:
                rows.append(get_smu_info(sp_info))

    if rows:
        return jsonify(**{RESPONSE_ENVELOPE: {'software_list': rows}})

    return failed_response(
        ('Unable to get software information for platform {} ' +
         'and release {}').format(platform, release))
Beispiel #5
0
def get_optimal_smus_since(platform, release):
    date = request.args.get("date")
    date = datetime.datetime.strptime(date, "%m-%d-%Y")

    try:
        smu_loader = SMUInfoLoader(platform, release)
    except:
        return ("Page does not exist; check platform and release", 404)

    rows = []
    for smu_info in smu_loader.get_optimal_smu_list():
        if datetime.datetime.strptime(smu_info.posted_date.split()[0], "%m/%d/%Y") >= date:
            rows = rows + get_smu_info(smu_info.id, platform, release)

    # Get the posted_date of each dictionary, split it at the first space so you get mm/dd/yyyy.
    # Convert that string to a datetime, then sort the list of dictionaries by the posted_dates.
    rows.sort(key=lambda k: datetime.datetime.strptime(k["posted_date"].split()[0], "%m/%d/%Y"), reverse=True)

    return jsonify(**{"data": rows})
Beispiel #6
0
def export_software_information(platform, release):
    smu_loader = SMUInfoLoader(platform, release)
    if not smu_loader.is_valid:
        return jsonify({'status': 'Failed'})

    export_format = request.args.get('export_format')
    export_layout = request.args.get('export_layout')
    export_filter = request.args.get('filter')

    if export_filter == 'Optimal':
        smu_list = smu_loader.get_optimal_smu_list()
        sp_list = smu_loader.get_optimal_sp_list()
    else:
        smu_list = smu_loader.get_smu_list()
        sp_list = smu_loader.get_sp_list()

    if export_format == ExportInformationFormat.HTML:
        if export_layout == ExportSoftwareInformationLayout.CONCISE:
            writer = ExportSoftwareInfoHTMLConciseWriter(user=current_user,
                                                         smu_loader=smu_loader,
                                                         smu_list=smu_list,
                                                         sp_list=sp_list)
        else:
            writer = ExportSoftwareInfoHTMLDefaultWriter(user=current_user,
                                                         smu_loader=smu_loader,
                                                         smu_list=smu_list,
                                                         sp_list=sp_list)
    else:
        if export_layout == ExportSoftwareInformationLayout.CONCISE:
            writer = ExportSoftwareInfoExcelConciseWriter(
                user=current_user,
                smu_loader=smu_loader,
                smu_list=smu_list,
                sp_list=sp_list)
        else:
            writer = ExportSoftwareInfoExcelDefaultWriter(
                user=current_user,
                smu_loader=smu_loader,
                smu_list=smu_list,
                sp_list=sp_list)

    return send_file(writer.write_report(), as_attachment=True)
Beispiel #7
0
def api_get_cco_software(request):
    """
    http://localhost:5000/api/v1/cco/software?platform=asr9k_px&release=5.3.3
    """
    validate_url_parameters(request, ['platform', 'release', 'date'])

    platform = request.args.get('platform')
    release = request.args.get('release')
    date = request.args.get('date')

    if date:
        date = datetime.datetime.strptime(date, "%m-%d-%Y")
    else:
        date = datetime.datetime.strptime('01-01-2000', "%m-%d-%Y")

    optimal = request.args.get('optimal')

    rows = []
    smu_loader = SMUInfoLoader(platform, release)

    if smu_loader.is_valid:
        if optimal and optimal == 'false':
            smu_list = smu_loader.get_smu_list()
            sp_list = smu_loader.get_sp_list()
        else:
            smu_list = smu_loader.get_optimal_smu_list()
            sp_list = smu_loader.get_optimal_sp_list()

        for smu_info in smu_list:
            if datetime.datetime.strptime(smu_info.posted_date.split()[0], "%m/%d/%Y") >= date:
                rows.append(get_smu_info(smu_info))

        for sp_info in sp_list:
            if datetime.datetime.strptime(sp_info.posted_date.split()[0], "%m/%d/%Y") >= date:
                rows.append(get_smu_info(sp_info))

    if rows:
        return jsonify(**{RESPONSE_ENVELOPE: {'software_list': rows}})

    return failed_response(('Unable to get software information for platform {} ' +
                            'and release {}').format(platform, release))
Beispiel #8
0
def get_optimal_smus_since(platform, release):
    date = request.args.get('date')
    date = datetime.datetime.strptime(date, "%m-%d-%Y")

    try:
        smu_loader = SMUInfoLoader(platform, release)
    except:
        return ('Page does not exist; check platform and release', 404)

    rows = []
    for smu_info in smu_loader.get_optimal_smu_list():
        if datetime.datetime.strptime(smu_info.posted_date.split()[0],
                                      "%m/%d/%Y") >= date:
            rows = rows + get_smu_info(smu_info.id, platform, release)

    # Get the posted_date of each dictionary, split it at the first space so you get mm/dd/yyyy.
    # Convert that string to a datetime, then sort the list of dictionaries by the posted_dates.
    rows.sort(key=lambda k: datetime.datetime.strptime(
        k['posted_date'].split()[0], '%m/%d/%Y'),
              reverse=True)

    return jsonify(**{'data': rows})