mirror of
https://github.com/onyx-dot-app/onyx.git
synced 2026-10-22 19:32:55 -05:00
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
from sqlalchemy.orm import Session
|
|
|
|
from danswer.db.models import SlackBotConfig
|
|
from danswer.db.slack_bot_config import fetch_slack_bot_configs
|
|
|
|
|
|
VALID_SLACK_FILTERS = [
|
|
"answerable_prefilter",
|
|
"well_answered_postfilter",
|
|
"questionmark_prefilter",
|
|
]
|
|
|
|
|
|
def get_slack_bot_config_for_channel(
|
|
channel_name: str | None, db_session: Session
|
|
) -> SlackBotConfig | None:
|
|
if not channel_name:
|
|
return None
|
|
|
|
slack_bot_configs = fetch_slack_bot_configs(db_session=db_session)
|
|
for config in slack_bot_configs:
|
|
if channel_name in config.channel_config["channel_names"]:
|
|
return config
|
|
|
|
return None
|
|
|
|
|
|
def validate_channel_names(
|
|
channel_names: list[str],
|
|
current_slack_bot_config_id: int | None,
|
|
db_session: Session,
|
|
) -> list[str]:
|
|
"""Make sure that these channel_names don't exist in other slack bot configs.
|
|
Returns a list of cleaned up channel names (e.g. '#' removed if present)"""
|
|
slack_bot_configs = fetch_slack_bot_configs(db_session=db_session)
|
|
cleaned_channel_names = [
|
|
channel_name.lstrip("#").lower() for channel_name in channel_names
|
|
]
|
|
for slack_bot_config in slack_bot_configs:
|
|
if slack_bot_config.id == current_slack_bot_config_id:
|
|
continue
|
|
|
|
for channel_name in cleaned_channel_names:
|
|
if channel_name in slack_bot_config.channel_config["channel_names"]:
|
|
raise ValueError(
|
|
f"Channel name '{channel_name}' already exists in "
|
|
"another slack bot config"
|
|
)
|
|
|
|
return cleaned_channel_names
|