]>
Commit | Line | Data |
---|---|---|
940227cb MT |
1 | #!/usr/bin/python |
2 | ||
11347e46 | 3 | from .misc import Object |
940227cb | 4 | |
9068dba1 MT |
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 = {} | |
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() |