Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / config / middleware.py @ 57f7cb3f

History | View | Annotate | Download (2.36 KB)

1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3

    
4
"""WSGI middleware initialization for the vigiboard application."""
5
from vigiboard.config.app_cfg import base_config
6
from vigiboard.config.environment import load_environment
7
from vigiboard.config.vigiboard_conf import vigiboard_config
8
from paste.cascade import Cascade
9
from paste.urlparser import StaticURLParser
10

    
11
__all__ = ['make_app']
12

    
13
# Use base_config to setup the necessary PasteDeploy application factory. 
14
# make_base_app will wrap the TG2 app with all the middleware it needs. 
15
make_base_app = base_config.setup_tg_wsgi_app(load_environment)
16

    
17

    
18
def make_app(global_conf, full_stack=True, **app_conf):
19
    """
20
    Set vigiboard up with the settings found in the PasteDeploy configuration
21
    file used.
22
    
23
    :param global_conf: The global settings for vigiboard (those
24
        defined under the ``[DEFAULT]`` section).
25
    :type global_conf: dict
26
    :param full_stack: Should the whole TG2 stack be set up?
27
    :type full_stack: str or bool
28
    :return: The vigiboard application with all the relevant middleware
29
        loaded.
30
    
31
    This is the PasteDeploy factory for the vigiboard application.
32
    
33
    ``app_conf`` contains all the application-specific settings (those defined
34
    under ``[app:main]``.
35
    
36
   
37
    """
38
    # Petit hack permettant d'importer la configuration de vigiboard
39
    try:
40
        # chargement de l'application
41
        
42
        myapp = __import__(app_conf['appname'] ,globals(), locals(), [],-1)
43
        base_config.package = myapp
44

    
45
        # chargement de la conf de l'application
46
        myconf = __import__(
47
            app_conf['appname'] + '.config.' + app_conf['appname'] ,globals(), locals(), [app_conf['appname'] + '_config'],-1)
48
        myconf = getattr(myconf,app_conf['appname'] + '_config')
49
        for conf in myconf:
50
            app_conf[conf] = myconf[conf]
51
    except:
52
        print "vigilo-core runing without application"
53

    
54
    for i in vigiboard_config:
55
        app_conf[i] = vigiboard_config[i]
56

    
57
    # on cré l'application de base
58
    app = make_base_app(global_conf, full_stack=True, **app_conf)
59
    
60
    # on rajoute le path public de l'application
61
    import vigiboard
62
    app = Cascade([
63
        StaticURLParser(global_conf['here'] + '/' + app_conf['appname']  + '/public'),
64
        StaticURLParser(vigiboard.__file__.rsplit('/',1)[0] + '/public'),app]
65
        )
66
    
67
    return app