Skip to content

Commit a672fc0

Browse files
author
Josh Hoyt
committed
[project @ Make the Django example behave when run outside the root of a webserver.]
1 parent fdaa3f9 commit a672fc0

7 files changed

Lines changed: 20 additions & 11 deletions

File tree

examples/djopenid/consumer/views.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ def getConsumer(request):
2121
"""
2222
return consumer.Consumer(request.session, getOpenIDStore())
2323

24+
def renderIndexPage(request, **template_args):
25+
template_args['consumer_url'] = util.getViewURL(request, startOpenID)
26+
return 'consumer/index.html', template_args
27+
2428
@util.sendResponse
2529
def startOpenID(request):
2630
"""
@@ -52,7 +56,7 @@ def startOpenID(request):
5256

5357
if error:
5458
# Render the page with an error.
55-
return 'consumer/index.html', {'error': error}
59+
return renderIndexPage(request, error=error)
5660

5761
# Add Simple Registration request information. Some fields
5862
# are optional, some are required. It's possible that the
@@ -82,7 +86,7 @@ def startOpenID(request):
8286
False, {'id': form_id})
8387
return 'consumer/request_form.html', {'html': form_html}
8488

85-
return 'consumer/index.html', {}
89+
return renderIndexPage(request)
8690

8791
@util.sendResponse
8892
def finishOpenID(request):
@@ -133,4 +137,4 @@ def finishOpenID(request):
133137
# not user-friendly, but intended for developers.
134138
result['failure_reason'] = response.message
135139

136-
return 'consumer/index.html', result
140+
return renderIndexPage(request, **result)

examples/djopenid/server/views.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def trustPage(request):
8989
Display the trust page template, which allows the user to decide
9090
whether to approve the OpenID verification.
9191
"""
92-
return 'server/trust.html', {}
92+
return 'server/trust.html', {'trust_handler_url':getViewURL(request, processTrustResult)}
9393

9494
@util.sendResponse
9595
def endpoint(request):
@@ -156,7 +156,9 @@ def showDecidePage(request, openid_request):
156156
return 'server/trust.html', {'idSelect': idSelect,
157157
'identity': identity,
158158
'trust_root': trust_root,
159-
'default_url': default_url}
159+
'default_url': default_url,
160+
'trust_handler_url':getViewURL(request, processTrustResult),
161+
}
160162

161163
@util.sendResponse
162164
def processTrustResult(request):

examples/djopenid/templates/consumer/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
</div>
7474
{% endif %}
7575

76-
<form method="post" action="{% url djopenid.consumer.views.startOpenID %}">
76+
<form method="post" action="{{ consumer_url }}">
7777
<input type="text" size="40" name="openid_url" />
7878
<input type="submit" value="Begin" />
7979
</form>

examples/djopenid/templates/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
</p>
1616

1717
<ul>
18-
<li><a href="{% url djopenid.consumer.views.startOpenID %}">Example Consumer (Relying Party)</a></li>
19-
<li><a href="{% url djopenid.server.views.server %}">Example Server (Identity Provider)</a></li>
18+
<li><a href="{{ consumer_url }}">Example Consumer (Relying Party)</a></li>
19+
<li><a href="{{ server_url }}">Example Server (Identity Provider)</a></li>
2020
</ul>
2121

2222
<p>

examples/djopenid/templates/server/trust.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<div>
99
<form method="post"
10-
action="{% url djopenid.server.views.processTrustResult %}">
10+
action="{{ trust_handler_url }}">
1111
{% if idSelect %}
1212
<p>
1313
Because you entered the server URL when authenticating, enter a

examples/djopenid/util.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,8 @@ def _responseWrapper(request, *args, **kwargs):
120120

121121
def getViewURL(req, view_name_or_obj, args=None, kwargs=None):
122122
relative_url = reverseURL(view_name_or_obj, args=args, kwargs=kwargs)
123-
return urljoin(getBaseURL(req), relative_url)
123+
full_path = req.META.get('SCRIPT_NAME', '') + relative_url
124+
return urljoin(getBaseURL(req), full_path)
124125

125126
def getBaseURL(req):
126127
"""

examples/djopenid/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33

44
@util.sendResponse
55
def index(request):
6-
return 'index.html', {}
6+
return 'index.html', {'consumer_url':util.getViewURL(request, 'djopenid.consumer.views.startOpenID'),
7+
'server_url':util.getViewURL(request, 'djopenid.server.views.server'),
8+
}

0 commit comments

Comments
 (0)