docs: def enqueue_or_delay(self, queue_name=None, priority=None,
                           delayed_until=None, prepend=False, queue_model=None):
          """
          Will enqueue or delay the job depending of the delayed_until.
          """
          queue_name = self._get_queue_name(queue_name)
  
          fields = {'queued': '1'}
  
          if priority is not None:
              fields['priority'] = priority
          else:
              priority = self.priority.hget()
  
          in_the_future = delayed_until and delayed_until > datetime.utcnow()
  
          if in_the_future:
              fields['delayed_until'] = str(delayed_until)
              fields['status'] = STATUSES.DELAYED
          else:
              self.delayed_until.delete()
              fields['status'] = STATUSES.WAITING
  
          self.hmset(**fields)
  
          if queue_model is None:
              queue_model = self.queue_model
          queue = queue_model.get_queue(queue_name, priority)
  
          if in_the_future:
              queue.delay_job(self, delayed_until)
          else:
              queue.enqueue_job(self, prepend)