pvl/verkko/wsgi.py
author Tero Marttila <terom@paivola.fi>
Wed, 10 Oct 2012 22:45:50 +0300
changeset 3 5990b188c54b
parent 2 b0659c867226
child 4 b09436772d46
permissions -rw-r--r--
web.Handler
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
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
from werkzeug.utils import redirect
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
1
731d2df704f0 fixup index + non-chunked response (?) + hosts + evil hardcoded db url
Tero Marttila <terom@paivola.fi>
parents: 0
diff changeset
     7
from pvl.verkko import db as database, web, hosts
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) :
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
    10
    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
    11
        """
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
            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
    13
        """
0
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
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
    15
        self.db = database.Database(db)
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
    @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
    18
    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
    19
        """
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
    20
            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
    21
        """
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
    22
        
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
    23
        # path?
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
    24
        path = request.path.strip('/')
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
    25
        
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
    26
        if path :
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
    27
            path = path.split('/')
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
    28
        else :
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
    29
            path = []
0
91c739202f06 initial code for dhcp hosts
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
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
    31
        log.debug("path: %s", path)
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
    32
        
3
5990b188c54b web.Handler
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    33
        # lookup handler/respond
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
    34
        if not path :
3
5990b188c54b web.Handler
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    35
            handler = web.Index
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
    36
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
    37
        elif path[0] == 'hosts' :
3
5990b188c54b web.Handler
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    38
            handler = hosts.Handler
5990b188c54b web.Handler
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    39
            path.pop(0)
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
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
        else :
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
            return Response("Not Found", status=404)
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
        
3
5990b188c54b web.Handler
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    44
        return handler(self, request, path).respond()