diff --git a/crates/app/storyteller_web/src/http_server/endpoints/categories/assign_tts_category.rs b/crates/app/storyteller_web/src/http_server/endpoints/categories/assign_tts_category.rs index 368a2ebd40..b12df1575c 100644 --- a/crates/app/storyteller_web/src/http_server/endpoints/categories/assign_tts_category.rs +++ b/crates/app/storyteller_web/src/http_server/endpoints/categories/assign_tts_category.rs @@ -54,6 +54,7 @@ pub struct AssignTtsCategoryResponse { #[derive(Debug, Serialize)] pub enum AssignTtsCategoryError { CategoryNotFound, + CategoryNotApplicable, ModelNotFound, NotAuthorized, ServerError, @@ -63,6 +64,7 @@ impl ResponseError for AssignTtsCategoryError { fn status_code(&self) -> StatusCode { match *self { AssignTtsCategoryError::CategoryNotFound => StatusCode::NOT_FOUND, + AssignTtsCategoryError::CategoryNotApplicable => StatusCode::BAD_REQUEST, AssignTtsCategoryError::ModelNotFound => StatusCode::NOT_FOUND, AssignTtsCategoryError::NotAuthorized => StatusCode::UNAUTHORIZED, AssignTtsCategoryError::ServerError => StatusCode::INTERNAL_SERVER_ERROR, @@ -140,6 +142,11 @@ pub async fn assign_tts_category_handler( } } + if !category.can_directly_have_models { + warn!("category cannot have models: {}", category.category_token); + return Err(AssignTtsCategoryError::CategoryNotApplicable); + } + // NB: Second set of permission checks. // Only mods should see deleted models (both user_* and mod_* deleted). let is_mod_that_can_see_deleted = user_session.can_delete_other_users_tts_models;