]> git.ipfire.org Git - ipfire.org.git/blob - webapp/backend/settings.py
.gitignore: Add .vscode
[ipfire.org.git] / webapp / backend / settings.py
1 #!/usr/bin/python
2
3 from misc import Object
4
5 class Settings(Object):
6 def init(self):
7 """
8 Initialize the settings dictionary by fetching the
9 entire table from the database.
10 """
11 self.__settings = {}
12
13 query = self.db.query("SELECT k, v FROM settings")
14
15 for row in query:
16 self.__settings[row.k] = row.v
17
18 def query(self, key):
19 return self.db.get("SELECT * FROM settings WHERE k=%s", key)
20
21 def get(self, key, default=None):
22 return self.__settings.get(key, default)
23
24 def get_int(self, key, default=None):
25 value = self.get(key)
26
27 if value is None:
28 return default
29
30 try:
31 return int(value)
32 except (TypeError, ValueError):
33 return default
34
35 def get_float(self, key):
36 value = self.get(key)
37
38 if value is None:
39 return default
40
41 try:
42 return float(value)
43 except (TypeError, ValueError):
44 return default
45
46 def set(self, key, value):
47 oldvalue = self.get(key)
48
49 if value == oldvalue:
50 return
51
52 if oldvalue:
53 self.db.execute("UPDATE settings SET v = %s WHERE k = %s", value, key)
54 else:
55 self.db.execute("INSERT INTO settings(k, v) VALUES(%s, %s)", key, value)
56
57 def get_all(self):
58 return self.__settings.copy()