routing/wiki: PEP8 cleanups.

This commit is contained in:
Ricky Ramirez
2013-01-22 15:11:07 -08:00
parent 808b2a4648
commit 53d358bc61
2 changed files with 55 additions and 46 deletions

View File

@@ -23,13 +23,14 @@
"""
Setup your Routes options here
"""
import os
from routes import Mapper
from pylons import config
def not_in_sr(environ, results):
return 'subreddit' not in environ and 'sub_domain' not in environ
def make_map():
map = Mapper()
mc = map.connect
@@ -55,8 +56,10 @@ def make_map():
mc('/rules', controller='front', action='rules')
mc('/sup', controller='front', action='sup')
mc('/traffic', controller='front', action='site_traffic')
mc('/traffic/languages/:langcode', controller='front', action='lang_traffic', langcode='')
mc('/traffic/adverts/:code', controller='front', action='advert_traffic', code='')
mc('/traffic/languages/:langcode', controller='front',
action='lang_traffic', langcode='')
mc('/traffic/adverts/:code', controller='front',
action='advert_traffic', code='')
mc('/account-activity', controller='front', action='account_activity')
mc('/about/message/:where', controller='message', action='listing')
@@ -148,18 +151,18 @@ def make_map():
mc('/admin/promoted', controller='promote', action='admin')
mc('/promoted/edit_promo/:link',
controller='promote', action='edit_promo')
mc('/promoted/edit_promo_cpm/:link', # development only (don't link to url)
mc('/promoted/edit_promo_cpm/:link', # development only
controller='promote', action='edit_promo_cpm')
mc('/promoted/edit_promo/pc/:campaign', controller='promote', # admin only
mc('/promoted/edit_promo/pc/:campaign', controller='promote', # admin only
action='edit_promo_campaign')
mc('/promoted/pay/:link/:campaign',
controller='promote', action='pay')
mc('/promoted/graph',
controller='promote', action='graph')
mc('/promoted/admin/graph', controller='promote', action='admingraph')
mc('/promoted/inventory/:sr_name',
mc('/promoted/inventory/:sr_name',
controller='promote', action='inventory')
mc('/promoted/traffic/headline/:link',
mc('/promoted/traffic/headline/:link',
controller='front', action='promo_traffic')
mc('/promoted/:action', controller='promote',
@@ -212,21 +215,21 @@ def make_map():
mc('/wiki/discussions/*page', controller='wiki', action='wiki_discussions')
mc('/wiki/revisions', controller='wiki', action='wiki_recent')
mc('/wiki/pages', controller='wiki', action='wiki_listing')
mc('/api/wiki/create', controller='wikiapi', action='wiki_create')
mc('/api/wiki/edit', controller='wikiapi', action='wiki_edit')
mc('/api/wiki/hide', controller='wikiapi', action='wiki_revision_hide')
mc('/api/wiki/revert', controller='wikiapi', action='wiki_revision_revert')
mc('/api/wiki/alloweditor/:act', controller='wikiapi',
mc('/api/wiki/alloweditor/:act', controller='wikiapi',
requirements=dict(act="del|add"), action='wiki_allow_editor')
mc('/wiki/*page', controller='wiki', action='wiki_page')
mc('/wiki/', controller='wiki', action='wiki_page')
mc('/:action', controller='wiki', requirements=dict(action="help|faq"))
mc('/help/*page', controller='wiki', action='wiki_redirect')
mc('/w/*page', controller='wiki', action='wiki_redirect')
mc('/goto', controller='toolbar', action='goto')
mc('/tb/:id', controller='toolbar', action='tb')
mc('/toolbar/:action', controller='toolbar',

View File

@@ -85,33 +85,37 @@ page_descriptions = {'config/stylesheet':_("This page is the subreddit styleshee
ATTRIBUTE_BY_PAGE = {"config/sidebar": "description",
"config/description": "public_description"}
class WikiController(RedditController):
allow_stylesheets = True
@wiki_validate(pv=VWikiPageAndVersion(('page', 'v', 'v2'), required=False,
restricted=False, allow_hidden_revision=False),
page_name=VWikiPageName('page', error_on_name_normalized=True))
@wiki_validate(pv=VWikiPageAndVersion(('page', 'v', 'v2'),
required=False,
restricted=False,
allow_hidden_revision=False),
page_name=VWikiPageName('page',
error_on_name_normalized=True))
def GET_wiki_page(self, pv, page_name):
message = None
if c.errors.get(('PAGE_NAME_NORMALIZED', 'page')):
url = join_urls(c.wiki_base_url, page_name)
return self.redirect(url)
page, version, version2 = pv
if not page:
if c.render_style in extensions.API_TYPES:
self.handle_error(404, 'PAGE_NOT_CREATED')
return WikiNotFound(page=page_name).render()
if version:
edit_by = version.get_author()
edit_date = version.date
else:
edit_by = page.get_author()
edit_date = page._get('last_edit_date')
diffcontent = None
if not version:
content = page.content
@@ -131,11 +135,11 @@ class WikiController(RedditController):
else:
message = _("viewing revision from %s ago") % timesince(version.date)
content = version.content
return WikiPageView(content, alert=message, v=version, diff=diffcontent,
may_revise=this_may_revise(page), edit_by=edit_by,
edit_date=edit_date, page=page.name).render()
@paginated_listing(max_page_size=100, backend='cassandra')
@wiki_validate(page=VWikiPage(('page'), restricted=False))
def GET_wiki_revisions(self, num, after, reverse, count, page):
@@ -143,7 +147,7 @@ class WikiController(RedditController):
builder = WikiRevisionBuilder(revisions, num=num, reverse=reverse, count=count, after=after, skip=not c.is_wiki_mod, wrap=default_thing_wrapper())
listing = WikiRevisionListing(builder).listing()
return WikiRevisions(listing, page=page.name, may_revise=this_may_revise(page)).render()
@wiki_validate(wp=VWikiPageRevise('page'),
page=VWikiPageName('page'))
def GET_wiki_create(self, wp, page):
@@ -169,7 +173,7 @@ class WikiController(RedditController):
return BoringPage(_("Wiki error"), infotext=error_msg).render()
else:
return WikiCreate(page=page, may_revise=True).render()
@wiki_validate(wp=VWikiPageRevise('page', restricted=True, required=True))
def GET_wiki_revise(self, wp, page, message=None, **kw):
wp = wp[0]
@@ -179,7 +183,7 @@ class WikiController(RedditController):
message = page_descriptions[wp.name]
return WikiEdit(content, previous, alert=message, page=wp.name,
may_revise=True).render()
@paginated_listing(max_page_size=100, backend='cassandra')
def GET_wiki_recent(self, num, after, reverse, count):
revisions = WikiRevision.get_recent(c.site)
@@ -189,7 +193,7 @@ class WikiController(RedditController):
skip=not c.is_wiki_mod)
listing = WikiRevisionListing(builder).listing()
return WikiRecent(listing).render()
def GET_wiki_listing(self):
def check_hidden(page):
return this_may_view(page)
@@ -198,19 +202,19 @@ class WikiController(RedditController):
def GET_wiki_redirect(self, page='index'):
return redirect_to(str("%s/%s" % (c.wiki_base_url, page)), _code=301)
@base_listing
@wiki_validate(page=VWikiPage('page', restricted=True))
def GET_wiki_discussions(self, page, num, after, reverse, count):
page_url = add_sr("%s/%s" % (c.wiki_base_url, page.name))
links = url_links(page_url)
builder = IDBuilder([ link._fullname for link in links ],
num = num, after = after, reverse = reverse,
count = count, skip = False)
builder = IDBuilder([link._fullname for link in links],
num=num, after=after, reverse=reverse,
count=count, skip=False)
listing = LinkListing(builder).listing()
return WikiDiscussions(listing, page=page.name,
may_revise=this_may_revise(page)).render()
@wiki_validate(page=VWikiPage('page', restricted=True, modonly=True))
def GET_wiki_settings(self, page):
settings = {'permlevel': page._get('permlevel', 0)}
@@ -218,7 +222,7 @@ class WikiController(RedditController):
restricted = (not page.special) and page.restricted
show_editors = not restricted
return WikiSettings(settings, mayedit, show_settings=not page.special,
page=page.name, show_editors=show_editors,
page=page.name, show_editors=show_editors,
restricted=restricted,
may_revise=True).render()
@@ -232,18 +236,19 @@ class WikiController(RedditController):
except ValueError:
self.handle_error(403, 'INVALID_PERMLEVEL')
description = 'Page: %s, Changed from %s to %s' % (page.name, oldpermlevel, permlevel)
ModAction.create(c.site, c.user, 'wikipermlevel', description=description)
ModAction.create(c.site, c.user, 'wikipermlevel',
description=description)
return self.GET_wiki_settings(page=page.name)
def handle_error(self, code, reason=None, **data):
abort(WikiError(code, reason, **data))
def pre(self):
RedditController.pre(self)
if g.disable_wiki and not c.user_is_admin:
self.handle_error(403, 'WIKI_DOWN')
if not c.site._should_wiki:
self.handle_error(404, 'NOT_WIKIABLE') # /r/mod for an example
self.handle_error(404, 'NOT_WIKIABLE') # /r/mod for an example
frontpage = isinstance(c.site, DefaultSR)
c.wiki_base_url = join_urls(c.site.path, 'wiki')
c.wiki_api_url = join_urls(c.site.path, '/api/wiki')
@@ -251,7 +256,7 @@ class WikiController(RedditController):
self.editconflict = False
c.is_wiki_mod = (c.user_is_admin or c.site.is_moderator(c.user)) if c.user_is_loggedin else False
c.wikidisabled = False
mode = c.site.wikimode
if not mode or mode == 'disabled':
if not c.is_wiki_mod:
@@ -265,33 +270,34 @@ class WikiController(RedditController):
GET_help = GET_wiki_redirect
class WikiApiController(WikiController):
@wiki_validate(VModhash(),
pageandprevious=VWikiPageRevise(('page', 'previous'), restricted=True),
content=VMarkdown(('content')),
content=VMarkdown(('content')),
page_name=VWikiPageName('page'),
reason=VPrintable('reason', 256))
@api_doc(api_section.wiki, uri='/api/wiki/edit')
def POST_wiki_edit(self, pageandprevious, content, page_name, reason):
page, previous = pageandprevious
if not page:
error = c.errors.get(('WIKI_CREATE_ERROR', 'page'))
if error:
self.handle_error(403, **(error.msg_params or {}))
page = WikiPage.create(c.site, page_name)
if c.user._spam:
error =_("You are doing that too much, please try again later.")
error = _("You are doing that too much, please try again later.")
self.handle_error(415, 'SPECIAL_ERRORS', special_errors=[error])
# Use the raw POST value as we need to tell the difference between
# None/Undefined and an empty string. The validators use a default
# value with both of those cases and would need to be changed.
# value with both of those cases and would need to be changed.
# In order to avoid breaking functionality, this was done instead.
previous = previous._id if previous else request.post.get('previous')
try:
if page.name == 'config/stylesheet':
report, parsed = c.site.parse_css(content, verify=False)
if report is None: # g.css_killswitch
if report is None: # g.css_killswitch
self.handle_error(403, 'STYLESHEET_EDIT_DENIED')
if report.errors:
error_items = [x.message for x in sorted(report.errors)]
@@ -301,7 +307,7 @@ class WikiApiController(WikiController):
try:
page.revise(content, previous, c.user._id36, reason=reason)
except ContentLengthError as e:
self.handle_error(403, 'CONTENT_LENGTH_ERROR', max_length = e.max_length)
self.handle_error(403, 'CONTENT_LENGTH_ERROR', max_length=e.max_length)
# continue storing the special pages as data attributes on the subreddit
# object. TODO: change this to minimize subreddit get sizes.
@@ -333,7 +339,7 @@ class WikiApiController(WikiController):
else:
self.handle_error(400, 'INVALID_ACTION')
return json.dumps({})
@wiki_validate(VModhash(),
VWikiModerator(),
pv=VWikiPageAndVersion(('page', 'revision')))
@@ -343,7 +349,7 @@ class WikiApiController(WikiController):
if not revision:
self.handle_error(400, 'INVALID_REVISION')
return json.dumps({'status': revision.toggle_hide()})
@wiki_validate(VModhash(),
VWikiModerator(),
pv=VWikiPageAndVersion(('page', 'revision')))
@@ -372,7 +378,7 @@ class WikiApiController(WikiController):
except ContentLengthError as e:
self.handle_error(403, 'CONTENT_LENGTH_ERROR', max_length=e.max_length)
return json.dumps({})
def pre(self):
WikiController.pre(self)
c.render_style = 'api'