Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/admin/admin_debug.py: 36%
34 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1import os
2import shutil
4from fastapi import APIRouter, File, UploadFile
6from mealie.core.dependencies.dependencies import get_temporary_path
7from mealie.routes._base import BaseAdminController, controller
8from mealie.schema.admin.debug import DebugResponse
9from mealie.services.openai import OpenAILocalImage, OpenAIService
11router = APIRouter(prefix="/debug")
14@controller(router)
15class AdminDebugController(BaseAdminController):
16 @router.post("/openai", response_model=DebugResponse)
17 async def debug_openai(self, image: UploadFile | None = File(None)):
18 if not self.settings.OPENAI_ENABLED: 18 ↛ 20line 18 didn't jump to line 20 because the condition on line 18 was always true
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 )