Skip to content

Commit

Permalink
Fixes OSQA 317, Wrong links in the user profile in the new notificati…
Browse files Browse the repository at this point in the history
…on email, and OSQA 312, Blank page when the user clicks in an email in the notication settings link without being logged in the site.

git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@428 0cfe37f9-358a-4d5e-be75-b63607b5c754
  • Loading branch information
hernani committed Jun 16, 2010
1 parent a315fa9 commit 25d2724
Show file tree
Hide file tree
Showing 10 changed files with 93 additions and 44 deletions.
24 changes: 18 additions & 6 deletions forum/http_responses.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,27 @@
from django.http import HttpResponse
from django.template.loader import render_to_string
from django.template import RequestContext

from forum import settings

class HttpResponseServiceUnavailable(HttpResponse):
def __init__(self, message):
super(HttpResponseServiceUnavailable, self).__init__(content=render_to_string('503.html', {
'message': message,
'app_logo': settings.APP_LOGO,
'app_title': settings.APP_TITLE
}), status=503)
super(HttpResponseServiceUnavailable, self).__init__(
content=render_to_string('503.html', {
'message': message,
'app_logo': settings.APP_LOGO,
'app_title': settings.APP_TITLE
}), status=503)

class HttpResponseUnauthorized(HttpResponse):
pass
def __init__(self, request):
if request.user.is_authenticated():
super(HttpResponseUnauthorized, self).__init__(
content=render_to_string('403.html', context_instance=RequestContext(request)),
status=403
)
else:
super(HttpResponseUnauthorized, self).__init__(
content=render_to_string('401.html', context_instance=RequestContext(request)),
status=401
)
46 changes: 46 additions & 0 deletions forum/skins/default/templates/401.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{% extends "base_content.html" %}
{% load i18n %}
{% block title %}{% trans "Not logged in" %}{% endblock %}
{% block meta %}
<!-- <meta http-equiv="refresh" content="5;url={% url auth_signin %}"> -->
{% endblock %}
{% block forestyle%}
<style type="text/css">
form input { margin-right: 5px; }
</style>
{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
window.setInterval(function() {
$('#redirect_loader').html($('#redirect_loader').html() + '.')
}, 800);

window.setTimeout(function() {
window.location = "{% url auth_signin %}";
}, 5000);
});

</script>
{% endblock %}
{% block content %}
<div id="main-bar" class="headNormal">
{% trans "Not logged in" %}
</div>
<div id="main-body" class="">
<div style="padding:5px 0px 10px 0;line-height:25px;">
<h3>{% trans "You are not logged in..." %}</h3>
<div style="margin-top:5px">
{% trans "...and the resource you're trying to access is pretocted." %}
<p>
{% trans "Redirecting to the login page." %}<span id="redirect_loader"></span>
</p>
<p>
{% trans "If you're not automatically redirected in 5 seconds, please click" %}
<a href="{% url auth_signin %}">{% trans "here" %}</a>.
</p>
</div>
</div>

</div>
{% endblock %}
33 changes: 11 additions & 22 deletions forum/skins/default/templates/403.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,29 @@
form input { margin-right: 5px; }
</style>
{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
$("#linkPrevious").bind("click", back=function(){history.go(-1);})
});

</script>
{% endblock %}
{% block content %}
<div id="main-bar" class="headNormal">
{% trans "Forbidden" %}
</div>
<div id="main-body" class="">
<div style="padding:5px 0px 10px 0;line-height:25px;">
<h3>{% trans "Sorry, could not find the page you requested." %}</h3>
<h3>{% trans "Sorry, you don't have permissions to access this page." %}</h3>
<div style="margin-top:5px">
{% trans "This might have happened for the following reasons:" %}<br/>
<ul>
<li>{% trans "this question or answer has been deleted;" %}</li>
<li>{% trans "url has error - please check it;" %}</li>
<li>{% trans "the page you tried to visit is protected or you don't have sufficient points, see" %} <a href="{% url faq %}"> faq</a>;</li>
<li>{% trans "if you believe this error 404 should not have occurred, please" %}
<a href="{{feedback_site_url}}" target="_blank">{% trans "report this problem" %}</a></li>
<li>{% trans "you followed a link on an email, but you're currently logged in as another user;" %}</li>
<li>{% trans "there are errors in the url, please confirm it;" %}</li>
<li>{% trans "if you believe you shouldn't bee seeing this error, please" %}
<a href="{% if settings.CONTACT_URL %}{{ settings.CONTACT_URL }}{% else %}{% url feedback %}{% endif %}" target="_blank">
{% trans "report this problem" %}
</a>
</li>
</ul>
</div>
<script type="text/javascript">
var GOOG_FIXURL_LANG = '{{settings.LANGUAGE_CODE}}';
var GOOG_FIXURL_SITE = '{{site_url}}';
</script>
<script type="text/javascript" src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
<ul>
<li><a href="#" id="linkPrevious">{% trans "back to previous page" %} È</a></li>
<li><a href="{% url questions %}">{% trans "see all questions" %} È</a></li>
<li><a href="{% url tags %}">{% trans "see all tags" %} È</a></li>
<li><a href="{% url index %}">{% trans "to home page" %} &raquo;</a></li>
<li><a href="{% url questions %}">{% trans "see all questions" %} &raquo;</a></li>
<li><a href="{% url tags %}">{% trans "see all tags" %} &raquo;</a></li>
</ul>
</div>

Expand Down
7 changes: 3 additions & 4 deletions forum/skins/default/templates/404.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ <h3>{% trans "Sorry, could not find the page you requested." %}</h3>
<ul>
<li>{% trans "this question or answer has been deleted;" %}</li>
<li>{% trans "url has error - please check it;" %}</li>
<li>{% trans "the page you tried to visit is protected or you don't have sufficient points, see" %} <a href="{% url faq %}"> faq</a>;</li>
<li>{% trans "if you believe this error 404 should not have occurred, please" %}
<a href="{{feedback_site_url}}" target="_blank">{% trans "report this problem" %}</a></li>
</ul>
Expand All @@ -38,9 +37,9 @@ <h3>{% trans "Sorry, could not find the page you requested." %}</h3>
</script>
<script type="text/javascript" src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
<ul>
<li><a href="#" id="linkPrevious">{% trans "back to previous page" %} »</a></li>
<li><a href="{% url questions %}">{% trans "see all questions" %} »</a></li>
<li><a href="{% url tags %}">{% trans "see all tags" %} »</a></li>
<li><a href="#" id="linkPrevious">{% trans "back to previous page" %} &raquo;</a></li>
<li><a href="{% url questions %}">{% trans "see all questions" %} &raquo;</a></li>
<li><a href="{% url tags %}">{% trans "see all tags" %} &raquo;</a></li>
</ul>
</div>

Expand Down
5 changes: 3 additions & 2 deletions forum/views/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from django.shortcuts import render_to_response, get_object_or_404
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, Http404
from django.http import HttpResponseRedirect, HttpResponse, Http404
from forum.http_responses import HttpResponseUnauthorized
from django.template import RequestContext
from django.utils.translation import ugettext as _
from django.utils import simplejson
Expand All @@ -21,7 +22,7 @@ def wrapper(request, *args, **kwargs):
if request.user.is_authenticated() and request.user.is_superuser:
return fn(request, *args, **kwargs)
else:
return HttpResponseForbidden()
return HttpResponseUnauthorized(request)

return wrapper

Expand Down
7 changes: 4 additions & 3 deletions forum/views/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
from django.template import RequestContext
from django.core.urlresolvers import reverse
from forum.models import User
from django.http import HttpResponseRedirect, Http404, HttpResponseForbidden
from django.http import HttpResponseRedirect, Http404
from forum.http_responses import HttpResponseUnauthorized
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _
from django.utils.http import urlquote_plus
Expand Down Expand Up @@ -277,7 +278,7 @@ def auth_settings(request, id):
user_ = get_object_or_404(User, id=id)

if not (request.user.is_superuser or request.user == user_):
return HttpResponseForbidden()
return HttpResponseUnauthorized(request)

auth_keys = user_.auth_keys.all()

Expand Down Expand Up @@ -331,7 +332,7 @@ def auth_settings(request, id):
def remove_external_provider(request, id):
association = get_object_or_404(AuthKeyUserAssociation, id=id)
if not (request.user.is_superuser or request.user == association.user):
return HttpResponseForbidden()
return HttpResponseUnauthorized(request)

request.user.message_set.create(message=_("You removed the association with %s") % association.provider)
association.delete()
Expand Down
2 changes: 1 addition & 1 deletion forum/views/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from forum import settings
from django.core.exceptions import ObjectDoesNotExist
from django.utils import simplejson
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import get_object_or_404, render_to_response
from django.utils.translation import ungettext, ugettext as _
from django.template import RequestContext
Expand Down
2 changes: 1 addition & 1 deletion forum/views/readers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from urllib import unquote
from forum import settings as django_settings
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, Http404, HttpResponsePermanentRedirect
from django.http import HttpResponseRedirect, HttpResponse, Http404, HttpResponsePermanentRedirect
from django.core.paginator import Paginator, EmptyPage, InvalidPage
from django.template import RequestContext
from django import template
Expand Down
9 changes: 5 additions & 4 deletions forum/views/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
from django.core.urlresolvers import reverse
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.http import HttpResponse, HttpResponseForbidden, HttpResponseRedirect, Http404
from django.http import HttpResponse, HttpResponseRedirect, Http404
from forum.http_responses import HttpResponseUnauthorized
from django.utils.translation import ugettext as _
from django.utils.http import urlquote_plus
from django.utils.html import strip_tags
Expand Down Expand Up @@ -84,7 +85,7 @@ def set_new_email(user, new_email, nomessage=False):
def edit_user(request, id):
user = get_object_or_404(User, id=id)
if not (request.user.is_superuser or request.user == user):
return HttpResponseForbidden()
return HttpResponseUnauthorized(request)
if request.method == "POST":
form = EditUserForm(user, request.POST)
if form.is_valid():
Expand Down Expand Up @@ -118,7 +119,7 @@ def edit_user(request, id):
@login_required
def user_powers(request, id, action, status):
if not request.user.is_superuser:
return HttpResponseForbidden()
return HttpResponseUnauthorized(request)

user = get_object_or_404(User, id=id)
new_state = action == 'grant'
Expand Down Expand Up @@ -189,7 +190,7 @@ def decorator(fn):
def decorated(request, id, slug=None):
user = get_object_or_404(User, id=id)
if private and not (user == request.user or request.user.is_superuser):
return HttpResponseForbidden()
return HttpResponseUnauthorized(request)
context = fn(request, user)

rev_page_title = user.username + " - " + page_title
Expand Down
2 changes: 1 addition & 1 deletion forum/views/writers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from django.core.files.storage import FileSystemStorage
from django.shortcuts import render_to_response, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, Http404
from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.template import RequestContext
from django.utils.html import *
from django.utils import simplejson
Expand Down

0 comments on commit 25d2724

Please sign in to comment.