fix: solución de bloqueos y estandarización de permisos

This commit is contained in:
2026-04-27 10:47:30 -05:00
parent fa3cbb4d0a
commit 5c2a84e95d
312 changed files with 13889 additions and 7911 deletions

View File

@@ -195,19 +195,32 @@ class TenantCRUDRoutes(
if "sort_order" in sig.parameters:
kwargs["sort_order"] = sort_order
items, total = self.service.get_all(
db, tenant_id, target_company_id, skip, page_size, filters, **kwargs
)
try:
items, total = self.service.get_all(
db, tenant_id, target_company_id, skip, page_size, filters, **kwargs
)
except Exception as e:
logger.error(f"Error in {self.resource_name} list service: {str(e)}", exc_info=True)
raise HTTPException(
status_code=500,
detail=f"Error listing {self.resource_name}s: {str(e)}"
)
return {
"items": [
self.response_schema.model_validate(item) for item in items
],
"total": total,
"page": page,
"page_size": page_size,
}
try:
return {
"items": [
self.response_schema.model_validate(item) for item in items
],
"total": total,
"page": page,
"page_size": page_size,
}
except Exception as e:
logger.error(f"Error validating {self.resource_name} response schema: {str(e)}", exc_info=True)
raise HTTPException(
status_code=500,
detail=f"Data validation error in {self.resource_name}"
)
else:
@@ -261,18 +274,32 @@ class TenantCRUDRoutes(
if "sort_order" in sig.parameters:
kwargs["sort_order"] = sort_order
items, total = self.service.get_all(
db, tenant_id, target_company_id, skip, page_size, None, **kwargs
)
try:
items, total = self.service.get_all(
db, tenant_id, target_company_id, skip, page_size, None, **kwargs
)
except Exception as e:
logger.error(f"Error in {self.resource_name} list service: {str(e)}", exc_info=True)
raise HTTPException(
status_code=500,
detail=f"Error listing {self.resource_name}s: {str(e)}"
)
return {
"items": [
self.response_schema.model_validate(item) for item in items
],
"total": total,
"page": page,
"page_size": page_size,
}
try:
return {
"items": [
self.response_schema.model_validate(item) for item in items
],
"total": total,
"page": page,
"page_size": page_size,
}
except Exception as e:
logger.error(f"Error validating {self.resource_name} response schema: {str(e)}", exc_info=True)
raise HTTPException(
status_code=500,
detail=f"Data validation error in {self.resource_name}"
)
# GET single resource route
# For parent resources: GET /{id}
@@ -336,9 +363,16 @@ class TenantCRUDRoutes(
db, company_id, current_user, self.get_permissions, self.require_all
)
resource = self.service.get_by_id(
db, resource_id, tenant_id, company_id
)
try:
resource = self.service.get_by_id(
db, resource_id, tenant_id, company_id
)
except Exception as e:
logger.error(f"Error in {self.resource_name} get service: {str(e)}", exc_info=True)
raise HTTPException(
status_code=500,
detail=f"Error retrieving {self.resource_name}: {str(e)}"
)
if not resource:
raise HTTPException(