Example #1
0
def decode_data(data: str):
    logging.debug(f'data {type(data)} = {data}')

    try:
        splitted_data = data.split('|')
        view_class_name_str = splitted_data[0]
        logging.debug(
            f'view_class_name_str {type(view_class_name_str)} = {view_class_name_str}'
        )

        model_class_name_str = splitted_data[1]
        logging.debug(
            f'model_class_name_str {type(model_class_name_str)} = {model_class_name_str}'
        )

        model_value_str = splitted_data[2]
        logging.debug(
            f'model_value_str {type(model_value_str)} = {model_value_str}')
    except IndexError:
        return (StartMenu, None)

    view_class = None
    model_class = None
    model_value = None

    for cls in View.__subclasses__():
        if cls.__name__ in view_class_name_str:
            view_class = cls
            break

    if model_class_name_str is not None and model_value_str is not None:
        for cls in Models.__subclasses__():
            if cls.__name__ in model_class_name_str:
                model_value = cls(model_value_str)
                break
        return (view_class, model_value)
    else:
        return (view_class, None)