def handle(self, *args, **kwargs): agents = Agent.objects.only("pk", "last_seen", "overdue_time") online = [i for i in agents if i.status == "online"] for agent in online: remove_orphaned_win_tasks.delay(agent.pk) self.stdout.write( self.style.SUCCESS( "The task has been initiated. Check the Debug Log in the UI for progress." ) )
def server_maintenance(request): from tacticalrmm.utils import reload_nats if "action" not in request.data: return notify_error("The data is incorrect") if request.data["action"] == "reload_nats": reload_nats() return Response("Nats configuration was reloaded successfully.") if request.data["action"] == "rm_orphaned_tasks": from agents.models import Agent from autotasks.tasks import remove_orphaned_win_tasks agents = Agent.objects.only("pk", "last_seen", "overdue_time", "offline_time") online = [i for i in agents if i.status == "online"] for agent in online: remove_orphaned_win_tasks.delay(agent.pk) return Response( "The task has been initiated. Check the Debug Log in the UI for progress." ) if request.data["action"] == "prune_db": from logs.models import AuditLog, PendingAction if "prune_tables" not in request.data: return notify_error("The data is incorrect.") tables = request.data["prune_tables"] records_count = 0 if "audit_logs" in tables: auditlogs = AuditLog.objects.filter(action="check_run") records_count += auditlogs.count() auditlogs.delete() if "pending_actions" in tables: pendingactions = PendingAction.objects.filter(status="completed") records_count += pendingactions.count() pendingactions.delete() if "alerts" in tables: from alerts.models import Alert alerts = Alert.objects.all() records_count += alerts.count() alerts.delete() return Response( f"{records_count} records were pruned from the database") return notify_error("The data is incorrect")