def validate_process_types(queryset=None): """Perform process type validation. :param queryset: Optional process queryset to validate :return: A list of validation error strings """ if not queryset: from .process import Process queryset = Process.objects.all() processes = {} for process in queryset: dict_dot( processes, process.type.replace(":", ".") + "__schema__", process.output_schema, ) errors = [] for path, key, value in iterate_dict( processes, exclude=lambda key, value: key == "__schema__" ): if "__schema__" not in value: continue # Validate with any parent types. for length in range(len(path), 0, -1): parent_type = ".".join(path[:length] + ["__schema__"]) try: parent_schema = dict_dot(processes, parent_type) except KeyError: continue errors += validate_process_subtype( supertype_name=":".join(path[:length]), supertype=parent_schema, subtype_name=":".join(path + [key]), subtype=value["__schema__"], ) return errors
def validate_process_types(queryset=None): """Perform process type validation. :param queryset: Optional process queryset to validate :return: A list of validation error strings """ if not queryset: from .process import Process queryset = Process.objects.all() processes = {} for process in queryset: dict_dot( processes, process.type.replace(':', '.') + '__schema__', process.output_schema ) errors = [] for path, key, value in iterate_dict(processes, exclude=lambda key, value: key == '__schema__'): if '__schema__' not in value: continue # Validate with any parent types. for length in range(len(path), 0, -1): parent_type = '.'.join(path[:length] + ['__schema__']) try: parent_schema = dict_dot(processes, parent_type) except KeyError: continue errors += validate_process_subtype( supertype_name=':'.join(path[:length]), supertype=parent_schema, subtype_name=':'.join(path + [key]), subtype=value['__schema__'] ) return errors