Пример #1
0
    def _rebuild_index():
        if not file_exists(get_taric_index_file()) or nocheck:
            logger.info("*** Rebuilding file index... ***")
            all_deltas = []

            files = get_file_list(None)
            logger.info("%s", files)
            for file in files:
                # build entry for file just uploaded
                # TODO (possibly) Add Metadata generation -> then could have api /taricfilemd/...
                # TODO - combine with individual update_index..
                f = file["Key"]
                f = f[f.rindex("/") + 1:]  # remove folder prefix
                logger.info("Found file %s", f)

                if f.startswith("TEMP_"):
                    logger.info("Removing temporary file %s", f)
                    seq = f[5:
                            -4]  # remove TEMP_ file prefix and .xml extension
                    remove_temp_taric_file(seq)
                else:
                    if is_valid_seq(f[:-4]):  # ignore non taric files
                        seq = f[:-4]  # remove .xml extension
                        all_deltas.append(create_index_entry(seq))

            logger.debug("%s delta files listed after update",
                         str(len(all_deltas)))

            # persist updated index
            all_deltass = json.dumps(all_deltas)
            write_file(get_taric_index_file(), all_deltass)
            logger.info("Index rebuild complete")
Пример #2
0
def update_index(seq):
    all_deltas = json.loads(read_file(get_taric_index_file()))
    logger.debug("%s delta files listed in %s", str(len(all_deltas)),
                 get_taric_index_file())

    # build entry for file just uploaded
    # TODO (possibly) Add Metadata file generation -> then could have api /taricfilesmd/...

    # if the file was overwritten, just update the index, else append
    existing = [d for d in all_deltas if d["id"] == int(seq)]
    if len(existing) > 0:
        logger.info("File %s overwritten", seq)
        i = 0
        for d in all_deltas:
            logger.debug("%s", d)
            if d["id"] == int(seq):
                all_deltas[i] = create_index_entry(seq)
            i = i + 1
    else:
        all_deltas.append(create_index_entry(seq))

    logger.debug("%s delta files listed after update", str(len(all_deltas)))

    # persist updated index
    all_deltass = json.dumps(all_deltas)
    write_file(get_taric_index_file(), all_deltass)
Пример #3
0
def taricdeltas(date):

    # Default to yesterday
    if date == '' or date is None:
        yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
        date = yesterday.strftime('%Y-%m-%d')
        logger.info("defaulted date to " + date)

    if not is_valid_date(date):
        logger.info("date is invalid")
        return Response("Bad request [invalid date] (400)", status=400)

    if not is_auth(request):
        logger.info("API key not provided or not authorised")
        return Response("403 Unauthorised", status=403)

    logger.debug("date is " + date)

    # All Taric files uploaded are stored in the index
    # Find files that have the issue date the same as the requested date
    # Output the response filtered by the date
    all_deltas = json.loads(read_file(get_taric_index_file()))
    logger.debug(
        str(len(all_deltas)) + " delta files listed in " +
        get_taric_index_file())

    deltas_on_date = [
        d for d in all_deltas if d['issue_date'].startswith(date)
    ]

    if len(deltas_on_date) == 0:
        logger.info("No delta files available for date " + date)
        return Response("404 Not found", status=404)

    logger.debug(str(len(deltas_on_date)) + " delta files for date " + date)

    deltas_json = json.dumps(deltas_on_date)

    r = make_response(deltas_json)

    r.headers.set('Content-Type', 'application/json')
    return r