import time import math import tabulate def print_header(logger, mode, server, inspire='flexible'): logger.info("SDI check") logger.info("mode: {mode}".format(mode=mode)) if mode.upper() == "CSW": logger.info("metadata catalog CSW URL: {server}".format(server=server)) logger.info("INSPIRE mode: {inspie}".format(inspire=inspire)) else: logger.info("{mode} service URL: {server}".format(mode=mode, server=server)) logger.info("output mode: log") logger.info("start time: {time}".format(time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))) # logger.info("") def print_layers_status(logger, owschecker): errors = owschecker.get_inconsistencies() layers = owschecker.get_layer_names() layers_in_error = [error.layer_index for error in errors] curr_idx = 0 for idx, error in enumerate(errors): while curr_idx < error.layer_index: if curr_idx not in layers_in_error: logger.info("#{id} Layer: {layer} OK".format(id=curr_idx, layer=layers[curr_idx])) curr_idx += 1 logger.error("#{id} Layer: {layer}".format(id=error.layer_index, layer=error.layer_name), data=error.get_error()) logger.error("{error}".format(error=str(error))) def print_ows_report(logger, owschecker): total_layers = len(owschecker.get_layer_names()) inconsistencies = owschecker.get_inconsistencies() layers_error = set() for inconsistency in inconsistencies: layers_error.add(inconsistency.layer_index) inconsistencies_found = len(layers_error) layers_inconsistency_percent = math.floor((inconsistencies_found * 100 / total_layers)) if total_layers > 0 else 0 logger.info("{total_layers} layers parsed, {inconsistencies_found} inconsistencies found ({layers_inconsistency_percent} %)".format(total_layers=total_layers, inconsistencies_found=inconsistencies_found, layers_inconsistency_percent=layers_inconsistency_percent)) logger.info("end time: {time}".format(time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))) def print_csw_report(logger, errors, total_mds): unique_mds_in_error = { error.md_uuid for error in errors } err_percent = math.floor(len(unique_mds_in_error) * 100 / total_mds) if total_mds > 0 else 0 logger.info("{total_mds} metadata parsed, {nb_errors} inconsistencies found, {unique_mds_in_error} unique metadatas in error ({err_percent} %)".format(total_mds=total_mds, nb_errors=len(errors), unique_mds_in_error=len(unique_mds_in_error), err_percent=err_percent)) logger.info("end time: {time}".format(time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())))