From dc6e1fe6bd1bea77dde8f4dd9bf31f0b23cc6d9d Mon Sep 17 00:00:00 2001 From: Adam Skalicky Date: Mon, 10 Nov 2025 16:48:56 -0800 Subject: [PATCH] Fetched user_group_ids prior to looping through models with has_access to reduce DB hits for group membership --- backend/open_webui/utils/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/open_webui/utils/models.py b/backend/open_webui/utils/models.py index 6661fadb9e..8b53ce5193 100644 --- a/backend/open_webui/utils/models.py +++ b/backend/open_webui/utils/models.py @@ -12,6 +12,7 @@ from open_webui.functions import get_function_models from open_webui.models.functions import Functions from open_webui.models.models import Models +from open_webui.models.groups import Groups from open_webui.utils.plugin import ( @@ -356,6 +357,7 @@ def get_filtered_models(models, user): or (user.role == "admin" and not BYPASS_ADMIN_ACCESS_CONTROL) ) and not BYPASS_MODEL_ACCESS_CONTROL: filtered_models = [] + user_group_ids = {group.id for group in Groups.get_groups_by_member_id(user.id)} for model in models: if model.get("arena"): if has_access( @@ -364,6 +366,7 @@ def get_filtered_models(models, user): access_control=model.get("info", {}) .get("meta", {}) .get("access_control", {}), + user_group_ids=user_group_ids, ): filtered_models.append(model) continue @@ -377,6 +380,7 @@ def get_filtered_models(models, user): user.id, type="read", access_control=model_info.access_control, + user_group_ids=user_group_ids, ) ): filtered_models.append(model)