def update_policy_task_fields_task(taskpk, update_agent=False): from autotasks.tasks import enable_or_disable_win_task task = AutomatedTask.objects.get(pk=taskpk) AutomatedTask.objects.filter(parent_task=taskpk).update( alert_severity=task.alert_severity, email_alert=task.email_alert, text_alert=task.text_alert, dashboard_alert=task.dashboard_alert, script=task.script, script_args=task.script_args, name=task.name, timeout=task.timeout, enabled=task.enabled, ) if update_agent: for task in AutomatedTask.objects.filter(parent_task=taskpk): enable_or_disable_win_task.delay(task.pk, task.enabled)
def handle_pending_actions(self): pending_actions = self.pendingactions.filter(status="pending") for action in pending_actions: if action.action_type == "taskaction": from autotasks.tasks import ( create_win_task_schedule, enable_or_disable_win_task, delete_win_task_schedule, ) task_id = action.details["task_id"] if action.details["action"] == "taskcreate": create_win_task_schedule.delay(task_id, pending_action=action.id) elif action.details["action"] == "tasktoggle": enable_or_disable_win_task.delay( task_id, action.details["value"], pending_action=action.id ) elif action.details["action"] == "taskdelete": delete_win_task_schedule.delay(task_id, pending_action=action.id)
def patch(self, request, pk): from automation.tasks import update_policy_autotasks_fields_task from autotasks.tasks import enable_or_disable_win_task task = get_object_or_404(AutomatedTask, pk=pk) if "enableordisable" in request.data: action = request.data["enableordisable"] task.enabled = action task.save(update_fields=["enabled"]) action = "enabled" if action else "disabled" if task.policy: update_policy_autotasks_fields_task.delay(task=task.pk, update_agent=True) elif task.agent: enable_or_disable_win_task.delay(pk=task.pk) return Response(f"Task will be {action} shortly") else: return notify_error("The request was invalid")