Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/admin/admin_debug.py: 29%
34 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
1import os 1a
2import shutil 1a
4from fastapi import APIRouter, File, UploadFile 1a
6from mealie.core.dependencies.dependencies import get_temporary_path 1a
7from mealie.routes._base import BaseAdminController, controller 1a
8from mealie.schema.admin.debug import DebugResponse 1a
9from mealie.services.openai import OpenAILocalImage, OpenAIService 1a
11router = APIRouter(prefix="/debug") 1a
14@controller(router) 1a
15class AdminDebugController(BaseAdminController): 1a
16 @router.post("/openai", response_model=DebugResponse) 1a
17 async def debug_openai(self, image: UploadFile | None = File(None)): 1a
18 if not self.settings.OPENAI_ENABLED:
19 return DebugResponse(success=False, response="OpenAI is not enabled")
20 if image and not self.settings.OPENAI_ENABLE_IMAGE_SERVICES:
21 return DebugResponse(
22 success=False, response="Image was provided, but OpenAI image services are not enabled"
23 )
25 with get_temporary_path() as temp_path:
26 if image:
27 with temp_path.joinpath(image.filename).open("wb") as buffer:
28 shutil.copyfileobj(image.file, buffer)
29 local_image_path = temp_path.joinpath(image.filename)
30 local_images = [OpenAILocalImage(filename=os.path.basename(local_image_path), path=local_image_path)]
31 else:
32 local_images = None
34 try:
35 openai_service = OpenAIService()
36 prompt = openai_service.get_prompt("debug")
38 message = "Hello, checking to see if I can reach you."
39 if local_images:
40 message = f"{message} Here is an image to test with:"
42 response = await openai_service.get_response(
43 prompt, message, images=local_images, force_json_response=False
44 )
45 return DebugResponse(success=True, response=f'OpenAI is working. Response: "{response}"')
47 except Exception as e:
48 self.logger.exception(e)
49 return DebugResponse(
50 success=False,
51 response=f'OpenAI request failed. Full error has been logged. {e.__class__.__name__}: "{e}"',
52 )