New year, big checkin
[jamaendo] / jamaui / settings.py
1 import cPickle, os
2 import logging
3
4 VERSION = 1
5 log = logging.getLogger(__name__)
6
7 class Settings(object):
8     defaults = {
9         'volume':0.5,
10         'user':None,
11         'favorites':set([]) # local favorites - until we can sync back
12         }
13
14     def __init__(self):
15         self.__savename = "/tmp/jaemendo_uisettings"
16         for k,v in self.defaults.iteritems():
17             setattr(self, k, v)
18
19     def set_filename(self, savename):
20         self.__savename = savename
21
22     def favorite(self, album):
23         self.favorites.add(('album', album.ID))
24         self.save()
25
26     def load(self):
27         if not os.path.isfile(self.__savename):
28             return
29         try:
30             f = open(self.__savename)
31             settings = cPickle.load(f)
32             f.close()
33
34             if settings['version'] > VERSION:
35                 log.warning("Settings version %s higher than current version (%s)",
36                             settings['version'], VERSION)
37
38             for k in self.defaults.keys():
39                 if k in settings:
40                     setattr(self, k, settings[k])
41         except Exception, e:
42             log.exception('failed to load settings')
43
44     def save(self):
45         try:
46             settings = {
47                 'version':VERSION,
48                 }
49             for k in self.defaults.keys():
50                 settings[k] = getattr(self, k)
51             f = open(self.__savename, 'w')
52             cPickle.dump(settings, f)
53             f.close()
54         except Exception, e:
55             log.exception('failed to save settings')
56
57 settings = Settings()