Changeset 9:69d5a3b74c6a in mailjam for postman/config.py


Ignore:
Timestamp:
May 19, 2012, 10:14:00 AM (12 years ago)
Author:
Francisco de Borja Lopez Rio <borja@…>
Branch:
default
Phase:
public
Message:

Added a new method to the config module that parses the configuration file and returns configuration parameters. Modified the daemon.Postman and daemon.PostmanDaemon so they load their configs from the config file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • postman/config.py

    r2 r9  
    22
    33import os
     4from ConfigParser import SafeConfigParser
     5
     6def get_config_parameters(section=None, configfile=None):
     7    if not configfile:
     8        # If there is no config file defined, try with the usual places
     9        # for config files, if there is no config file there, try to load
     10        # the one provided with postman sources
     11        default_paths = ['/usr/local/etc/postman/postman.conf',
     12                         '/usr/local/etc/postman.conf',
     13                         '/etc/postman/postman.conf',
     14                         '/etc/postman.conf',
     15                         os.path.join(os.path.dirname(__file__),
     16                                      '../conf/postman.conf')]
     17        for path in default_paths:
     18            if os.path.exists(path):
     19                configfile = path
     20                break
     21           
     22    # if there is no config file now, raise an exception, as we need one
     23    if not configfile:
     24        raise IOError('ERROR - Can not find postman.conf in your environment')
     25
     26    available_sections = ['xmlrpc_server', 'storage', 'archive',
     27                          'mailing_lists', 'members']
     28
     29    config = {}
     30
     31    parser = SafeConfigParser()
     32    # FIXME: we should check here if the config file has been read correctly,
     33    # instead of letting an exception to pass through
     34    parser.read(configfile)
     35
     36    if section in available_sections:
     37        for name, value in parser.items(section):
     38            config[name] = value
     39        return config
     40
     41    # if no section (or an invalid section) is provided, return an empty config
     42    # set
     43    return config
     44
    445
    546# The default path for storage files
Note: See TracChangeset for help on using the changeset viewer.