Skip to content

msflib.workspace_notifications

Public modules of the msflib-workspace-notifications package.

msflib.workspace_notifications.actions

UserNotificationAction

Bases: ModelAction[UserNotification, UserNotificationCreate, UserNotificationUpdate]

save_for_recipients(session: Session, notification: Notification, workspace: WorkspaceBase, recipients: list[UserBase] | None = None) -> list[UserNotification]

Create a notification and associate it with workspace-scoped receivers.

mark_one(session: Session, notification_id: int, owner: UserBase, status: bool | None = None) -> UserNotification | None

Mark a single notification for a workspace user as read/unread.

mark_all(session: Session, owner: UserBase, status: bool | None = None) -> list[UserNotification]

Mark all notifications for a workspace user as read/unread.

WorkspaceNotificationAction

Bases: ModelAction[WorkspaceNotification, WorkspaceNotificationCreate, WorkspaceNotificationUpdate]

Scope a notification to a workspace, hiding it from account-level routes.

get_notifications(session: Session, workspace_id: int, *, offset: int = 0, limit: int | None = 100, **filters: Any) -> list[Notification]

Return notifications scoped to a workspace, matching all filters on Notification.

get_notification(session: Session, workspace_id: int, **filters: Any) -> Notification | None

Return the first notification scoped to a workspace matching all filters.

msflib.workspace_notifications.config

msflib.workspace_notifications.models

msflib.workspace_notifications.router

admin_user_notification_router(get_session: Callable, get_current_user: Callable, get_current_workspace: Callable, admin_role_check: Callable, settings: Settings, user_action: UserAction | None = None, notification_action: NotificationAction | None = None, notification_create_type: type[Any] | None = None, prefix: str = '/admin/notification', tags: list[str] | None = None)

Create workspace-admin notification router.

admin_discord_channel_router(get_session: Callable, get_current_user: Callable, get_current_workspace: Callable, admin_role_check: Callable, user_action: UserAction | None = None, discord_channel_action: DiscordChannelAction | None = None, prefix: str = '/admin/discord', tags: list[str] | None = None)

Create workspace-admin Discord channel router.

msflib.workspace_notifications.service

DiscordNotifier(bot_token: str | None = None, channel_ids: list[int] | None = None)

Initialize Discord notification handler.

Parameters:

Name Type Description Default
bot_token str | None

Discord bot token

None
channel_ids list[int] | None

List of Discord channel IDs to send notifications to

None

set_channel_ids(channel_ids: list[int])

Set the Discord channel IDs to send notifications to.

initialize(session: Session, workspace: WorkspaceBase, resolve_channel_ids: Callable[[Session, WorkspaceBase], list[int]]) -> None

Initialize channel IDs for a workspace through an injected resolver.

send_message(title: str, message: str, sender_uname: str = 'System')

Send a Discord message.

create_discord_notifier(settings: SettingsBase) -> DiscordNotifier | None

Factory function to create a DiscordNotifier instance from settings.

dispatch_user_notifications(session: Session, settings: SettingsBase, data: NotificationCreate, n_type: NotificationType, workspace: WorkspaceBase, receivers: list[UserBase] | None = None, sender: UserBase | None = None, resolve_receivers: Callable[[list[UserBase]], list[UserBase]] | None = None, notification_action: NotificationAction | None = None, user_notification_action: UserNotificationAction | None = None, workspace_notification_action: WorkspaceNotificationAction | None = None, handler_factory: NotificationHandlerFactory | None = None) -> Notification | None

Dispatches notifications to users in a workspace. Handles in-app persistence and delegates to channel handlers (email, SMS, Discord).

discord

DiscordNotifier(bot_token: str | None = None, channel_ids: list[int] | None = None)

Initialize Discord notification handler.

Parameters:

Name Type Description Default
bot_token str | None

Discord bot token

None
channel_ids list[int] | None

List of Discord channel IDs to send notifications to

None
set_channel_ids(channel_ids: list[int])

Set the Discord channel IDs to send notifications to.

initialize(session: Session, workspace: WorkspaceBase, resolve_channel_ids: Callable[[Session, WorkspaceBase], list[int]]) -> None

Initialize channel IDs for a workspace through an injected resolver.

send_message(title: str, message: str, sender_uname: str = 'System')

Send a Discord message.

create_discord_notifier(settings: SettingsBase) -> DiscordNotifier | None

Factory function to create a DiscordNotifier instance from settings.

notification

NotificationHandlerFactory

Bases: NotificationHandlerFactory

Factory for creating workspace notification channel handlers.

dispatch_user_notifications(session: Session, settings: SettingsBase, data: NotificationCreate, n_type: NotificationType, workspace: WorkspaceBase, receivers: list[UserBase] | None = None, sender: UserBase | None = None, resolve_receivers: Callable[[list[UserBase]], list[UserBase]] | None = None, notification_action: NotificationAction | None = None, user_notification_action: UserNotificationAction | None = None, workspace_notification_action: WorkspaceNotificationAction | None = None, handler_factory: NotificationHandlerFactory | None = None) -> Notification | None

Dispatches notifications to users in a workspace. Handles in-app persistence and delegates to channel handlers (email, SMS, Discord).