def post(self, request): agent = get_object_or_404(Agent, agent_id=request.data["agent_id"]) updates = request.data["wua_updates"] for update in updates: if agent.winupdates.filter(guid=update["guid"]).exists(): u = agent.winupdates.filter(guid=update["guid"]).last() u.downloaded = update["downloaded"] u.installed = update["installed"] u.save(update_fields=["downloaded", "installed"]) else: try: kb = "KB" + update["kb_article_ids"][0] except: continue WinUpdate( agent=agent, guid=update["guid"], kb=kb, title=update["title"], installed=update["installed"], downloaded=update["downloaded"], description=update["description"], severity=update["severity"], categories=update["categories"], category_ids=update["category_ids"], kb_article_ids=update["kb_article_ids"], more_info_urls=update["more_info_urls"], support_url=update["support_url"], revision_number=update["revision_number"], ).save() return Response("ok")
def post(self, request): agent = get_object_or_404(Agent, agent_id=request.data["agent_id"]) updates = request.data["wua_updates"] for update in updates: if agent.winupdates.filter( guid=update["guid"]).exists(): # type: ignore u = agent.winupdates.filter( guid=update["guid"]).last() # type: ignore u.downloaded = update["downloaded"] u.installed = update["installed"] u.save(update_fields=["downloaded", "installed"]) else: try: kb = "KB" + update["kb_article_ids"][0] except: continue WinUpdate( agent=agent, guid=update["guid"], kb=kb, title=update["title"], installed=update["installed"], downloaded=update["downloaded"], description=update["description"], severity=update["severity"], categories=update["categories"], category_ids=update["category_ids"], kb_article_ids=update["kb_article_ids"], more_info_urls=update["more_info_urls"], support_url=update["support_url"], revision_number=update["revision_number"], ).save() agent.delete_superseded_updates() # more superseded updates cleanup if pyver.parse(agent.version) <= pyver.parse("1.4.2"): for u in agent.winupdates.filter( # type: ignore date_installed__isnull=True, result="failed").exclude(installed=True): u.delete() return Response("ok")