From: hernani Date: Wed, 16 Jun 2010 11:41:52 +0000 (+0000) Subject: Fixes OSQA 317, Wrong links in the user profile in the new notification email, and... X-Git-Tag: live~704 X-Git-Url: https://git.openstreetmap.org./osqa.git/commitdiff_plain/25d2724e64a7828113860d6f7232815a34133ec1 Fixes OSQA 317, Wrong links in the user profile in the new notification 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 --- diff --git a/forum/http_responses.py b/forum/http_responses.py index 42bef58..7fae3b6 100644 --- a/forum/http_responses.py +++ b/forum/http_responses.py @@ -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 \ No newline at end of file + 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 + ) \ No newline at end of file diff --git a/forum/skins/default/templates/401.html b/forum/skins/default/templates/401.html new file mode 100644 index 0000000..c689f53 --- /dev/null +++ b/forum/skins/default/templates/401.html @@ -0,0 +1,46 @@ +{% extends "base_content.html" %} +{% load i18n %} +{% block title %}{% trans "Not logged in" %}{% endblock %} +{% block meta %} + +{% endblock %} +{% block forestyle%} + +{% endblock %} +{% block forejs %} + +{% endblock %} +{% block content %} +
+ {% trans "Not logged in" %} +
+
+
+

{% trans "You are not logged in..." %}

+
+ {% trans "...and the resource you're trying to access is pretocted." %} +

+ {% trans "Redirecting to the login page." %} +

+

+ {% trans "If you're not automatically redirected in 5 seconds, please click" %} + {% trans "here" %}. +

+
+
+ +
+{% endblock %} \ No newline at end of file diff --git a/forum/skins/default/templates/403.html b/forum/skins/default/templates/403.html index 461c264..26b563f 100644 --- a/forum/skins/default/templates/403.html +++ b/forum/skins/default/templates/403.html @@ -6,40 +6,29 @@ form input { margin-right: 5px; } {% endblock %} -{% block forejs %} - -{% endblock %} {% block content %}
{% trans "Forbidden" %}
-

{% trans "Sorry, could not find the page you requested." %}

+

{% trans "Sorry, you don't have permissions to access this page." %}

{% trans "This might have happened for the following reasons:" %}
    -
  • {% trans "this question or answer has been deleted;" %}
  • -
  • {% trans "url has error - please check it;" %}
  • -
  • {% trans "the page you tried to visit is protected or you don't have sufficient points, see" %} faq;
  • -
  • {% trans "if you believe this error 404 should not have occurred, please" %} - {% trans "report this problem" %}
  • +
  • {% trans "you followed a link on an email, but you're currently logged in as another user;" %}
  • +
  • {% trans "there are errors in the url, please confirm it;" %}
  • +
  • {% trans "if you believe you shouldn't bee seeing this error, please" %} + + {% trans "report this problem" %} + +
- -
diff --git a/forum/skins/default/templates/404.html b/forum/skins/default/templates/404.html index 03cab26..100086a 100644 --- a/forum/skins/default/templates/404.html +++ b/forum/skins/default/templates/404.html @@ -27,7 +27,6 @@ @@ -38,9 +37,9 @@
diff --git a/forum/views/admin.py b/forum/views/admin.py index 52f9eee..7297c1f 100644 --- a/forum/views/admin.py +++ b/forum/views/admin.py @@ -3,7 +3,8 @@ import time 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 @@ -21,7 +22,7 @@ def super_user_required(fn): if request.user.is_authenticated() and request.user.is_superuser: return fn(request, *args, **kwargs) else: - return HttpResponseForbidden() + return HttpResponseUnauthorized(request) return wrapper diff --git a/forum/views/auth.py b/forum/views/auth.py index 27cf5c9..7f9b91e 100644 --- a/forum/views/auth.py +++ b/forum/views/auth.py @@ -2,7 +2,8 @@ from django.shortcuts import render_to_response, get_object_or_404 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 @@ -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() @@ -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() diff --git a/forum/views/commands.py b/forum/views/commands.py index 63c6506..f04bd35 100644 --- a/forum/views/commands.py +++ b/forum/views/commands.py @@ -2,7 +2,7 @@ import datetime 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 diff --git a/forum/views/readers.py b/forum/views/readers.py index f933a3b..32aedec 100644 --- a/forum/views/readers.py +++ b/forum/views/readers.py @@ -4,7 +4,7 @@ import logging 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 diff --git a/forum/views/users.py b/forum/views/users.py index fbde095..9978255 100644 --- a/forum/views/users.py +++ b/forum/views/users.py @@ -7,7 +7,8 @@ from django.contrib.contenttypes.models import ContentType 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 @@ -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(): @@ -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' @@ -189,7 +190,7 @@ def user_view(template, tab_name, tab_description, page_title, private=False): 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 diff --git a/forum/views/writers.py b/forum/views/writers.py index aace1f6..c7dbbf3 100644 --- a/forum/views/writers.py +++ b/forum/views/writers.py @@ -5,7 +5,7 @@ import logging 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