Skip to content

Commit

Permalink
Fix (nearly) endless database upgrade dialogs (#2916)
Browse files Browse the repository at this point in the history
  • Loading branch information
soininen authored Aug 9, 2024
2 parents deb9cbe + 57fa23a commit 41790c3
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 10 deletions.
6 changes: 3 additions & 3 deletions spinetoolbox/project_item/logging_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ def has_filters(self):
url = resource.url
if not url:
continue
db_map = self._get_db_map(url, ignore_version_error=True)
db_map = self._get_db_map(url)
if db_map is None:
continue
known_filters = self._filter_settings.known_filters.get(resource.label, {})
Expand All @@ -184,9 +184,9 @@ def has_filters(self):
return True
return False

def _get_db_map(self, url, ignore_version_error=False):
def _get_db_map(self, url):
if url not in self._db_maps:
db_map = self._toolbox.db_mngr.get_db_map(url, self._toolbox, ignore_version_error=ignore_version_error)
db_map = self._toolbox.db_mngr.get_db_map(url, self._toolbox)
if db_map is None:
return None
self._db_maps[url] = db_map
Expand Down
4 changes: 3 additions & 1 deletion spinetoolbox/spine_db_editor/widgets/spine_db_editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,9 @@ def load_db_urls(self, db_url_codenames, create=False, update_history=True, wind
self._changelog.clear()
self._purge_change_notifiers()
for url, codename in db_url_codenames.items():
db_map = self.db_mngr.get_db_map(url, self, codename=codename, create=create, window=window)
db_map = self.db_mngr.get_db_map(
url, self, codename=codename, create=create, window=window, force_upgrade_prompt=True
)
if db_map is not None:
self.db_maps.append(db_map)
if not self.db_maps:
Expand Down
15 changes: 9 additions & 6 deletions spinetoolbox/spine_db_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ def __init__(self, settings, parent, synchronous=False):
self._validated_values = {"parameter_definition": {}, "parameter_value": {}}
self._parameter_type_validator = ParameterTypeValidator(self)
self._parameter_type_validator.validated.connect(self._parameter_value_validated)
self._no_prompt_urls = set()

def _connect_signals(self):
self.error_msg.connect(self.receive_error_msg)
Expand Down Expand Up @@ -316,6 +317,7 @@ def close_session(self, url):
Args:
url (str)
"""
self._no_prompt_urls.discard(url)
db_map = self._db_maps.pop(url, None)
if db_map is None:
return
Expand All @@ -334,17 +336,17 @@ def close_all_sessions(self):
for url in list(self._db_maps):
self.close_session(url)

def get_db_map(self, url, logger, ignore_version_error=False, window=False, codename=None, create=False):
def get_db_map(self, url, logger, window=False, codename=None, create=False, force_upgrade_prompt=False):
"""Returns a DatabaseMapping instance from url if possible, None otherwise.
If needed, asks the user to upgrade to the latest db version.
Args:
url (str, URL)
logger (LoggerInterface)
ignore_version_error (bool, optional)
window (bool, optional)
codename (str, NoneType, optional)
create (bool, optional)
window (bool)
codename (str, optional)
create (bool)
force_upgrade_prompt (bool)
Returns:
DatabaseMapping, NoneType
Expand All @@ -361,8 +363,9 @@ def get_db_map(self, url, logger, ignore_version_error=False, window=False, code
logger.msg_error.emit(err.msg)
return None
if prompt_data is not None:
if ignore_version_error:
if not force_upgrade_prompt and url in self._no_prompt_urls:
return None
self._no_prompt_urls.add(url)
title, text, option_to_kwargs, notes, preferred = prompt_data
kwargs = OptionsDialog.get_answer(
self.parent(), title, text, option_to_kwargs, notes=notes, preferred=preferred
Expand Down

0 comments on commit 41790c3

Please sign in to comment.