1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import os
23 import sys
24
25 from flumotion.common import package, errors
26
27 import flumotion.project
28
30 """
31 Returns a list of all add-on projects seen by Flumotion.
32 """
33 projects = [n for n in sys.modules.keys() if n.startswith('flumotion.project')]
34 paths = flumotion.project.__path__
35 modules = []
36 for path in paths:
37 modules.extend(package.findEndModuleCandidates(
38 os.path.abspath(os.path.join(path, '..', '..')),
39 prefix='flumotion.project'))
40
41 modules.remove('flumotion.project.project')
42
43 return [n[len('flumotion.project.'):] for n in modules]
44
45 -def get(project, attribute, default=None):
46 """
47 Get an attribute from a project's module.
48 """
49 moduleName = "flumotion.project.%s" % project
50 try:
51 exec("import %s" % moduleName)
52 except ImportError:
53 raise errors.NoProjectError(moduleName)
54 except SyntaxError:
55 raise errors.NoProjectError(moduleName)
56 m = sys.modules[moduleName]
57 return getattr(m, attribute, default)
58