content.py
1.41 KB
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
from collections import namedtuple
from os.path import abspath, dirname, join
from yaml import safe_load as yaml_safe_load
# Move this to ENV, perhaps
base_url = "https://travel-footprint-calculator.irap.omp.eu"
PROJECT_DIRECTORY = abspath(dirname(dirname(__file__)))
def get_path(relative_path):
"""
Absolutize a relative path to this project's root directory.
"""
return abspath(join(PROJECT_DIRECTORY, relative_path))
with open(get_path('content.yml'), 'r') as content_file:
content_dict = yaml_safe_load(content_file.read())
class Struct(object):
def __new__(cls, data):
if isinstance(data, dict):
return namedtuple(
'Struct', data.keys()
)(
*(Struct(val) for val in data.values())
)
elif isinstance(data, (tuple, list, set, frozenset)):
return type(data)(Struct(_) for _ in data)
else:
return data
content = Struct(content_dict)
# For Python3?
# def dict2obj(d):
# """
# Convert a dict to an object
#
# >>> d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}
# >>> obj = dict2obj(d)
# >>> obj.b.c
# 2
# >>> obj.d
# ["hi", {'foo': "bar"}]
# """
# try:
# d = dict(d)
# except (TypeError, ValueError):
# return d
# obj = Object()
# for k, v in d.iteritems():
# obj.__dict__[k] = dict2obj(v)
# return obj