def get_next_task(self, task): task_last_node = self.stn.get_task_node_ids(task.task_id)[-1] if self.stn.has_node(task_last_node + 1): next_task_id = self.stn.nodes[task_last_node + 1]['data'].task_id try: next_task = Task.get_task(next_task_id) except DoesNotExist: self.logger.warning("Task %s is not in db", next_task_id) next_task = Task.create_new(task_id=next_task_id) return next_task
def load_tasks_to_db(dataset_module, dataset_name, **kwargs): dataset_dict = load_yaml_file_from_module(dataset_module, dataset_name + '.yaml') initial_time = kwargs.get('initial_time', datetime.now()) tasks_dict = dataset_dict.get('tasks') ordered_tasks = collections.OrderedDict(sorted(tasks_dict.items())) tasks = list() for task_id, task_info in ordered_tasks.items(): earliest_pickup_time, latest_pickup_time = reference_to_initial_time( task_info.get("earliest_pickup_time"), task_info.get("latest_pickup_time"), initial_time) request = TransportationRequest( request_id=generate_uuid(), pickup_location=task_info.get('pickup_location'), delivery_location=task_info.get('delivery_location'), earliest_pickup_time=earliest_pickup_time, latest_pickup_time=latest_pickup_time, hard_constraints=task_info.get('hard_constraints')) request.save() duration = InterTimepointConstraint() pickup = TimepointConstraint( earliest_time=request.earliest_pickup_time, latest_time=request.latest_pickup_time) temporal = TransportationTemporalConstraints(pickup=pickup, duration=duration) constraints = TransportationTaskConstraints( hard=request.hard_constraints, temporal=temporal) task = TransportationTask.create_new(task_id=task_id, request=request.request_id, constraints=constraints) tasks.append(task) return tasks