|
27 | 27 | DEFAULT_ARENA_MODEL, |
28 | 28 | ) |
29 | 29 |
|
30 | | -from open_webui.env import BYPASS_MODEL_ACCESS_CONTROL, SRC_LOG_LEVELS, GLOBAL_LOG_LEVEL |
| 30 | +from open_webui.env import BYPASS_MODEL_ACCESS_CONTROL, SRC_LOG_LEVELS, GLOBAL_LOG_LEVEL, MODELS_CACHE_TTL |
31 | 31 | from open_webui.models.users import UserModel |
32 | 32 |
|
33 | 33 |
|
@@ -58,6 +58,10 @@ async def fetch_openai_models(request: Request, user: UserModel = None): |
58 | 58 | return openai_response["data"] |
59 | 59 |
|
60 | 60 |
|
| 61 | +@cached( |
| 62 | + ttl=MODELS_CACHE_TTL, |
| 63 | + key=lambda _, user: f"all_base_models_{user.id}" if user else "all_base_models", |
| 64 | +) |
61 | 65 | async def get_all_base_models(request: Request, user: UserModel = None): |
62 | 66 | openai_task = ( |
63 | 67 | fetch_openai_models(request, user) |
@@ -356,9 +360,11 @@ def check_model_access(user, model): |
356 | 360 | ): |
357 | 361 | raise Exception("Model not found") |
358 | 362 | else: |
359 | | - model_info = Models.get_model_by_id(model.get("id")) |
| 363 | + # model_info = Models.get_model_by_id(model.get("id")) |
| 364 | + model_info = None |
360 | 365 | if not model_info: |
361 | | - raise Exception("Model not found") |
| 366 | + return True |
| 367 | + # raise Exception("Model not found") |
362 | 368 | elif not ( |
363 | 369 | user.id == model_info.user_id |
364 | 370 | or has_access( |
@@ -395,10 +401,13 @@ def get_filtered_models(models, user): |
395 | 401 | or has_access( |
396 | 402 | user.id, |
397 | 403 | type="read", |
| 404 | + strict=False, |
398 | 405 | access_control=model_info.access_control, |
399 | 406 | ) |
400 | 407 | ): |
401 | 408 | filtered_models.append(model) |
| 409 | + else: |
| 410 | + filtered_models.append(model) |
402 | 411 |
|
403 | 412 | return filtered_models |
404 | 413 | else: |
|
0 commit comments