This commit is contained in:
Timothy Jaeryang Baek
2026-02-25 15:15:59 -06:00
parent 636ab99ad8
commit 345f3e3559
12 changed files with 40 additions and 25 deletions
+2 -1
View File
@@ -1446,7 +1446,8 @@ USER_PERMISSIONS_NOTES_ALLOW_PUBLIC_SHARING = (
)
USER_PERMISSIONS_ACCESS_GRANTS_ALLOW_USERS = (
os.environ.get("USER_PERMISSIONS_ACCESS_GRANTS_ALLOW_USERS", "True").lower() == "true"
os.environ.get("USER_PERMISSIONS_ACCESS_GRANTS_ALLOW_USERS", "True").lower()
== "true"
)
+4 -6
View File
@@ -1048,11 +1048,9 @@ EXTERNAL_PWA_MANIFEST_URL = os.environ.get("EXTERNAL_PWA_MANIFEST_URL")
# Controls the default "Who can share to this group" setting for new groups.
# Env var values: "true" (anyone), "false" (no one), "members" (only group members).
_default_group_share = os.environ.get(
"DEFAULT_GROUP_SHARE_PERMISSION", "members"
).strip().lower()
_default_group_share = (
os.environ.get("DEFAULT_GROUP_SHARE_PERMISSION", "members").strip().lower()
)
DEFAULT_GROUP_SHARE_PERMISSION = (
"members"
if _default_group_share == "members"
else _default_group_share == "true"
"members" if _default_group_share == "members" else _default_group_share == "true"
)
+12 -2
View File
@@ -225,8 +225,18 @@ def strip_user_access_grants(access_grants: Optional[list]) -> list:
grant
for grant in access_grants
if not (
(grant.get("principal_type") if isinstance(grant, dict) else getattr(grant, "principal_type", None)) == "user"
and (grant.get("principal_id") if isinstance(grant, dict) else getattr(grant, "principal_id", None)) != "*"
(
grant.get("principal_type")
if isinstance(grant, dict)
else getattr(grant, "principal_type", None)
)
== "user"
and (
grant.get("principal_id")
if isinstance(grant, dict)
else getattr(grant, "principal_id", None)
)
!= "*"
)
]
+1 -1
View File
@@ -551,7 +551,7 @@ async def update_knowledge_access_by_id(
user.id,
user.role,
form_data.access_grants,
"sharing.public_knowledge"
"sharing.public_knowledge",
)
AccessGrants.set_access_grants("knowledge", id, form_data.access_grants, db=db)
+1 -1
View File
@@ -570,7 +570,7 @@ async def update_model_access_by_id(
user.id,
user.role,
form_data.access_grants,
"sharing.public_models"
"sharing.public_models",
)
AccessGrants.set_access_grants(
+1 -1
View File
@@ -358,7 +358,7 @@ async def update_note_access_by_id(
user.id,
user.role,
form_data.access_grants,
"sharing.public_notes"
"sharing.public_notes",
)
AccessGrants.set_access_grants("note", id, form_data.access_grants, db=db)
+1 -1
View File
@@ -478,7 +478,7 @@ async def update_prompt_access_by_id(
user.id,
user.role,
form_data.access_grants,
"sharing.public_prompts"
"sharing.public_prompts",
)
AccessGrants.set_access_grants("prompt", prompt_id, form_data.access_grants, db=db)
+1 -1
View File
@@ -346,7 +346,7 @@ async def update_skill_access_by_id(
user.id,
user.role,
form_data.access_grants,
"sharing.public_skills"
"sharing.public_skills",
)
AccessGrants.set_access_grants("skill", id, form_data.access_grants, db=db)
+1 -1
View File
@@ -581,7 +581,7 @@ async def update_tool_access_by_id(
user.id,
user.role,
form_data.access_grants,
"sharing.public_tools"
"sharing.public_tools",
)
AccessGrants.set_access_grants("tool", id, form_data.access_grants, db=db)
+13 -3
View File
@@ -195,6 +195,7 @@ def migrate_access_control(
data[grants_key] = grants
data.pop(ac_key, None)
from open_webui.models.access_grants import (
has_public_read_access_grant,
has_user_access_grant,
@@ -228,8 +229,18 @@ def filter_allowed_access_grants(
grant
for grant in access_grants
if not (
(grant.get("principal_type") if isinstance(grant, dict) else getattr(grant, "principal_type", None)) == "user"
and (grant.get("principal_id") if isinstance(grant, dict) else getattr(grant, "principal_id", None)) == "*"
(
grant.get("principal_type")
if isinstance(grant, dict)
else getattr(grant, "principal_type", None)
)
== "user"
and (
grant.get("principal_id")
if isinstance(grant, dict)
else getattr(grant, "principal_id", None)
)
== "*"
)
]
@@ -243,4 +254,3 @@ def filter_allowed_access_grants(
access_grants = strip_user_access_grants(access_grants)
return access_grants
+2 -4
View File
@@ -4321,8 +4321,7 @@ async def streaming_chat_response_handler(response, ctx):
code = sanitize_code(code)
if CODE_INTERPRETER_BLOCKED_MODULES:
blocking_code = textwrap.dedent(
f"""
blocking_code = textwrap.dedent(f"""
import builtins
BLOCKED_MODULES = {CODE_INTERPRETER_BLOCKED_MODULES}
@@ -4338,8 +4337,7 @@ async def streaming_chat_response_handler(response, ctx):
return _real_import(name, globals, locals, fromlist, level)
builtins.__import__ = restricted_import
"""
)
""")
code = blocking_code + "\n" + code
if (
+1 -3
View File
@@ -277,9 +277,7 @@ def get_last_user_message(messages: list[dict]) -> Optional[str]:
return get_content_from_message(message)
def set_last_user_message_content(
content: str, messages: list[dict]
) -> list[dict]:
def set_last_user_message_content(content: str, messages: list[dict]) -> list[dict]:
"""
Replace the text content of the last user message in-place.
Handles both plain-string and list-of-parts content formats.