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]
link(session: Session, notification: Notification, workspace: WorkspaceBase, commit: bool = True) -> WorkspaceNotification
¶
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
¶
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).