code: def push(self, patch=None, toa=None, meta=None):
          
  
          if not meta:
              meta = {}
  
          if not toa:
              toa = time.mktime(datetime.datetime.now().timetuple())
  
          if not isinstance(toa, int):
              toa = int(toa)
  
          #Documents should be stored in bson formats
          if isinstance(patch, dict):
              patch = self.revisions._dictionary_to_cursor(patch)
  
          action = None
  
          if isinstance(patch, type(None)):
              action = self.DELETE_ACTION
          elif self.master_id and isinstance(patch, dict):
              action = self.UPDATE_ACTION
              patch = self.__make_patch_storeable(patch)
              yield self._lazy_migration(meta=copy.deepcopy(meta), toa=toa-1)
  
          elif not self.master_id and isinstance(patch, dict):
              #Scheduled inserts will not have an object ID and one should be generated
              action = self.INSERT_ACTION
              patch["_id"] = ObjectId()
              self.master_id = patch["_id"].__str__()
  
          elif not action:
              raise RevisionActionNotValid()
  
          # We shall never store the _id to a patch dictionary
          if patch and patch.get("_id"):
              del patch["_id"]
  
          change = {
              "toa": toa,
              "processed": False,
              "collection": self.collection_name,
              "master_id": self.master_id,
              "action": action,
              "patch" : None if action == self.DELETE_ACTION else self.collection._dictionary_to_cursor(patch),
              "meta": meta
          }
  
          jsonschema.validate(change, self.SCHEMA)
  
          id = yield self.revisions.insert(change)
  
          raise Return(id)
docs: Push a change on to the revision stack for this ObjectId.  Pushing onto the stack is how you
          get revisions to be staged and scheduled for some future time.
  
          :param dict patch: None Denotes Delete
          :param int toa: Time of action
          :param dict meta: The meta data for this action