def add_process(input_dict: dict) -> dict:
    """
    Function to add a single process

    :param input_dict: process as a dictionary
    :type input_dict: dict
    :return: Status dict
    """

    output = Process(
        name=input_dict["process"]["name"],
        responsible_person=input_dict["process"]["responsible_person"],
        creation_timestamp=str(datetime.now()),
        last_timestamp=str(datetime.now()),
        description=input_dict["process"]["description"])

    output.save()

    for metric in input_dict["target_metrics"]:
        output.hasMetric.connect(
            metric_handler.Metric.nodes.get(name=metric), {
                "average": input_dict["target_metrics"][metric]["average"],
                "min": input_dict["target_metrics"][metric]["min"],
                "max": input_dict["target_metrics"][metric]["max"]
            })

    output_dict = success_handler()
    output_dict["process_uid"] = output.uid

    return output_dict
def remove_metrics_unique_constraint() -> dict:
    """
    Function to remove unique constraint on metric names

    :return: success handler
    """

    query = queries.remove_metrics_unique_constraint()
    db.cypher_query(query)

    return success_handler()
def get_process_list() -> dict:
    """
    Function to retrieve a list of all processes

    :return: List of processes in a dict
    """
    output_dict = success_handler()

    query = queries.get_process_list()
    result, meta = db.cypher_query(query)
    output_dict["processes"] = result[0][0]

    return output_dict
def delete_process(input_dict: dict) -> dict:
    """
    Function to delete a single process

    :param input_dict: Identifier
    :type input_dict: dict
    :return: Status dict
    """

    query = queries.delete_process(input_dict["uid"])
    db.cypher_query(query)

    return success_handler()
Пример #5
0
def get_component_list() -> dict:
    """
    Function to retrieve a list of all existing components

    :return: List of components in a dict
    """
    output_dict = success_handler()

    query = queries.get_component_list()
    result, meta = db.cypher_query(query)
    output_dict["components"] = result[0][0]

    return output_dict
def delete_process_reference(input_dict: dict) -> dict:
    """
    Function to delete a process reference (to a component not longer in the respective process)

    :param input_dict: a dictionary including the process uid and a weight
    :type input_dict: dict
    :return: Status dict
    """

    query = queries.delete_process_reference(input_dict['uid'],
                                             input_dict['weight'])
    db.cypher_query(query)

    return success_handler()
Пример #7
0
def get_component(input_dict: dict) -> dict:
    """
    Function to retrieve a single component

    :param input_dict: Component uid
    :type input_dict: dict
    :return: Component dict
    """
    output_dict = success_handler()

    result, meta = db.cypher_query(queries.get_component(input_dict["uid"]))
    output_dict["component"] = reformatter.reformat_component(result[0][0])

    return output_dict
def update_process_reference(input_dict: dict) -> dict:
    """
    Function to edit a process reference (to a component included in the respective process)

    :param input_dict: process uid and an old and new weight
    :type input_dict: dict
    :return: Status dict
    """

    query = queries.update_process_reference(input_dict["uid"],
                                             input_dict["old_weight"],
                                             input_dict["new_weight"])
    db.cypher_query(query)

    return success_handler()
def add_process_reference(input_dict: dict) -> dict:
    """
    Function to add a process reference (to a component included in the respective process)

    :param input_dict: a dictionary containing process uid, component id and weight
    :type input_dict: dict
    :return: Status dict
    """

    query = queries.add_process_reference(input_dict['process_uid'],
                                          input_dict['component_uid'],
                                          input_dict["weight"])
    db.cypher_query(query)

    return success_handler()
def get_process(input_dict: dict) -> dict:
    """
    Function to retrieve a single process

    :param input_dict: process uid
    :type input_dict: dict
    :return: process dict
    """
    output_dict = success_handler()

    query = queries.get_process(input_dict["uid"])
    result, meta = db.cypher_query(query)
    output_dict["process"], output_dict[
        "target_metrics"] = reformatter.reformat_process(result[0])
    return output_dict
Пример #11
0
def get_metrics_data() -> dict:
    """
    Function to get all metrics and their attributes

    :return: Metrics dict
    """

    query = queries.get_metrics_list()
    result, meta = db.cypher_query(query)

    output_dict = success_handler()
    output_dict["metrics"] = {}

    for metric in result[0][0]:
        output_dict["metrics"][metric.pop('name')] = metric

    return output_dict
Пример #12
0
def add_component(input_dict: dict) -> dict:
    """
    Function to add a single component

    :param input_dict: Component as a dictionary
    :type input_dict: dict
    :return: Status dict
    """

    output = Component(name=input_dict["name"], category=input_dict["category"],
                       creation_timestamp=str(datetime.now()),
                       last_timestamp=str(datetime.now()), description=input_dict["description"])

    output.save()

    for metric in input_dict["metrics"]:
        output.hasMetric.connect(metric_handler.Metric.nodes.get(name=metric), {"value": input_dict["metrics"][metric]})

    return success_handler()
Пример #13
0
def update_component(input_dict: dict) -> dict:
    """
    Function to update a single component

    :param input_dict: Component as a dictionary
    :type input_dict: dict
    :return: Status dict
    """
    uid = input_dict["uid"]

    query = queries.update_component(uid, input_dict["name"], input_dict["category"], input_dict["description"],
                                     str(datetime.now()))
    db.cypher_query(query)

    for metric in input_dict["metrics"]:
        query = queries.update_component_metric(uid, metric, input_dict["metrics"][metric])
        db.cypher_query(query)

    return success_handler()
Пример #14
0
def create_from_frontend_json(path: str) -> dict:
    """
    Function to create metrics out of the frontend definition file

    :param path: Path to stored json
    :type path: str
    :return: Stats dict
    """

    with open(path) as json_file:
        data = json.load(json_file)

    features = data["features"]

    for key in features:
        for metric in features[key]["metrics"]:
            for fulfill in features[key]["metrics"][metric]["fulfilled_if"]:
                Metric.create({'name': metric, "fulfilled_if": fulfill})

    return success_handler()
def update_process(input_dict: dict) -> dict:
    """
    Function to edit a single process

    :param input_dict: process as a dictionary
    :type input_dict: dict
    :return: Status dict
    """
    uid = input_dict["process"]["uid"]

    query = queries.update_process(uid, input_dict["process"]["name"],
                                   input_dict["process"]["responsible_person"],
                                   input_dict["process"]["description"],
                                   str(datetime.now()))
    db.cypher_query(query)

    for metric in input_dict["target_metrics"]:
        metric_values = {}
        if input_dict["target_metrics"][metric]["average"] is not None:
            metric_values["average"] = input_dict["target_metrics"][metric][
                "average"]
        if input_dict["target_metrics"][metric]["min"] is not None:
            metric_values["min"] = input_dict["target_metrics"][metric]["min"]
        if input_dict["target_metrics"][metric]["max"] is not None:
            metric_values["max"] = input_dict["target_metrics"][metric]["max"]
        commas_needed = len(metric_values) - 1
        metric_string = ""
        loop_count = 0
        for key in metric_values:
            metric_string += key + ": " + str(metric_values[key])
            if loop_count < commas_needed:
                metric_string += ", "
            loop_count += 1

        query = queries.update_process_metric(uid, metric, metric_string)
        db.cypher_query(query)

    return success_handler()