Projet

Général

Profil

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

root / entrouvert / wsgi / middleware.py @ 8b780259

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
            'python-entrouvert',
17
            'nose',
18
            'portail-citoyen',
19
            'portail-citoyen-announces',
20
            'compte-meyzieu',
21
    ]
22
    VERSION = 1
23

    
24
    def __init__(self, application):
25
        self.application = application
26

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

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