import time import sqlite3 class session_info(): def __init__(self): self._logged_in = False self.username = None self.server_code = None self.cycle_count = 0 self.auth_tokens = [] self.transfer = None self.status = None @property def logged_in(self): return self._logged_in @logged_in.setter def logged_in(self, value): self._logged_in = value self.cycle_count += 1 @property def transfer(self): return self._transfer @transfer.setter def transfer(self, value): self._transfer = value self.cycle_count += 1 def clear(self): db().execute("DELETE FROM tokens") self.__init__() class wait(): def __init__(self, session): self.session = session self.update() def update(self): self.last = self.session.cycle_count self.current = self.session.cycle_count def current_update(self): self.current = self.session.cycle_count def wait(self, status=None): while self.last == self.current: time.sleep(0.05) self.current_update() return def wait_username(self): while not self.session.username: time.sleep(0.05) return class db(): def __init__(self): self.path = "./data/database.db" self._create() def _create(self): con, cur = self._connect() cur.execute("""CREATE TABLE IF NOT EXISTS tokens ( token TEXT NOT NULL PRIMARY KEY, username TEXT NOT NULL, expire TEXT NOT NULL )""") cur.execute("""CREATE TABLE IF NOT EXISTS settings ( title TEXT NOT NULL PRIMARY KEY, description TEXT, state BOOL, value TEXT, icon TEXT )""") self._close(con) def _connect(self): con = sqlite3.connect(self.path) cur = con.cursor() return con, cur def execute(self, command, values=None): rez = None con, cur = self._connect() if values: cur.execute(command, values) else: cur.execute(command) if "SELECT" in command: rez = cur.fetchall() self._close(con) if rez: return rez def _commit(self, con): con.commit() def _close(self, con): con.commit() con.close() class setting(): def __init__(self, title): self.title = title self.db = db() self.__fetch() def __fetch(self): setting_data = self.db.execute("SELECT * FROM settings WHERE title = ?", (self.title,)) if setting_data: self.title = setting_data[0][0] self.description = setting_data[0][1] if not self.description: self.description = "" if setting_data[0][3] != None: self.value = setting_data[0][3] self.type = "text_field" else: self.value = setting_data[0][2] self.type = "swtich" if setting_data[0][4] != None: self.icon = setting_data[0][4] else: self.icon = "cog" def change_value(self, new_value): if self.type == "swtich" and isinstance(new_value, bool): self.db.execute("UPDATE settings SET state = ?", (new_value,)) elif self.type == "text_field" and isinstance(new_value, str): self.db.execute("UPDATE settings SET value = ?", (new_value,))