|
ee2c14a2
»
|
simonw |
2009-05-09 |
Started to play around with... |
1 |
from django.conf.urls.defaults import patterns |
| |
2 |
from django.core import urlresolvers |
| |
3 |
|
| |
4 |
class Router(object): |
| |
5 |
""" |
| |
6 |
Convenient wrapper around Django's urlresolvers, allowing them to be used |
| |
7 |
from normal application code. |
| |
8 |
|
| |
9 |
from django.http import HttpResponse |
| |
10 |
from django_openid.request_factory import RequestFactory |
| |
11 |
from django.conf.urls.defaults import url |
| |
12 |
router = Router( |
| |
13 |
url('^foo/$', lambda r: HttpResponse('foo'), name='foo'), |
| |
14 |
url('^bar/$', lambda r: HttpResponse('bar'), name='bar') |
| |
15 |
) |
| |
16 |
rf = RequestFactory() |
| |
17 |
print router(rf.get('/bar/')) |
| |
18 |
""" |
| |
19 |
def __init__(self, *urlpairs): |
| |
20 |
self.urlpatterns = patterns('', *urlpairs) |
| |
21 |
self.resolver = urlresolvers.RegexURLResolver(r'^/', self) |
| |
22 |
|
| |
23 |
def handle(self, request): |
| |
24 |
path = request.path_info |
| |
25 |
callback, callback_args, callback_kwargs = self.resolver.resolve(path) |
| |
26 |
return callback(request, *callback_args, **callback_kwargs) |
| |
27 |
|
| |
28 |
def __call__(self, request): |
| |
29 |
return self.handle(request) |