pvl/verkko/wsgi.py
author Tero Marttila <terom@fixme.fi>
Fri, 04 Jan 2013 23:47:31 +0200
changeset 68 bea41de5cc98
parent 26 589249097230
child 151 8a9f01036091
permissions -rw-r--r--
pvl.syslog.filter: reject empty progs
import werkzeug
from werkzeug.wrappers import Request, Response
from werkzeug.exceptions import HTTPException

import logging; log = logging.getLogger('pvl.verkko.wsgi')

from pvl.verkko import db as database, urls, web

class Application (object) :
    urls = urls.urls

    def __init__ (self, db) :
        """
            Initialize app with db.
        """

        self.db = database.Database(db)

    def respond (self, request) :
        """
            Lookup Request -> web.Handler, params
        """
        
        # bind to request
        urls = self.urls.bind_to_environ(request)
        
        # lookup
        handler, params = urls.match()

        # handler instance
        handler = handler(self, request, urls, params)

        try :
            # apply
            return handler.respond()

        finally :
            handler.cleanup()

    @Request.application
    def __call__ (self, request) :
        """
            WSGI entry point, werkzeug Request -> Response
        """

        try :
            return self.respond(request)
        
        except HTTPException as ex :
            return ex