code: def postpone(self, record):
  		
  
  		maximum_records = self.maximum_records()
  		if maximum_records is not None and len(self.__records) >= maximum_records:
  			record.task_dropped()
  			return
  
  		task_policy = record.policy()
  		task_group_id = record.task_group_id()
  
  		if task_policy == WScheduleRecord.PostponePolicy.wait:
  			self.__postpone_record(record)
  
  		elif task_policy == WScheduleRecord.PostponePolicy.drop:
  			record.task_dropped()
  
  		elif task_policy == WScheduleRecord.PostponePolicy.postpone_first:
  			if task_group_id is None:
  				self.__postpone_record(record)
  			else:
  				record_found = None
  				for previous_scheduled_record, task_index in self.__search_record(task_group_id):
  					if previous_scheduled_record.policy() != task_policy:
  						raise RuntimeError('Invalid tasks policies')
  					record_found = previous_scheduled_record
  					break
  
  				if record_found is not None:
  					record.task_dropped()
  				else:
  					self.__postpone_record(record)
  
  		elif task_policy == WScheduleRecord.PostponePolicy.postpone_last:
  			if task_group_id is None:
  				self.__postpone_record(record)
  			else:
  				record_found = None
  				for previous_scheduled_record, task_index in self.__search_record(task_group_id):
  					if previous_scheduled_record.policy() != task_policy:
  						raise RuntimeError('Invalid tasks policies')
  					record_found = task_index
  					break
  
  				if record_found is not None:
  					self.__records.pop(record_found).task_dropped()
  
  				self.__postpone_record(record)
  		else:
  			raise RuntimeError('Invalid policy spotted')
docs: Postpone (if required) the given task. The real action is depended on task postpone policy
  
  		:param record: record to postpone
  		:return: None