Source code for maeser.controllers.new_session_api
# SPDX-License-Identifier: LGPL-3.0-or-later
"""
This module handles API requests for creating new chat sessions.
It uses the ChatSessionManager to manage session creation and optionally integrates
with user management through Flask-Login's current_user.
"""
from maeser.chat.chat_session_manager import ChatSessionManager
from flask import request
from flask_login import current_user
[docs]
def controller(
session_handler: ChatSessionManager, user_management: bool = False
) -> dict[str, str]:
"""
Handle session requests and return the response from **session_handler**.
The response is formatted like so:
- ``{'response': '<response>'}``, if successful.
- ``{'response': 'invalid', 'details': 'Requested session type is not valid'}`` if unsuccessful.
Args:
session_handler (ChatSessionManager): The session handler instance.
user_management (bool): Flag to indicate if user management is enabled.
Returns:
dict: The response from **session_handler**.
"""
posty = request.get_json()
branch_action = posty["action"]
if posty["type"] == "new":
if user_management:
return {
"response": session_handler.get_new_session_id(
branch_action, current_user
)
} # type: ignore
return {"response": session_handler.get_new_session_id(branch_action)}
return {"response": "invalid", "details": "Requested session type is not valid"}