Optim: logging structure + query_helpers.py + fix exceptions silencieuses routers

This commit is contained in:
Pierre & Lumière 2026-04-17 23:19:18 +00:00
parent 9097872e57
commit a0f90cd719
7 changed files with 50 additions and 2 deletions

View File

@ -1,3 +1,9 @@
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s [%(name)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S"
)
"""PatchCenter v2 — Entry point FastAPI"""
from fastapi import FastAPI, Request
from fastapi.responses import RedirectResponse

View File

@ -1,3 +1,5 @@
import logging
logger = logging.getLogger(__name__)
"""Router campagnes — creation, prereqs, assignation, workflow"""
from datetime import datetime
from fastapi import APIRouter, Request, Depends, Query, Form

View File

@ -1,3 +1,5 @@
import logging
logger = logging.getLogger(__name__)
"""Router contacts — gestion des responsables applicatifs et scopes"""
from fastapi import APIRouter, Request, Depends, Query, Form
from fastapi.responses import HTMLResponse, RedirectResponse

View File

@ -1,3 +1,5 @@
import logging
logger = logging.getLogger(__name__)
from fastapi import APIRouter, Request, Depends
from fastapi.responses import HTMLResponse, RedirectResponse
from fastapi.templating import Jinja2Templates

View File

@ -1,3 +1,5 @@
import logging
logger = logging.getLogger(__name__)
"""Router serveurs — CRUD + detail + edit via HTMX"""
from fastapi import APIRouter, Request, Depends, Query, Form
from fastapi.responses import HTMLResponse, RedirectResponse, StreamingResponse
@ -205,8 +207,8 @@ async def server_update(request: Request, server_id: int, db=Depends(get_db),
vm_id = list(r["objects"].values())[0]["key"]
new_list = [{"applicationsolution_id": int(app_itop_id)}] if app_itop_id else []
client.update("VirtualMachine", vm_id, {"applicationsolution_list": new_list})
except Exception:
pass
except Exception as e:
logger.warning(f"Erreur non bloquante: {e}")
s = get_server_full(db, server_id)
tags = get_server_tags(db, s.qid)

View File

@ -1,3 +1,5 @@
import logging
logger = logging.getLogger(__name__)
"""Router settings — configuration modules externes + connexions"""
from fastapi import APIRouter, Request, Depends, Form
from fastapi.responses import HTMLResponse, RedirectResponse

View File

@ -0,0 +1,32 @@
"""Helpers SQL reutilisables pour eviter la duplication de JOINs."""
from sqlalchemy import text
SERVER_BASE_JOINS = """
LEFT JOIN domain_environments de ON s.domain_env_id = de.id
LEFT JOIN domains d ON de.domain_id = d.id
LEFT JOIN environments e ON de.environment_id = e.id
LEFT JOIN zones z ON s.zone_id = z.id
"""
SERVER_BASE_COLS = """
s.id, s.hostname, s.fqdn, s.os_family, s.os_version,
s.etat, s.tier, s.environnement, s.machine_type,
d.name as domaine, d.code as domain_code,
e.name as env_name, e.code as env_code,
z.name as zone
"""
def server_list_query(where="1=1", order="s.hostname", limit=None, offset=None):
"""Construit une requete SELECT serveurs avec JOINs standard."""
q = f"""
SELECT {SERVER_BASE_COLS}
FROM servers s
{SERVER_BASE_JOINS}
WHERE {where}
ORDER BY {order}
"""
if limit is not None:
q += f" LIMIT {int(limit)}"
if offset is not None:
q += f" OFFSET {int(offset)}"
return text(q)