From 27b3006ffd88cc5e095742220df2f296bfdf6ff8 Mon Sep 17 00:00:00 2001 From: misyaguziya <53165965+misyaguziya@users.noreply.github.com> Date: Thu, 20 Nov 2025 01:38:50 +0900 Subject: [PATCH] [Update] Controller: Add error handling for empty translation model lists and improve logging for translation engine availability checks. --- src-python/controller.py | 48 +++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src-python/controller.py b/src-python/controller.py index 06df12bf..db326cb2 100644 --- a/src-python/controller.py +++ b/src-python/controller.py @@ -1909,10 +1909,12 @@ class Controller: config.SELECTABLE_TRANSLATION_ENGINE_STATUS[translator_name] = True config.SELECTABLE_LMSTUDIO_MODEL_LIST = model.getTranslatorLMStudioModelList() self.run(200, self.run_mapping["selectable_lmstudio_model_list"], config.SELECTABLE_LMSTUDIO_MODEL_LIST) + if len(config.SELECTABLE_LMSTUDIO_MODEL_LIST) == 0: + raise Exception("No LMStudio models available") if config.SELECTED_LMSTUDIO_MODEL not in config.SELECTABLE_LMSTUDIO_MODEL_LIST: config.SELECTED_LMSTUDIO_MODEL = config.SELECTABLE_LMSTUDIO_MODEL_LIST[0] - model.setTranslatorLMStudioModel(model=config.SELECTED_LMSTUDIO_MODEL) - self.run(200, self.run_mapping["selected_lmstudio_model"], config.SELECTED_LMSTUDIO_MODEL) + model.setTranslatorLMStudioModel(model=config.SELECTED_LMSTUDIO_MODEL) + self.run(200, self.run_mapping["selected_lmstudio_model"], config.SELECTED_LMSTUDIO_MODEL) model.updateTranslatorLMStudioClient() self.updateTranslationEngineAndEngineList() response = {"status":200, "result":True} @@ -1949,10 +1951,12 @@ class Controller: config.SELECTABLE_TRANSLATION_ENGINE_STATUS[translator_name] = True config.SELECTABLE_LMSTUDIO_MODEL_LIST = model.getTranslatorLMStudioModelList() self.run(200, self.run_mapping["selectable_lmstudio_model_list"], config.SELECTABLE_LMSTUDIO_MODEL_LIST) + if len(config.SELECTABLE_LMSTUDIO_MODEL_LIST) == 0: + raise Exception("No LMStudio models available") if config.SELECTED_LMSTUDIO_MODEL not in config.SELECTABLE_LMSTUDIO_MODEL_LIST: config.SELECTED_LMSTUDIO_MODEL = config.SELECTABLE_LMSTUDIO_MODEL_LIST[0] - model.setTranslatorLMStudioModel(model=config.SELECTED_LMSTUDIO_MODEL) - self.run(200, self.run_mapping["selected_lmstudio_model"], config.SELECTED_LMSTUDIO_MODEL) + model.setTranslatorLMStudioModel(model=config.SELECTED_LMSTUDIO_MODEL) + self.run(200, self.run_mapping["selected_lmstudio_model"], config.SELECTED_LMSTUDIO_MODEL) model.updateTranslatorLMStudioClient() self.updateTranslationEngineAndEngineList() response = {"status":200, "result":config.LMSTUDIO_URL} @@ -2020,10 +2024,12 @@ class Controller: config.SELECTABLE_TRANSLATION_ENGINE_STATUS[translator_name] = True config.SELECTABLE_OLLAMA_MODEL_LIST = model.getTranslatorOllamaModelList() self.run(200, self.run_mapping["selectable_ollama_model_list"], config.SELECTABLE_OLLAMA_MODEL_LIST) + if len(config.SELECTABLE_OLLAMA_MODEL_LIST) == 0: + raise Exception("No Ollama models available") if config.SELECTED_OLLAMA_MODEL not in config.SELECTABLE_OLLAMA_MODEL_LIST: config.SELECTED_OLLAMA_MODEL = config.SELECTABLE_OLLAMA_MODEL_LIST[0] - model.setTranslatorOllamaModel(model=config.SELECTED_OLLAMA_MODEL) - self.run(200, self.run_mapping["selected_ollama_model"], config.SELECTED_OLLAMA_MODEL) + model.setTranslatorOllamaModel(model=config.SELECTED_OLLAMA_MODEL) + self.run(200, self.run_mapping["selected_ollama_model"], config.SELECTED_OLLAMA_MODEL) model.updateTranslatorOllamaClient() self.updateTranslationEngineAndEngineList() response = {"status":200, "result":True} @@ -2957,13 +2963,13 @@ class Controller: config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = False if config.AUTH_KEYS[engine] is not None: if model.authenticationTranslatorPlamoAuthKey(auth_key=config.AUTH_KEYS[engine]) is True: - config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True - printLog("Plamo API Key is valid") config.SELECTABLE_PLAMO_MODEL_LIST = model.getTranslatorPlamoModelList() if config.SELECTED_PLAMO_MODEL not in config.SELECTABLE_PLAMO_MODEL_LIST: config.SELECTED_PLAMO_MODEL = config.SELECTABLE_PLAMO_MODEL_LIST[0] model.setTranslatorPlamoModel(config.SELECTED_PLAMO_MODEL) model.updateTranslatorPlamoClient() + config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True + printLog("Plamo API Key is valid") else: # error update Auth key auth_keys = config.AUTH_KEYS @@ -2975,13 +2981,13 @@ class Controller: config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = False if config.AUTH_KEYS[engine] is not None: if model.authenticationTranslatorGeminiAuthKey(auth_key=config.AUTH_KEYS[engine]) is True: - config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True - printLog("Gemini API Key is valid") config.SELECTABLE_GEMINI_MODEL_LIST = model.getTranslatorGeminiModelList() if config.SELECTED_GEMINI_MODEL not in config.SELECTABLE_GEMINI_MODEL_LIST: config.SELECTED_GEMINI_MODEL = config.SELECTABLE_GEMINI_MODEL_LIST[0] model.setTranslatorGeminiModel(config.SELECTED_GEMINI_MODEL) model.updateTranslatorGeminiClient() + config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True + printLog("Gemini API Key is valid") else: # error update Auth key auth_keys = config.AUTH_KEYS @@ -2993,13 +2999,13 @@ class Controller: config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = False if config.AUTH_KEYS[engine] is not None: if model.authenticationTranslatorOpenAIAuthKey(auth_key=config.AUTH_KEYS[engine]) is True: - config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True - printLog("OpenAI API Key is valid") config.SELECTABLE_OPENAI_MODEL_LIST = model.getTranslatorOpenAIModelList() if config.SELECTED_OPENAI_MODEL not in config.SELECTABLE_OPENAI_MODEL_LIST: config.SELECTED_OPENAI_MODEL = config.SELECTABLE_OPENAI_MODEL_LIST[0] model.setTranslatorOpenAIModel(config.SELECTED_OPENAI_MODEL) model.updateTranslatorOpenAIClient() + config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True + printLog("OpenAI API Key is valid") else: # error update Auth key auth_keys = config.AUTH_KEYS @@ -3007,30 +3013,36 @@ class Controller: config.AUTH_KEYS = auth_keys printLog("OpenAI API Key is invalid") case "LMStudio": - printLog("Start check LMStudio API Key") + printLog("Start check LMStudio Server") config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = False if config.LMSTUDIO_URL is not None: if model.authenticationTranslatorLMStudio(base_url=config.LMSTUDIO_URL) is True: - config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True - printLog("LMStudio URL is valid") config.SELECTABLE_LMSTUDIO_MODEL_LIST = model.getTranslatorLMStudioModelList() + if len(config.SELECTABLE_LMSTUDIO_MODEL_LIST) == 0: + printLog("LMStudio model list is empty") + break if config.SELECTED_LMSTUDIO_MODEL not in config.SELECTABLE_LMSTUDIO_MODEL_LIST: config.SELECTED_LMSTUDIO_MODEL = config.SELECTABLE_LMSTUDIO_MODEL_LIST[0] model.setTranslatorLMStudioModel(config.SELECTED_LMSTUDIO_MODEL) model.updateTranslatorLMStudioClient() + config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True + printLog("LMStudio is available") else: printLog("LMStudio is not available") case "Ollama": - printLog("Start check Ollama API Key") + printLog("Start check Ollama Server") config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = False if model.authenticationTranslatorOllama() is True: - config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True - printLog("Ollama is available") config.SELECTABLE_OLLAMA_MODEL_LIST = model.getTranslatorOllamaModelList() + if len(config.SELECTABLE_OLLAMA_MODEL_LIST) == 0: + printLog("Ollama model list is empty") + break if config.SELECTED_OLLAMA_MODEL not in config.SELECTABLE_OLLAMA_MODEL_LIST: config.SELECTED_OLLAMA_MODEL = config.SELECTABLE_OLLAMA_MODEL_LIST[0] model.setTranslatorOllamaModel(config.SELECTED_OLLAMA_MODEL) model.updateTranslatorOllamaClient() + config.SELECTABLE_TRANSLATION_ENGINE_STATUS[engine] = True + printLog("Ollama is available") else: printLog("Ollama is not available") case _: