pvl/verkko/wsgi.py
author Tero Marttila <terom@paivola.fi>
Wed, 24 Oct 2012 19:42:16 +0300
changeset 26 589249097230
parent 7 7baf4cccb4a9
child 151 8a9f01036091
permissions -rw-r--r--
hosts: convert realtime list into table; breaks animations :(
0
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
import werkzeug
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
from werkzeug.wrappers import Request, Response
4
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
     3
from werkzeug.exceptions import HTTPException
0
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
import logging; log = logging.getLogger('pvl.verkko.wsgi')
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
4
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
     7
from pvl.verkko import db as database, urls, web
0
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
2
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
     9
class Application (object) :
4
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    10
    urls = urls.urls
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    11
2
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    12
    def __init__ (self, db) :
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    13
        """
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    14
            Initialize app with db.
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    15
        """
0
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
2
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    17
        self.db = database.Database(db)
0
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
4
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    19
    def respond (self, request) :
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    20
        """
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    21
            Lookup Request -> web.Handler, params
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    22
        """
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    23
        
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    24
        # bind to request
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    25
        urls = self.urls.bind_to_environ(request)
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    26
        
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    27
        # lookup
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    28
        handler, params = urls.match()
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    29
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    30
        # handler instance
7
7baf4cccb4a9 move Index to urls; fix self.url(sort=...)
Tero Marttila <terom@paivola.fi>
parents: 4
diff changeset
    31
        handler = handler(self, request, urls, params)
4
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    32
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    33
        try :
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    34
            # apply
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    35
            return handler.respond()
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    36
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    37
        finally :
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    38
            handler.cleanup()
4
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    39
2
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    40
    @Request.application
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    41
    def __call__ (self, request) :
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    42
        """
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    43
            WSGI entry point, werkzeug Request -> Response
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    44
        """
0
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
4
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    46
        try :
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    47
            return self.respond(request)
2
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    48
        
4
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    49
        except HTTPException as ex :
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
    50
            return ex
2
b0659c867226 fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    51