Beispiel #1
0
    def dispatch(self, file: File) -> None:
        FileDispatcher.__LOG.info(f"[DISPATCHING] '{file.filename}'")

        copied = False  # indicates that input file has been copied at least in one destination
        for rule in self.__rules:
            if file.match_rule(rule):
                FileDispatcher.__LOG.debug(
                    f"[COPYING] '{file.filename}' to '{rule.destinations}")
                file.copy_to(rule.destinations)
                copied |= len(rule.destinations) > 0

        if copied:  # if file matches a rule, remove it
            FileDispatcher.__LOG.debug(f"[REMOVING] '{file.filename}'")
            file.delete()
        else:
            FileDispatcher.__LOG.debug(
                f"[SKIPPING] '{file.filename}': not match any rule")