-
Notifications
You must be signed in to change notification settings - Fork 117
/
config.py
133 lines (104 loc) · 3.91 KB
/
config.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
##################################################################
# Copyright 2018 Open Source Geospatial Foundation and others #
# licensed under GPL 2.0, Please consult LICENSE.txt for details #
##################################################################
"""Configuration handler
.. param:: config
Configuration object
"""
import os,sys
import pywps
import ConfigParser
config = None
def getConfigValue(*args):
"""Get desired value from configuration files
:param section: section in configuration files
:type section: string
:param key: key in the section
:type key: string
:returns: value found in the configuration file
:rtype: string
"""
if not config:
loadConfiguration()
value = config.get(*args)
# Convert Boolean string to real Boolean values
if value.lower() == "false":
value = False
elif value.lower() == "true" :
value = True
return value
def setConfigValue(*args):
"""set desired value from configuration files
:param section: section in configuration files
:type section: string
:param option: option in the section
:type option: string
:param value: option in the section
:type value: string
:returns: value found in the configuration file
:rtype: string
"""
#Note this function is mainly used in the unnitest
#RawConfigParser.set(section, option, value)
if not config:
loadConfiguration()
value = config.set(*args)
# Convert Boolean string to real Boolean values
def loadConfiguration(cfgfiles=None):
"""Load PyWPS configuration from configuration files.
The later configuration file in the array overwrites configuration
from the first.
:param cfgfiles: list of file names, where to get configuration from.
:type cfgfiles: list of strings
"""
global config
if cfgfiles == None:
cfgfiles = _getDefaultConfigFilesLocation()
if type(cfgfiles) != type(()):
cfgfiles = (cfgfiles)
config = ConfigParser.ConfigParser()
config.read(cfgfiles)
def _getDefaultConfigFilesLocation():
"""Get the locations of the standard configuration files. This are
Unix/Linux:
1. `pywps/default.cfg`
2. `/etc/pywps.cfg`
3. `pywps/etc/pywps.cfg`
4. `$HOME/.pywps.cfg`
Windows:
1. `pywps\\default.cfg`
2. `pywps\\etc\\default.cfg`
Both:
1. `$PYWPS_CFG environment variable`
:returns: configuration files
:rtype: list of strings
"""
# configuration file as environment variable
if os.getenv("PYWPS_CFG"):
# Windows or Unix
if sys.platform == 'win32':
PYWPS_INSTALL_DIR = os.path.abspath(os.path.join(os.getcwd(), os.path.dirname(sys.argv[0])))
cfgfiles = (os.path.join(PYWPS_INSTALL_DIR,"pywps","default.cfg"),
os.getenv("PYWPS_CFG"))
else:
cfgfiles = (os.path.join(pywps.__path__[0],"default.cfg"),
os.getenv("PYWPS_CFG"))
# try to eastimate the default location
else:
# Windows or Unix
if sys.platform == 'win32':
PYWPS_INSTALL_DIR = os.path.abspath(os.path.join(os.getcwd(), os.path.dirname(sys.argv[0])))
cfgfiles = (os.path.join(PYWPS_INSTALL_DIR,"pywps","default.cfg"),
os.path.join(PYWPS_INSTALL_DIR, "pywps","etc","pywps.cfg"))
else:
homePath = os.getenv("HOME")
if homePath:
cfgfiles = (os.path.join(pywps.__path__[0],"default.cfg"),
os.path.join(pywps.__path__[0],"etc", "pywps.cfg"), "/etc/pywps.cfg",
os.path.join(os.getenv("HOME"),".pywps.cfg" ))
else:
cfgfiles = (os.path.join(pywps.__path__[0],"default.cfg"),
os.path.join(pywps.__path__[0],"etc",
"pywps.cfg"), "/etc/pywps.cfg")
return cfgfiles