from typing import List from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from .. import models, schemas, proxmox_client as pve from ..database import get_db from ..deps import get_current_user, require_admin router = APIRouter(prefix="/templates", tags=["templates"]) @router.get("", response_model=List[schemas.TemplateOut]) def list_templates(db: Session = Depends(get_db), _=Depends(get_current_user)): return db.query(models.Template).filter(models.Template.is_active == True).all() # noqa: E712 @router.post("", response_model=schemas.TemplateOut) def create_template( payload: schemas.TemplateCreate, db: Session = Depends(get_db), _=Depends(require_admin), ): tpl = models.Template(**payload.model_dump()) db.add(tpl) db.commit() db.refresh(tpl) return tpl @router.get("/from-proxmox") def list_proxmox_templates(_=Depends(require_admin)): try: vm_tpls = pve.list_vm_templates() except: vm_tpls = [] try: lxc_tpls = pve.list_lxc_templates() except: lxc_tpls = [] return {"vm_templates": vm_tpls, "lxc_templates": lxc_tpls} @router.delete("/{template_id}") def deactivate_template( template_id: int, db: Session = Depends(get_db), _=Depends(require_admin) ): tpl = db.query(models.Template).filter(models.Template.id == template_id).first() if tpl: tpl.is_active = False db.commit() return {"ok": True}