def schedule_run_for(node): current_run = node.current_run() if current_run: _cancel_run(current_run) run_delay = _calculate_delay(node) if Run.current_run_for_node(node): RunQueue.enqueue(node, run_delay) else: contact = node.build_contact() task = _schedule_run.apply_async(args=[node.id], countdown=run_delay) Run.objects.create(scheduled_message_task_id=task.id, node=node, status=Run.STATUS.scheduled, phone=contact['phone'])
def test_should_get_none_when_current_run_is_called_for_a_consignee_with_no_runs_scheduled(self): RunFactory(node=self.node, status=Run.STATUS.expired) RunFactory(node=self.node, status=Run.STATUS.completed) self.assertEqual(Run.current_run_for_node(self.node), None)
def test_should_get_current_run_for_consignee_with_run_with_status_scheduled(self): run = RunFactory(node=self.node) self.assertEqual(Run.current_run_for_node(self.node), run)