From e20208d2a01a4ecc6c5c2c7f2a6b955f2d876931 Mon Sep 17 00:00:00 2001
From: KeyserSosa
Date: Thu, 19 Feb 2009 13:43:06 -0800
Subject: [PATCH] redirect domain subreddit button request rather than 404.
Clean up and remove tracking from error pages.
---
r2/r2/controllers/buttons.py | 5 +++--
r2/r2/controllers/error.py | 19 +++++--------------
r2/r2/lib/pages/pages.py | 25 +++++++++++++++++++++----
r2/r2/templates/redditfooter.html | 2 +-
4 files changed, 30 insertions(+), 21 deletions(-)
diff --git a/r2/r2/controllers/buttons.py b/r2/r2/controllers/buttons.py
index 81ec46816..86f4a85e8 100644
--- a/r2/r2/controllers/buttons.py
+++ b/r2/r2/controllers/buttons.py
@@ -24,7 +24,7 @@ from r2.lib.pages import Button, ButtonNoBody, ButtonEmbed, ButtonLite, \
ButtonDemoPanel, WidgetDemoPanel, Bookmarklets, BoringPage, Socialite
from r2.models import *
from r2.lib.strings import Score
-from r2.lib.utils import tup
+from r2.lib.utils import tup, query_string
from pylons import c, request
from validator import *
from pylons.i18n import _
@@ -78,7 +78,8 @@ class ButtonsController(RedditController):
# no buttons on domain listings
if isinstance(c.site, DomainSR):
- return self.abort404()
+ c.site = Default
+ return self.redirect(request.path + query_string(request.GET))
l = self.wrap_link(link or self.get_link(url))
if l: url = l.url
diff --git a/r2/r2/controllers/error.py b/r2/r2/controllers/error.py
index 88bd6907c..4c4bdf5a3 100644
--- a/r2/r2/controllers/error.py
+++ b/r2/r2/controllers/error.py
@@ -106,26 +106,17 @@ class ErrorController(RedditController):
def send403(self):
c.response.status_code = 403
c.site = Default
- title = _("forbidden (%(domain)s)") % dict(domain=g.domain)
- return pages.BoringPage(title, loginbox=False,
- show_sidebar = False,
- content=pages.ErrorPage()).render()
+ res = pages.RedditError(_("forbidden (%(domain)s)") %
+ dict(domain=g.domain))
+ return res.render()
def send404(self):
c.response.status_code = 404
if c.site._spam and not c.user_is_admin:
- msg = _("this reddit has been banned.")
- res = pages.BoringPage(msg, loginbox = False,
- show_sidebar = False,
- content = pages.ErrorPage(message = msg))
+ res = pages.RedditError(_("this reddit has been banned."))
return res.render()
else:
- ch=rand.choice(['a','b','c','d','e'])
- res = pages.BoringPage(_("page not found"),
- loginbox=False,
- show_sidebar = False,
- content=pages.UnfoundPage(choice=ch))
- return res.render()
+ return pages.Reddit404().render()
def GET_document(self):
try:
diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py
index 89ca46298..9b4cedc0a 100644
--- a/r2/r2/lib/pages/pages.py
+++ b/r2/r2/lib/pages/pages.py
@@ -35,7 +35,7 @@ from r2.lib.menus import SubredditButton, SubredditMenu, menu
from r2.lib.strings import plurals, rand_strings, strings
from r2.lib.utils import title_to_url, query_string, UrlParser, to_js
from r2.lib.template_helpers import add_sr, get_domain
-import sys
+import sys, random
datefmt = _force_utf8(_('%d %b %Y'))
@@ -72,6 +72,7 @@ class Reddit(Wrapped):
searchbox = True
extension_handling = True
enable_login_cover = True
+ site_tracking = True
def __init__(self, space_compress = True, nav_menus = None, loginbox = True,
infotext = '', content = None, title = '', robots = None,
@@ -620,11 +621,27 @@ class InfoBar(Wrapped):
def __init__(self, message = ''):
Wrapped.__init__(self, message = message)
+
+class RedditError(BoringPage):
+ site_tracking = False
+ def __init__(self, msg):
+ BoringPage.__init__(self, msg, loginbox=False,
+ show_sidebar = False,
+ content=ErrorPage(msg))
+
+class Reddit404(BoringPage):
+ site_tracking = False
+ def __init__(self):
+ ch=random.choice(['a','b','c','d','e'])
+ BoringPage.__init__(self, _("page not found"), loginbox=False,
+ show_sidebar = False,
+ content=UnfoundPage(ch))
+
class UnfoundPage(Wrapped):
"""Wrapper for the 404 page"""
- def __init__(self, choice='a'):
- Wrapped.__init__(self, choice=choice)
-
+ def __init__(self, choice):
+ Wrapped.__init__(self, choice = choice)
+
class ErrorPage(Wrapped):
"""Wrapper for an error message"""
def __init__(self, message = _("you aren't allowed to do that.")):
diff --git a/r2/r2/templates/redditfooter.html b/r2/r2/templates/redditfooter.html
index 765d024c7..a09728b35 100644
--- a/r2/r2/templates/redditfooter.html
+++ b/r2/r2/templates/redditfooter.html
@@ -43,7 +43,7 @@
${_("(c) %(year)d CondeNet, Inc. All rights reserved.") % \
dict(year=datetime.datetime.now().timetuple()[0])}
- %if g.tracker_url:
+ %if g.tracker_url and thing.site_tracking:
%endif