class ErrorlogController(RedditController): @validate(VEmployee()) def GET_index(self): res = Reddit( content=AdminErrorLog(), title='error log', show_sidebar=False, ).render() return res
class LiveUpdateEventsController(RedditController): def GET_home(self): return pages.LiveUpdateMetaPage( title=_("reddit live"), content=pages.LiveUpdateHome(), page_classes=["liveupdate-home"], ).render() @validate( VEmployee(), num=VLimit("limit", default=25, max_limit=100), after=VLiveUpdateEvent("after"), before=VLiveUpdateEvent("before"), count=VCount("count"), ) def GET_listing(self, filter, num, after, before, count): reverse = False if before: after = before reverse = True builder_cls = LiveUpdateEventBuilder wrapper = Wrapped listing_cls = Listing if filter == "open": title = _("live threads") query = queries.get_live_events("new", "all") elif filter == "closed": title = _("closed threads") query = queries.get_complete_events("new", "all") elif filter == "active": title = _("most active threads") query = queries.get_active_events() elif filter == "reported": if not c.user_is_admin: self.abort403() title = _("reported threads") query = queries.get_reported_events() builder_cls = LiveUpdateReportedEventBuilder wrapper = pages.LiveUpdateReportedEventRow listing_cls = pages.LiveUpdateReportedEventListing else: self.abort404() builder = builder_cls( query, num=num, after=after, reverse=reverse, count=count, wrap=wrapper, skip=True, ) listing = listing_cls(builder) return pages.LiveUpdateMetaPage( title=title, content=listing.listing(), ).render() @validate( VUser(), ) def GET_create(self): return pages.LiveUpdateMetaPage( title=_("create live thread"), content=pages.LiveUpdateCreate(), ).render() @require_oauth2_scope("submit") @validatedForm( VUser(), VModhash(), VRatelimit(rate_user=True, prefix="liveupdate_create_"), **EVENT_CONFIGURATION_VALIDATORS ) @api_doc( section=api_section.live, uri="/api/live/create", ) def POST_create(self, form, jquery, title, description, resources, nsfw): """Create a new live thread. Once created, the initial settings can be modified with [/api/live/*thread*/edit](#POST_api_live_{thread}_edit) and new updates can be posted with [/api/live/*thread*/update](#POST_api_live_{thread}_update). """ if not is_event_configuration_valid(form): return # for simplicity, set the live-thread creation threshold at the # subreddit creation threshold if not c.user_is_admin and not c.user.can_create_subreddit: form.set_error(errors.CANT_CREATE_SR, "") c.errors.add(errors.CANT_CREATE_SR, field="") return if form.has_errors("ratelimit", errors.RATELIMIT): return VRatelimit.ratelimit( rate_user=True, prefix="liveupdate_create_", seconds=60) event = LiveUpdateEvent.new( id=None, title=title, description=description, resources=resources, banned=c.user._spam, nsfw=nsfw, ) event.add_contributor(c.user, ContributorPermissionSet.SUPERUSER) queries.create_event(event) form.redirect("/live/" + event._id) form._send_data(id=event._id) liveupdate_events.create_event(event, context=c, request=request)