From 8dcaf666fb9f29a155d39f0dc3a3b6e2ea7407ba Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Wed, 23 Nov 2022 19:25:09 +0100 Subject: facilitate manual package updates after repository refreshals --- src/hydrilla/proxy/state_impl/concrete_state.py | 32 +++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'src/hydrilla/proxy/state_impl') diff --git a/src/hydrilla/proxy/state_impl/concrete_state.py b/src/hydrilla/proxy/state_impl/concrete_state.py index e97514a..89a2eb2 100644 --- a/src/hydrilla/proxy/state_impl/concrete_state.py +++ b/src/hydrilla/proxy/state_impl/concrete_state.py @@ -79,6 +79,14 @@ def _add_locale_column(cursor: sqlite3.Cursor) -> None: ''' ) +def _add_update_waiting_column(cursor: sqlite3.Cursor) -> None: + cursor.execute( + ''' + ALTER TABLE general ADD COLUMN + update_waiting BOOLEAN NOT NULL DEFAULT TRUE; + ''' + ) + def _prepare_database(connection: sqlite3.Connection) -> None: cursor = connection.cursor() @@ -120,6 +128,7 @@ def _prepare_database(connection: sqlite3.Connection) -> None: popup_settings_columns_present = False locale_column_present = False + update_waiting_column_present = False cursor.execute("PRAGMA TABLE_INFO('general')") for __cid, name, __type, __notnull, __dflt_value, __pk \ @@ -130,12 +139,18 @@ def _prepare_database(connection: sqlite3.Connection) -> None: if name == 'locale': locale_column_present = True + if name == 'update_waiting': + update_waiting_column_present = True + if not popup_settings_columns_present: _add_popup_settings_columns(cursor) if not locale_column_present: _add_locale_column(cursor) + if not update_waiting_column_present: + _add_update_waiting_column(cursor) + cursor.execute('COMMIT TRANSACTION;') except: cursor.execute('ROLLBACK TRANSACTION;') @@ -158,14 +173,15 @@ def load_settings(cursor: sqlite3.Cursor) -> st.HaketiloGlobalSettings: advanced_user, repo_refresh_seconds, mapping_use_mode, - locale + locale, + update_waiting FROM general; ''' ) (default_allow_scripts, advanced_user, repo_refresh_seconds, - mapping_use_mode, locale), = cursor.fetchall() + mapping_use_mode, locale, update_waiting), = cursor.fetchall() popup_settings_dict = {} @@ -196,6 +212,7 @@ def load_settings(cursor: sqlite3.Cursor) -> st.HaketiloGlobalSettings: repo_refresh_seconds = repo_refresh_seconds, mapping_use_mode = st.MappingUseMode(mapping_use_mode), locale = locale, + update_waiting = update_waiting, **popup_settings_dict ) @@ -221,6 +238,9 @@ class ConcreteHaketiloState(base.HaketiloStateWithFields): repo_id = repo_id ) + cursor.execute('UPDATE general SET update_waiting = TRUE;') + self.settings = dc.replace(self.settings, update_waiting=True) + self.rebuild_structures(rules=False) def count_orphan_items(self) -> st.OrphanItemsStats: @@ -267,8 +287,16 @@ class ConcreteHaketiloState(base.HaketiloStateWithFields): unlocked_required_mappings = unlocked_required_mappings ) + if unlocked_required_mappings == 'all_mappings_unlocked': + cursor.execute('UPDATE general SET update_waiting = FALSE;') + self.settings = dc.replace(self.settings, update_waiting=False) + self.rebuild_structures(rules=False) + def upate_all_items(self) -> None: + with self.cursor(transaction=True): + self.recompute_dependencies('all_mappings_unlocked') + def pull_missing_files(self) -> None: with self.cursor() as cursor: assert self.connection.in_transaction -- cgit v1.2.3