source: stamper/stamper/config.py@ 58:b24ccde3e229

Last change on this file since 58:b24ccde3e229 was 58:b24ccde3e229, checked in by Borja Lopez <borja@…>, 9 years ago

Use a config file for the setup of certain parameters, instead of
hardcoded global variables (ugh!)

File size: 1.9 KB
Line 
1
2import os
3from ConfigParser import SafeConfigParser
4
5
6class Config(object):
7 def __init__(self, path=None):
8 self.path = path
9 self.default_paths = [
10 os.path.expanduser('~/'),
11 os.path.join(os.path.dirname(__file__),'../etc')
12 ]
13 self.config = {}
14
15 @property
16 def filename(self):
17 return 'stamper.conf'
18
19 @property
20 def sections(self):
21 return['stamps', 'sum', 'charts', 'collector']
22
23 def look_for_config(self):
24 """
25 Look for the configuration file, following the path names listed in
26 the default paths
27 """
28 for path in self.default_paths:
29 full_path = os.path.join(path, self.filename)
30 if os.path.isfile(full_path):
31 self.path = full_path
32 return full_path
33 # if we reach here, self.path will be still None, no valid
34 # config files were found, and so we raise an exception
35 raise IOError('ERROR - Can not find ' + self.filename + \
36 ' in your environment')
37
38 def load(self):
39 if not self.path:
40 full_path = self.look_for_config()
41 parser = SafeConfigParser()
42 parser.read(full_path)
43 for section in self.sections:
44 self.config[section] = {}
45 for name, value in parser.items(section):
46 self.config[section][name] = value
47 return self.config
48
49 def get(self, section, parameter=None):
50 if section not in self.config.keys():
51 # perhaps the config hasn't been loaded yet
52 self.load()
53
54 if section not in self.sections:
55 raise IndexError('ERROR - ' + section + \
56 ' is not one of the available sections: ' + \
57 ', '.join(self.sections))
58
59 if parameter:
60 return self.config[section][parameter]
61
62 return self.config[section]
Note: See TracBrowser for help on using the repository browser.