diff --git a/boards/abstracts/settingsmanager.py b/boards/abstracts/settingsmanager.py --- a/boards/abstracts/settingsmanager.py +++ b/boards/abstracts/settingsmanager.py @@ -206,8 +206,13 @@ class SessionSettingsManager(SettingsMan class DatabaseSettingsManager(SessionSettingsManager): def __init__(self, session): super().__init__(session) + + # First time a user accesses the server, his session is not saved + # and does not have the key yet. In order to create the settings object + # we need to save it manually if not session.session_key: session.save() + self.settings, created = UserSettings.objects.get_or_create(session_key=session.session_key) def add_fav_tag(self, tag): @@ -239,8 +244,9 @@ class DatabaseSettingsManager(SessionSet def get_settings_manager(request) -> SettingsManager: """ - Get settings manager based on the request object. Currently only - session-based manager is supported. In the future, cookie-based or - database-based managers could be implemented. + Get settings manager based on the request object. Currently database-based + settings manager is implemented over the session-based one (settings that + are not connected to the database in any way are stored in session). Pure + session-based manager is also supported but not used by default. """ return DatabaseSettingsManager(request.session)