]> git.ipfire.org Git - ipfire.org.git/blame - src/backend/settings.py
Introduce autotools
[ipfire.org.git] / src / backend / settings.py
CommitLineData
940227cb
MT
1#!/usr/bin/python
2
9068dba1 3from misc import Object
940227cb 4
9068dba1
MT
5class 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 = {}
940227cb 12
9068dba1
MT
13 query = self.db.query("SELECT k, v FROM settings")
14
15 for row in query:
16 self.__settings[row.k] = row.v
940227cb
MT
17
18 def query(self, key):
19 return self.db.get("SELECT * FROM settings WHERE k=%s", key)
20
9068dba1
MT
21 def get(self, key, default=None):
22 return self.__settings.get(key, default)
940227cb 23
9068dba1 24 def get_int(self, key, default=None):
940227cb
MT
25 value = self.get(key)
26
27 if value is None:
9068dba1 28 return default
940227cb 29
9068dba1
MT
30 try:
31 return int(value)
32 except (TypeError, ValueError):
33 return default
940227cb
MT
34
35 def get_float(self, key):
36 value = self.get(key)
37
38 if value is None:
9068dba1 39 return default
940227cb 40
9068dba1
MT
41 try:
42 return float(value)
43 except (TypeError, ValueError):
44 return default
940227cb
MT
45
46 def set(self, key, value):
9068dba1 47 oldvalue = self.get(key)
940227cb 48
9068dba1
MT
49 if value == oldvalue:
50 return
51
52 if oldvalue:
53 self.db.execute("UPDATE settings SET v = %s WHERE k = %s", value, key)
940227cb 54 else:
9068dba1 55 self.db.execute("INSERT INTO settings(k, v) VALUES(%s, %s)", key, value)
940227cb
MT
56
57 def get_all(self):
9068dba1 58 return self.__settings.copy()