Package flumotion :: Package project :: Module project
[hide private]

Source Code for Module flumotion.project.project

 1  # -*- Mode: Python -*- 
 2  # vi:si:et:sw=4:sts=4:ts=4 
 3  # 
 4  # Flumotion - a streaming media server 
 5  # Copyright (C) 2004,2005,2006,2007 Fluendo, S.L. (www.fluendo.com). 
 6  # All rights reserved. 
 7   
 8  # This file may be distributed and/or modified under the terms of 
 9  # the GNU General Public License version 2 as published by 
10  # the Free Software Foundation. 
11  # This file is distributed without any warranty; without even the implied 
12  # warranty of merchantability or fitness for a particular purpose. 
13  # See "LICENSE.GPL" in the source distribution for more information. 
14   
15  # Licensees having purchased or holding a valid Flumotion Advanced 
16  # Streaming Server license may use this file in accordance with the 
17  # Flumotion Advanced Streaming Server Commercial License Agreement. 
18  # See "LICENSE.Flumotion" in the source distribution for more information. 
19   
20  # Headers in this file shall remain intact. 
21   
22  import os 
23  import sys 
24   
25  from flumotion.common import package, errors, log 
26  from flumotion.configure import configure 
27   
28  import flumotion.project 
29   
30  __version__ = "$Rev$" 
31   
32   
33 -def list():
34 """ 35 Returns a list of all add-on projects seen by Flumotion. 36 """ 37 projects = [n for n in sys.modules.keys() 38 if n.startswith('flumotion.project')] 39 paths = flumotion.project.__path__ 40 modules = [] 41 for path in paths: 42 modules.extend(package.findEndModuleCandidates( 43 os.path.abspath(os.path.join(path, '..', '..')), 44 prefix='flumotion.project')) 45 46 modules.remove('flumotion.project.project') 47 48 return [n[len('flumotion.project.'):] for n in modules]
49 50
51 -def get(project, attribute, default=None):
52 """ 53 Get an attribute from a project's module. 54 """ 55 log.debug('project', 'Getting attribute %s from project %s', 56 attribute, project) 57 58 # short-circuit flumotion, the core project 59 if project == 'flumotion': 60 return getattr(configure, attribute, default) 61 62 moduleName = "flumotion.project.%s" % project 63 try: 64 exec("import %s" % moduleName) 65 except ImportError, e: 66 msg = ('Could not load project %s: %s' % 67 (project, log.getExceptionMessage(e))) 68 log.warning('project', msg) 69 raise errors.NoProjectError(project, msg) 70 except SyntaxError, e: 71 msg = ('Syntax error while loading project %s: %s' % 72 (project, log.getExceptionMessage(e))) 73 log.warning('project', msg) 74 raise errors.NoProjectError(project, msg) 75 m = sys.modules[moduleName] 76 return getattr(m, attribute, default)
77