Projet

Général

Profil

Télécharger (1,39 ko) Statistiques
| Branche: | Tag: | Révision:

root / entrouvert / wsgi / middleware.py @ b894c577

1
from urllib import quote
2
import json
3
import pkg_resources
4

    
5
class VersionMiddleware(object):
6
    ENTROUVERT_PACKAGES = [
7
            'wcs',
8
            'wcs_au_quotidien',
9
            'authentic2',
10
            'polynum',
11
            'appli_project',
12
            'passerelle',
13
            'docbow',
14
            'calebasse',
15
            'compte_agglo_montpellier',
16
            'entrouvert',
17
            'nose',
18
    ]
19
    VERSION = 1
20

    
21
    def __init__(self, application):
22
        self.application = application
23

    
24
    def __call__(self, environ, start_response):
25
        path = ''
26
        path += quote(environ.get('SCRIPT_NAME', ''))
27
        path += quote(environ.get('PATH_INFO', ''))
28
        method = environ.get('REQUEST_METHOD', 'GET')
29
        if method == 'GET' and path == '/__version__':
30
            packages_version = self.get_packages_version()
31
            start_response('200 Ok', [('content-type', 'application/json')])
32
            return [json.dumps(packages_version)]
33
        return self.application(environ, start_response)
34

    
35
    @classmethod
36
    def get_packages_version(cls):
37
        packages_version = {}
38
        for distribution in tuple(pkg_resources.WorkingSet()):
39
            project_name = distribution.project_name
40
            version = distribution.version
41
            if project_name in cls.ENTROUVERT_PACKAGES:
42
                packages_version[project_name] = version
43
        return packages_version
(2-2/3)