author | Tero Marttila <terom@fixme.fi> |
Sat, 07 Feb 2009 06:54:52 +0200 | |
branch | sites |
changeset 30 | a86a25a9f75b |
parent 10 | d83b10c210e3 |
child 31 | 107062ebb6f9 |
permissions | -rw-r--r-- |
7 | 1 |
""" |
2 |
The actual application behaviour, i.e. generating a Response from a Request :) |
|
3 |
""" |
|
4 |
||
30
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
5 |
class Handler (object) : |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
6 |
""" |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
7 |
A handler handles a Request, returning a Response |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
8 |
""" |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
9 |
|
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
10 |
def __init__ (self, func, *args, **kwargs) : |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
11 |
self.func = func |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
12 |
self.args = args |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
13 |
self.kwargs = kwargs |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
14 |
|
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
15 |
def handle_request (self, request) : |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
16 |
""" |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
17 |
Handle the request, returning a Response object |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
18 |
""" |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
19 |
|
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
20 |
return self.func(request, *self.args, **self.kwargs) |
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
21 |
|
a86a25a9f75b
route requests through sites/www.qmsk.net, although still hardcoded
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
22 |
# fs handler |
9 | 23 |
import http, page, menu, template |
7 | 24 |
|
25 |
def handle_request (request) : |
|
26 |
""" |
|
27 |
Take the Request, and return a Response |
|
28 |
""" |
|
29 |
||
8
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
30 |
# determine the page name |
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
31 |
page_name = request.get_page_name() |
7 | 32 |
|
8
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
33 |
# get the page handler |
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
34 |
p = page.lookup(page_name) |
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
35 |
|
10
d83b10c210e3
some vodoo for generating correct URLs
Tero Marttila <terom@fixme.fi>
parents:
9
diff
changeset
|
36 |
# bind to request |
d83b10c210e3
some vodoo for generating correct URLs
Tero Marttila <terom@fixme.fi>
parents:
9
diff
changeset
|
37 |
p.bind_request(request) |
d83b10c210e3
some vodoo for generating correct URLs
Tero Marttila <terom@fixme.fi>
parents:
9
diff
changeset
|
38 |
|
8
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
39 |
# render the template |
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
40 |
response_data = template.render("layout", |
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
41 |
site_root_url = request.get_script_dir(), |
10
d83b10c210e3
some vodoo for generating correct URLs
Tero Marttila <terom@fixme.fi>
parents:
9
diff
changeset
|
42 |
site_page_url = request.get_page_prefix(), |
9 | 43 |
page = p, |
44 |
menu = menu.Menu(p), |
|
8
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
45 |
) |
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
46 |
|
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
47 |
# return the response |
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
48 |
return http.Response(response_data) |
0ce1f471e9d7
and it works, a lot better than before
Tero Marttila <terom@fixme.fi>
parents:
7
diff
changeset
|
49 |