request: add a static_resource method to Request instances
parent
5529b66a57
commit
eb347e7fb5
|
@ -70,3 +70,42 @@ class Request(Request):
|
|||
if vars:
|
||||
url += '?' + urllib.urlencode(vars)
|
||||
return url
|
||||
|
||||
def static_resource(self, path):
|
||||
'''Return a URL to the given static resource
|
||||
|
||||
This method combines the defined static resource root URL with the
|
||||
given path to construct a complete URL to the given resource. The
|
||||
resource root should be defined in the application configuration
|
||||
dictionary, under the name ``milla.static_root``, for example::
|
||||
|
||||
app = milla.Application(dispatcher)
|
||||
app.config.update({
|
||||
'milla.static_root': '/static/'
|
||||
})
|
||||
|
||||
Then, calling ``static_resource`` on a :py:class:`Request` object
|
||||
(i.e. inside a controller callable) would combine the given path
|
||||
with ``/static/``, like this::
|
||||
|
||||
request.static_resource('/images/foo.png')
|
||||
|
||||
would return ``/static/images/foo.png``.
|
||||
|
||||
If no ``milla.static_root`` key is found in the configuration
|
||||
dictionary, the path will be returned unaltered.
|
||||
|
||||
:param path: Path to the resource, relative to the defined root
|
||||
'''
|
||||
|
||||
try:
|
||||
root = self.config['milla.static_root']
|
||||
except KeyError:
|
||||
return path
|
||||
|
||||
if path.startswith('/'):
|
||||
path = path[1:]
|
||||
if not root.endswith('/'):
|
||||
root += '/'
|
||||
|
||||
return urlparse.urljoin(root, path)
|
||||
|
|
Loading…
Reference in New Issue