aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/proxy/state_impl/concrete_state.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/hydrilla/proxy/state_impl/concrete_state.py')
-rw-r--r--src/hydrilla/proxy/state_impl/concrete_state.py32
1 files changed, 30 insertions, 2 deletions
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