lib/handler.py
author Tero Marttila <terom@fixme.fi>
Fri, 06 Feb 2009 23:55:23 +0200
changeset 10 d83b10c210e3
parent 9 2a47b00f60b0
child 30 a86a25a9f75b
permissions -rw-r--r--
some vodoo for generating correct URLs
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    The actual application behaviour, i.e. generating a Response from a Request :)
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
9
2a47b00f60b0 page list + menu
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
     5
import http, page, menu, template
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
def handle_request (request) :
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
    """
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
        Take the Request, and return a Response
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    """
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
8
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    12
    # determine the page name
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    13
    page_name = request.get_page_name()
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
8
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    15
    # get the page handler
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    16
    p = page.lookup(page_name)
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    17
10
d83b10c210e3 some vodoo for generating correct URLs
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    18
    # bind to request
d83b10c210e3 some vodoo for generating correct URLs
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    19
    p.bind_request(request)
d83b10c210e3 some vodoo for generating correct URLs
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    20
8
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    21
    # render the template
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    22
    response_data = template.render("layout",
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    23
        site_root_url   = request.get_script_dir(),
10
d83b10c210e3 some vodoo for generating correct URLs
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    24
        site_page_url   = request.get_page_prefix(),
9
2a47b00f60b0 page list + menu
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    25
        page            = p,
2a47b00f60b0 page list + menu
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    26
        menu            = menu.Menu(p),
8
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    27
    )
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    28
    
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    29
    # return the response
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    30
    return http.Response(response_data)
0ce1f471e9d7 and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    31