def __init__(self, user, **kw): self.user = user self.wrappeduser = WrappedUser(user) self.permissions = kw.pop('permissions') self.is_moderator = kw.pop('is_moderator') self.mod_permissions = None if self.is_moderator: self.mod_permissons = ModeratorPermissions(self.user, "moderator", self.permissions, embedded=True) BoringPage.__init__(self, user.name, **kw)
def __init__(self, content_id=None, title_msg=None, pagename=None, content=None, **kw): BoringPage.__init__(self, pagename or _('about reddit'), show_sidebar=False, content=content, **kw) self.content_id = content_id self.title_msg = title_msg
def __init__(self, *args, **kwargs): self.prices = { "gold_month_price": g.gold_month_price, "gold_year_price": g.gold_year_price, } self.features = [] all_features = GoldFeature.get_all() for feature in all_features: feature.extra_classes = 'new' if feature.is_new else '' self.features.append(feature) BoringPage.__init__(self, *args, **kwargs)
def __init__(self, *args, **kwargs): self.prices = { "gold_month_price": g.gold_month_price, "gold_year_price": g.gold_year_price, } all_features = GoldFeature.get_all() for feature in all_features: feature.extra_classes = 'new' if feature.is_new else '' NUM_FEATURES_ABOVE_PARTNERS = 2 self.top_features = all_features[:NUM_FEATURES_ABOVE_PARTNERS] self.other_features = all_features[NUM_FEATURES_ABOVE_PARTNERS:] self.partners = GoldPartner.get_all() BoringPage.__init__(self, *args, **kwargs)
def GET_button_demo_page(self): # no buttons for domain listings -> redirect to top level if isinstance(c.site, DomainSR): return self.redirect('/buttons') return BoringPage(_("reddit buttons"), show_sidebar=False, content=ButtonDemoPanel()).render()
def GET_docs(self): # controllers to gather docs from. from r2.controllers.api import ApiController, ApiminimalController from r2.controllers.front import FrontController from r2.controllers import listingcontroller api_controllers = [(ApiController, '/api'), (ApiminimalController, '/api'), (FrontController, '')] for name, value in vars(listingcontroller).iteritems(): if name.endswith('Controller'): api_controllers.append((value, '')) # merge documentation info together. api_docs = defaultdict(dict) for controller, url_prefix in api_controllers: for section, contents in self.docs_from_controller( controller, url_prefix).iteritems(): api_docs[section].update(contents) return BoringPage(_('api documentation'), content=ApiHelp(api_docs=api_docs), css_class="api-help", show_sidebar=False, show_firsttext=False).render()
def GET_wiki_create(self, wp, page): api = c.render_style in extensions.API_TYPES error = c.errors.get(('WIKI_CREATE_ERROR', 'page')) if error: error = error.msg_params if wp[0]: return self.redirect(join_urls(c.wiki_base_url, wp[0].name)) elif api: if error: self.handle_error(403, **error) else: self.handle_error(404, 'PAGE_NOT_CREATED') elif error: error_msg = '' if error['reason'] == 'PAGE_NAME_LENGTH': error_msg = _( "this wiki cannot handle page names of that magnitude! please select a page name shorter than %d characters" ) % error['max_length'] elif error['reason'] == 'PAGE_CREATED_ELSEWHERE': error_msg = _( "this page is a special page, please go into the subreddit settings and save the field once to create this special page" ) elif error['reason'] == 'PAGE_NAME_MAX_SEPARATORS': error_msg = _( 'a max of %d separators "/" are allowed in a wiki page name.' ) % error['max_separators'] return BoringPage(_("Wiki error"), infotext=error_msg).render() else: return WikiCreate(page=page, may_revise=True).render()
def GET_wiki_create(self, may_create, page, view=False): api = c.extension == 'json' if c.error and c.error['reason'] == 'PAGE_EXISTS': return self.redirect(join_urls(c.wiki_base_url, page)) elif not may_create or api: if may_create and c.error: self.handle_error(403, **c.error) else: self.handle_error(404, 'PAGE_NOT_FOUND', may_create=may_create) elif c.error: error = '' if c.error['reason'] == 'PAGE_NAME_LENGTH': error = _( "this wiki cannot handle page names of that magnitude! please select a page name shorter than %d characters" ) % c.error['max_length'] elif c.error['reason'] == 'PAGE_CREATED_ELSEWHERE': error = _( "this page is a special page, please go into the subreddit settings and save the field once to create this special page" ) elif c.error['reason'] == 'PAGE_NAME_MAX_SEPARATORS': error = _( 'a max of %d separators "/" are allowed in a wiki page name.' ) % c.error['MAX_SEPARATORS'] return BoringPage(_("Wiki error"), infotext=error).render() elif view: return WikiNotFound().render() elif may_create: WikiPage.create(c.site, page) url = join_urls(c.wiki_base_url, '/edit/', page) return self.redirect(url)
def __init__(self, *args, **kwargs): self.prices = { "gold_month_price": g.gold_month_price, "gold_year_price": g.gold_year_price, } self.partners = GoldPartner.get_all() self.categories = set() self.giveaways = [] # batch-lookup the Links and Subreddits for discussions id36s = [p.discussion_id36 for p in self.partners if p.discussion_id36] links = Link._byID36(id36s, data=True) subreddits = Subreddit._byID([link.sr_id for link in links.values()], data=True) for partner in self.partners: if partner.category: self.categories.add(partner.category) extra_classes = partner.css_classes if partner.is_new: extra_classes.append('new') partner.extra_classes = ' '.join(extra_classes) if partner.giveaway_desc: self.giveaways.append('{0}: {1}' .format(partner.name, partner.giveaway_desc)) if partner.discussion_id36: link = links[partner.discussion_id36] subreddit = subreddits[link.sr_id] partner.discussion_url = link.make_permalink(subreddit) partner.discussion_num_comments = link.num_comments else: partner.discussion_url = None partner.discussion_num_comments = None self.categories = sorted(self.categories) if c.user_is_loggedin: self.existing_codes = GoldPartnerDealCode.get_codes_for_user(c.user) else: self.existing_codes = [] BoringPage.__init__(self, *args, **kwargs)
def __init__(self, *args, **kwargs): self.prices = { "gold_month_price": g.gold_month_price, "gold_year_price": g.gold_year_price, } self.partners = GoldPartner.get_all() self.categories = set() self.giveaways = [] # batch-lookup the Links and Subreddits for discussions id36s = [p.discussion_id36 for p in self.partners if p.discussion_id36] links = Link._byID36(id36s, data=True) subreddits = Subreddit._byID([link.sr_id for link in links.values()], data=True) for partner in self.partners: if partner.category: self.categories.add(partner.category) extra_classes = partner.css_classes if partner.is_new: extra_classes.append('new') partner.extra_classes = ' '.join(extra_classes) if partner.giveaway_desc: self.giveaways.append('{0}: {1}'.format( partner.name, partner.giveaway_desc)) if partner.discussion_id36: link = links[partner.discussion_id36] subreddit = subreddits[link.sr_id] partner.discussion_url = link.make_permalink(subreddit) partner.discussion_num_comments = link.num_comments else: partner.discussion_url = None partner.discussion_num_comments = None self.categories = sorted(self.categories) if c.user_is_loggedin: self.existing_codes = GoldPartnerDealCode.get_codes_for_user( c.user) else: self.existing_codes = [] BoringPage.__init__(self, *args, **kwargs)
def rendercontent(self, content): if content.startswith("<!--TEMPLATE-->"): return BoringPage(_("Help"), content=Embed(content=content), show_sidebar=None, space_compress=False).render() else: return content
def GET_disable(self, **kwargs): # **kwargs included above to swallow pylons env arguments passed in # due to argspec inspection of decorator **kwargs. return BoringPage( pagename=_('disabling beta'), content_id='beta-disable', content=BetaDisable(), show_sidebar=False, ).render()
def GET_docs(self, mode): # controllers to gather docs from. from r2.controllers.api import ApiController, ApiminimalController from r2.controllers.apiv1.user import APIv1UserController from r2.controllers.apiv1.gold import APIv1GoldController from r2.controllers.apiv1.scopes import APIv1ScopesController from r2.controllers.captcha import CaptchaController from r2.controllers.front import FrontController from r2.controllers.wiki import WikiApiController, WikiController from r2.controllers.multi import MultiApiController from r2.controllers import listingcontroller api_controllers = [ (APIv1UserController, '/api/v1'), (APIv1GoldController, '/api/v1'), (APIv1ScopesController, '/api/v1'), (ApiController, '/api'), (ApiminimalController, '/api'), (WikiApiController, '/api/wiki'), (WikiController, '/wiki'), (MultiApiController, '/api/multi'), (CaptchaController, ''), (FrontController, ''), ] for name, value in vars(listingcontroller).iteritems(): if name.endswith('Controller'): api_controllers.append((value, '')) # bring in documented plugin controllers api_controllers.extend(g.plugins.get_documented_controllers()) # merge documentation info together. api_docs = defaultdict(dict) oauth_index = defaultdict(set) for controller, url_prefix in api_controllers: controller_docs = self.docs_from_controller(controller, url_prefix, mode == 'oauth') for section, contents in controller_docs.iteritems(): api_docs[section].update(contents) for variant, method_dict in contents.iteritems(): for method, docs in method_dict.iteritems(): for scope in docs['oauth_scopes']: oauth_index[scope].add((section, variant, method)) return BoringPage( _('api documentation'), content=ApiHelp( api_docs=api_docs, oauth_index=oauth_index, mode=mode, ), css_class="api-help", show_sidebar=False, show_infobar=False ).render()
def __init__(self, *args, **kwargs): self.prices = {"gold_month_price": g.gold_month_price, "gold_year_price": g.gold_year_price} self.top_features = [] self.other_features = [] self.top_partners = [] all_features = GoldFeature.get_all() for feature in all_features: feature.extra_classes = "new" if feature.is_new else "" if feature.is_top: self.top_features.append(feature) else: self.other_features.append(feature) all_partners = GoldPartner.get_all() for partner in all_partners: if partner.is_top: self.top_partners.append(partner) BoringPage.__init__(self, *args, **kwargs)
def GET_edit(self, meetup): return BoringPage(pagename='Edit Meetup', content=EditMeetup( meetup, title=meetup.title, description=meetup.description, location=meetup.location, latitude=meetup.latitude, longitude=meetup.longitude, timestamp=int(meetup.timestamp * 1000), tzoffset=meetup.tzoffset)).render()
def __init__(self, *args, **kwargs): self.prices = { "gold_month_price": g.gold_month_price, "gold_year_price": g.gold_year_price, } self.top_features = [] self.other_features = [] self.top_partners = [] all_features = GoldFeature.get_all() for feature in all_features: feature.extra_classes = 'new' if feature.is_new else '' if feature.is_top: self.top_features.append(feature) else: self.other_features.append(feature) all_partners = GoldPartner.get_all() for partner in all_partners: if partner.is_top: self.top_partners.append(partner) BoringPage.__init__(self, *args, **kwargs)
def GET_show(self, meetup, sort, num_comments): article = Link._byID(meetup.assoc_link) # figure out number to show based on the menu user_num = c.user.pref_num_comments or g.num_comments num = g.max_comments if num_comments == 'true' else user_num builder = CommentBuilder(article, CommentSortMenu.operator(sort), None, None) listing = NestedListing(builder, num=num, parent_name=article._fullname) displayPane = PaneStack() # insert reply box only for logged in user if c.user_is_loggedin: displayPane.append(CommentReplyBox()) displayPane.append(CommentReplyBox(link_name=article._fullname)) # finally add the comment listing displayPane.append(listing.listing()) sort_menu = CommentSortMenu(default=sort, type='dropdown2') nav_menus = [ sort_menu, NumCommentsMenu(article.num_comments, default=num_comments) ] content = CommentListing( content=displayPane, num_comments=article.num_comments, nav_menus=nav_menus, ) # Update last viewed time, and return the previous last viewed time. Actually tracked on the article lastViewed = None if c.user_is_loggedin: clicked = article._getLastClickTime(c.user) lastViewed = clicked._date if clicked else None article._click(c.user) res = ShowMeetup(meetup=meetup, content=content, fullname=article._fullname, lastViewed=lastViewed) return BoringPage(pagename=meetup.title, content=res, body_class='meetup').render()
def GET_beta(self, name): user_exempt = beta_user_exempt(c.user) if name != g.beta_name or (g.beta_require_admin and not user_exempt): abort(404) content = BetaSettings( beta_name=g.beta_name, beta_title=g.beta_title, description_md=g.beta_description_md[0], feedback_sr=g.beta_feedback_sr, enabled=c.beta, require_gold=g.beta_require_gold and not user_exempt, has_gold=c.user_is_loggedin and c.user.gold, ) return BoringPage( pagename=g.beta_title, content_id='beta-settings', content=content, show_sidebar=False, ).render()
def GET_docs(self, mode): # controllers to gather docs from. from r2.controllers.api import ApiController, ApiminimalController from r2.controllers.apiv1 import APIv1Controller from r2.controllers.front import FrontController from r2.controllers import listingcontroller api_controllers = [(APIv1Controller, '/api/v1'), (ApiController, '/api'), (ApiminimalController, '/api'), (FrontController, '')] for name, value in vars(listingcontroller).iteritems(): if name.endswith('Controller'): api_controllers.append((value, '')) # merge documentation info together. api_docs = defaultdict(dict) oauth_index = defaultdict(set) for controller, url_prefix in api_controllers: controller_docs = self.docs_from_controller( controller, url_prefix, mode == 'oauth') for section, contents in controller_docs.iteritems(): api_docs[section].update(contents) for variant, method_dict in contents.iteritems(): for method, docs in method_dict.iteritems(): for scope in docs['oauth_scopes']: oauth_index[scope].add((section, variant, method)) return BoringPage(_('api documentation'), content=ApiHelp( api_docs=api_docs, oauth_index=oauth_index, mode=mode, ), css_class="api-help", show_sidebar=False, show_firsttext=False).render()
def GET_button_demo_page(self): return BoringPage(_("Reddit buttons"), show_sidebar=False, content=ButtonDemoPanel()).render()
def __init__(self, **kwargs): BoringPage.__init__(self, pagename=_("reddit meetups"), show_sidebar=False, **kwargs )
def GET_socialite_demo_page(self): return BoringPage(_("Socialite toolbar"), show_sidebar=False, content=Socialite()).render()
def GET_iphonebookmarklets(self): return BoringPage(_("submit"), title="submit to reddit", show_sidebar=False, content=Bookmarklets()).render()
def GET_bookmarklets(self): return BoringPage(_("bookmarklets"), show_sidebar=False, content=Bookmarklets()).render()
def GET_widget_demo_page(self): return BoringPage(_("reddit widget"), show_sidebar=False, content=WidgetDemoPanel()).render()
def GET_new(self, *a, **kw): return BoringPage(pagename='New Meetup', content=NewMeetup(*a, **kw)).render()
def __init__(self, **kwargs): BoringPage.__init__(self, pagename=_("reddit meetups"), show_sidebar=False, **kwargs)