def METHOD_NAME(self, action, migration=None, fake=False):
    if self.verbosity >= 1:
        compute_time = self.verbosity > 1
        if action == "apply_start":
            if compute_time:
                self.start = time.time()
            self.stdout.write("  Applying %s..." % migration, ending="")
            self.stdout.flush()
        elif action == "apply_success":
            elapsed = " (%.3fs)" % (
                time.time() - self.start
            ) if compute_time else ""
            if fake:
                self.stdout.write(self.style.SUCCESS(" FAKED" + elapsed))
            else:
                self.stdout.write(self.style.SUCCESS(" OK" + elapsed))
        elif action == "unapply_start":
            if compute_time:
                self.start = time.time()
            self.stdout.write("  Unapplying %s..." % migration, ending="")
            self.stdout.flush()
        elif action == "unapply_success":
            elapsed = " (%.3fs)" % (
                time.time() - self.start
            ) if compute_time else ""
            if fake:
                self.stdout.write(self.style.SUCCESS(" FAKED" + elapsed))
            else:
                self.stdout.write(self.style.SUCCESS(" OK" + elapsed))
        elif action == "render_start":
            if compute_time:
                self.start = time.time()
            self.stdout.write("  Rendering model states...", ending="")
            self.stdout.flush()
        elif action == "render_success":
            elapsed = " (%.3fs)" % (
                time.time() - self.start
            ) if compute_time else ""
            self.stdout.write(self.style.SUCCESS(" DONE" + elapsed))