i592: Use full path in various places

When running mediagoblin in a sub path on a web server,
most things inside mediagoblin need the "inside path", but
when generating URLs for the webbrowser, full paths are
needed.

urlgen and routes already do that.

Some (mostly pagination and login) need the URL of the
current page. They used request.path_info. But this is the
"inside" path, not the full.

So now there is request.full_path and its used in various
places.
This commit is contained in:
Elrond 2011-10-03 14:01:13 +02:00
parent 4d7a93a493
commit 05788ef450
4 changed files with 14 additions and 3 deletions

View File

@ -117,6 +117,17 @@ class MediaGoblinApp(object):
path_info = request.path_info
route_match = self.routing.match(path_info)
# By using fcgi, mediagoblin can run under a base path
# like /mediagoblin/. request.path_info contains the
# path inside mediagoblin. If the something needs the
# full path of the current page, that should include
# the basepath.
# Note: urlgen and routes are fine!
request.full_path = environ["SCRIPT_NAME"] + request.path_info
# python-routes uses SCRIPT_NAME. So let's use that too.
# The other option would be:
# request.full_path = environ["SCRIPT_URL"]
## Attach utilities to the request object
request.matchdict = route_match
request.urlgen = routes.URLGenerator(self.routing, environ)

View File

@ -45,7 +45,7 @@ def require_active_login(controller):
return exc.HTTPFound(
location="%s?next=%s" % (
request.urlgen("mediagoblin.auth.login"),
request.path_info))
request.full_path))
return controller(request, *args, **kwargs)

View File

@ -21,7 +21,7 @@
{# only display if {{pagination}} is defined #}
{% if pagination and pagination.pages > 1 %}
{% if not base_url %}
{% set base_url = request.path_info %}
{% set base_url = request.full_path %}
{% endif %}
{% if preserve_get_params %}

View File

@ -106,4 +106,4 @@ class Pagination(object):
This is a nice wrapper around get_page_url_explicit()
"""
return self.get_page_url_explicit(
request.path_info, request.GET, page_no)
request.full_path, request.GET, page_no)