Files
plantillas-proyectos/backend/api/v1/modules/a76/item_presets/routes.py

73 lines
2.8 KiB
Python

from typing import List, Any, Dict
from fastapi import APIRouter, Depends, Query, HTTPException
from sqlalchemy.orm import Session
from core.database import get_core_db
from core.security import get_current_user, validate_access_to_resource
from . import services, dto
router = APIRouter()
@router.get("/", response_model=List[dto.ItemPresetResponse])
def list_item_presets(
company_id: int = Query(...),
db: Session = Depends(get_core_db),
current_user: Dict[str, Any] = Depends(get_current_user),
):
"""List all item presets for a company"""
tenant_id = validate_access_to_resource(db, company_id, current_user)
return services.get_presets(db, tenant_id, company_id)
@router.post("/", response_model=dto.ItemPresetResponse)
def create_item_preset(
data: dto.ItemPresetCreate,
company_id: int = Query(...),
db: Session = Depends(get_core_db),
current_user: Dict[str, Any] = Depends(get_current_user),
):
"""Create a new item preset"""
tenant_id = validate_access_to_resource(db, company_id, current_user)
return services.create_preset(db, tenant_id, company_id, data)
@router.get("/{preset_id}", response_model=dto.ItemPresetResponse)
def get_item_preset(
preset_id: int,
company_id: int = Query(...),
db: Session = Depends(get_core_db),
current_user: Dict[str, Any] = Depends(get_current_user),
):
"""Get a specific item preset"""
tenant_id = validate_access_to_resource(db, company_id, current_user)
preset = services.get_preset_by_id(db, preset_id, tenant_id, company_id)
if not preset:
raise HTTPException(status_code=404, detail="Item preset not found")
return preset
@router.put("/{preset_id}", response_model=dto.ItemPresetResponse)
def update_item_preset(
preset_id: int,
data: dto.ItemPresetUpdate,
company_id: int = Query(...),
db: Session = Depends(get_core_db),
current_user: Dict[str, Any] = Depends(get_current_user),
):
"""Update an item preset"""
tenant_id = validate_access_to_resource(db, company_id, current_user)
preset = services.update_preset(db, preset_id, tenant_id, company_id, data)
if not preset:
raise HTTPException(status_code=404, detail="Item preset not found")
return preset
@router.delete("/{preset_id}")
def delete_item_preset(
preset_id: int,
company_id: int = Query(...),
db: Session = Depends(get_core_db),
current_user: Dict[str, Any] = Depends(get_current_user),
):
"""Delete an item preset"""
tenant_id = validate_access_to_resource(db, company_id, current_user)
success = services.delete_preset(db, preset_id, tenant_id, company_id)
if not success:
raise HTTPException(status_code=404, detail="Item preset not found")
return {"status": "success", "message": "Preset deleted"}