open-notebook/api/settings_service.py
Luis Novo b7e656a319
Version 1 (#160)
New front-end
Launch Chat API
Manage Sources
Enable re-embedding of all contents
Sources can be added without a notebook now
Improved settings
Enable model selector on all chats
Background processing for better experience
Dark mode
Improved Notes

Improved Docs: 
- Remove all Streamlit references from documentation
- Update deployment guides with React frontend setup
- Fix Docker environment variables format (SURREAL_URL, SURREAL_PASSWORD)
- Update docker image tag from :latest to :v1-latest
- Change navigation references (Settings → Models to just Models)
- Update development setup to include frontend npm commands
- Add MIGRATION.md guide for users upgrading from Streamlit
- Update quick-start guide with correct environment variables
- Add port 5055 documentation for API access
- Update project structure to reflect frontend/ directory
- Remove outdated source-chat documentation files
2025-10-18 12:46:22 -03:00

58 lines
No EOL
2.5 KiB
Python

"""
Settings service layer using API.
"""
from loguru import logger
from api.client import api_client
from open_notebook.domain.content_settings import ContentSettings
class SettingsService:
"""Service layer for settings operations using API."""
def __init__(self):
logger.info("Using API for settings operations")
def get_settings(self) -> ContentSettings:
"""Get application settings."""
settings_response = api_client.get_settings()
settings_data = settings_response if isinstance(settings_response, dict) else settings_response[0]
# Create ContentSettings object from API response
settings = ContentSettings(
default_content_processing_engine_doc=settings_data.get("default_content_processing_engine_doc"),
default_content_processing_engine_url=settings_data.get("default_content_processing_engine_url"),
default_embedding_option=settings_data.get("default_embedding_option"),
auto_delete_files=settings_data.get("auto_delete_files"),
youtube_preferred_languages=settings_data.get("youtube_preferred_languages"),
)
return settings
def update_settings(self, settings: ContentSettings) -> ContentSettings:
"""Update application settings."""
updates = {
"default_content_processing_engine_doc": settings.default_content_processing_engine_doc,
"default_content_processing_engine_url": settings.default_content_processing_engine_url,
"default_embedding_option": settings.default_embedding_option,
"auto_delete_files": settings.auto_delete_files,
"youtube_preferred_languages": settings.youtube_preferred_languages,
}
settings_response = api_client.update_settings(**updates)
settings_data = settings_response if isinstance(settings_response, dict) else settings_response[0]
# Update the settings object with the response
settings.default_content_processing_engine_doc = settings_data.get("default_content_processing_engine_doc")
settings.default_content_processing_engine_url = settings_data.get("default_content_processing_engine_url")
settings.default_embedding_option = settings_data.get("default_embedding_option")
settings.auto_delete_files = settings_data.get("auto_delete_files")
settings.youtube_preferred_languages = settings_data.get("youtube_preferred_languages")
return settings
# Global service instance
settings_service = SettingsService()