def relative_to_ztp(ztp, time_, resolution="seconds"): """Returns the relative time between the given time_ (datetime) and the ztp (TimeStamp)""" if time_.isoformat().startswith("9999-12-31T"): r_time = float('inf') else: r_time = TimeStamp.from_datetime(time_).get_difference(ztp, resolution) return r_time
def is_executable(self): current_time = TimeStamp() start_time = TimeStamp.from_datetime(self.start_time) if start_time < current_time: return True else: return False
def fetch(self): try: self.logger.debug("Fetching timetable of robot %s", self.robot_id) timetable_mongo = TimetableMongo.objects.get_timetable(self.robot_id) self.stn = self.stn.from_dict(timetable_mongo.stn) self.dispatchable_graph = self.stn.from_dict(timetable_mongo.dispatchable_graph) self.ztp = TimeStamp.from_datetime(timetable_mongo.ztp) self.stn_tasks = {task_id: STNTask.from_dict(task) for (task_id, task) in timetable_mongo.stn_tasks.items()} except DoesNotExist: self.logger.debug("The timetable of robot %s is empty", self.robot_id) # Resetting values self.stn = self.stp_solver.get_stn() self.dispatchable_graph = self.stp_solver.get_stn()
def get_current_timestamp(self): if self.simulator: return TimeStamp.from_datetime(self.simulator.current_time) else: return TimeStamp()