def select_userinfo(userid, config=None): if config is None: [query] = d.engine.execute(""" SELECT pr.config, ui.birthday, ui.gender, ui.country FROM profile pr INNER JOIN userinfo ui USING (userid) WHERE pr.userid = %(userid)s """, userid=userid) else: [query] = d.engine.execute(""" SELECT %(config)s, birthday, gender, country FROM userinfo WHERE userid = %(userid)s """, userid=userid, config=config) user_links = d.engine.execute(""" SELECT link_type, ARRAY_AGG(link_value) FROM user_links WHERE userid = %(userid)s GROUP BY link_type """, userid=userid).fetchall() show_age = "b" in query[0] or d.get_userid() in staff.MODS return { "birthday": query[1], "age": d.convert_age(query[1]) if show_age else None, "show_age": "b" in query[0], "gender": query[2], "country": query[3], "user_links": {r[0]: r[1] for r in user_links}, "sorted_user_links": sort_user_links(user_links), }
def ravenCaptureArguments(self, level=None, **extra): request = get_current_request() data = { 'level': level, 'user': { 'id': d.get_userid(), 'ip_address': d.get_address(), }, 'request': { 'url': request.environ['PATH_INFO'], 'method': request.environ['REQUEST_METHOD'], 'data': request.POST, 'query_string': request.environ['QUERY_STRING'], 'headers': http.get_headers(request.environ), 'env': request.environ, }, } return { 'data': data, 'extra': dict( extra, session=getattr(request, 'weasyl_session', None), ), }
def ravenCaptureArguments(self, level=None, **extra): request = get_current_request() data = { 'level': level, 'user': { 'id': d.get_userid(), 'ip_address': d.get_address(), }, 'request': { 'url': request.environ['PATH_INFO'], 'method': request.environ['REQUEST_METHOD'], 'data': request.POST, 'query_string': request.environ['QUERY_STRING'], 'headers': http.get_headers(request.environ), 'env': request.environ, }, } return { 'data': data, 'extra': dict( extra, session=getattr(request, 'weasyl_session', None), ), }
def weasyl_exception_processor(): web.ctx.log_exc = web.ctx.env.get( 'raven.captureException', lambda **kw: traceback.print_exc()) try: return _handle() except ClientGoneAway: if 'raven.captureMessage' in web.ctx.env: web.ctx.env['raven.captureMessage']('HTTP client went away', level=logging.INFO) return '' except web.HTTPError: raise except Exception as e: userid = d.get_userid() errorpage_kwargs = {} if isinstance(e, WeasylError): if e.render_as_json: return json.dumps({'error': {'name': e.value}}) errorpage_kwargs = e.errorpage_kwargs if e.value in errorcode.error_messages: web.ctx.status = errorcode.error_status_code.get(e.value, '200 OK') message = '%s %s' % (errorcode.error_messages[e.value], e.error_suffix) return d.errorpage(userid, message, **errorpage_kwargs) web.ctx.status = '500 Internal Server Error' request_id = None if 'raven.captureException' in web.ctx.env: request_id = base64.b64encode(os.urandom(6), '+-') event_id, = web.ctx.env['raven.captureException'](request_id=request_id) request_id = '%s-%s' % (event_id, request_id) print 'unhandled error (request id %s) in %r' % (request_id, web.ctx.env) traceback.print_exc() if getattr(e, '__render_as_json', False): return json.dumps({'error': {}}) return d.errorpage(userid, request_id=request_id, **errorpage_kwargs)
def select_userinfo(userid, config): query = d.engine.execute(""" SELECT birthday, gender, country FROM userinfo WHERE userid = %(userid)s """, userid=userid).first() user_links = d.engine.execute(""" SELECT link_type, ARRAY_AGG(link_value ORDER BY link_value) FROM user_links WHERE userid = %(userid)s GROUP BY link_type """, userid=userid).fetchall() show_age = "b" in config or d.get_userid() in staff.MODS return { "birthday": query.birthday, "age": d.convert_age(query.birthday) if show_age else None, "show_age": "b" in config, "gender": query.gender, "country": query.country, "user_links": {r[0]: r[1] for r in user_links}, "sorted_user_links": sort_user_links(user_links), }
def __init__(self): if (self.disallow_api or self.moderator_only or self.admin_only) and weasyl.api.is_api_user(): raise web.forbidden() self.user_id = define.get_userid() self.status = define.common_status_check(self.user_id) # Status check if self.status: self.replace_methods(self.status_check_fail) return # Guest check if self.guest_required and self.user_id != 0: self.replace_methods(self.login_guest_fail) return # Login check if self.login_required and self.user_id == 0: self.replace_methods(self.login_check_fail) return # Permission check if self.moderator_only and self.user_id not in staff.MODS: self.replace_methods(self.permission_check_fail) return if self.admin_only and self.user_id not in staff.ADMINS: self.replace_methods(self.permission_check_fail) return
def __init__(self): if (self.disallow_api or self.moderator_only or self.admin_only) and weasyl.api.is_api_user(): raise web.forbidden() self.user_id = define.get_userid() self.status = define.common_status_check(self.user_id) # Status check if self.status: self.replace_methods(self.status_check_fail) return # Guest check if self.guest_required and self.user_id != 0: self.replace_methods(self.login_guest_fail) return # Login check if self.login_required and self.user_id == 0: self.replace_methods(self.login_check_fail) return # Permission check if self.moderator_only and self.user_id not in staff.MODS: self.replace_methods(self.permission_check_fail) return if self.admin_only and self.user_id not in staff.ADMINS: self.replace_methods(self.permission_check_fail) return
def admin_render_page(template_path, args=()): userid = d.get_userid() status = d.common_status_check(userid) if status: return d.common_status_page(userid, status) elif not userid: return d.webpage(userid) elif userid not in staff.ADMINS: return d.webpage(userid, errorcode.permission) else: return d.webpage(userid, template_path, args)
def admin_render_page(template_path, args=()): userid = d.get_userid() status = d.common_status_check(userid) if status: return d.common_status_page(userid, status) elif not userid: return d.webpage(userid) elif userid not in staff.ADMINS: return d.webpage(userid, errorcode.permission) else: return d.webpage(userid, template_path, args)
def POST(self): userid = d.get_userid() status = d.common_status_check(userid) if status: return d.common_status_page(userid, status) elif not userid: return d.webpage(userid) elif userid not in staff.MODS: return d.webpage(userid, d.errorcode.permission) form = web.input(title="", content="") create(userid, form) raise web.seeother("/admincontrol")
def POST(self): userid = d.get_userid() status = d.common_status_check(userid) if status: return d.common_status_page(userid, status) elif not userid: return d.webpage(userid) elif userid not in staff.MODS: return d.webpage(userid, d.errorcode.permission) form = web.input(title="", content="") create(userid, form) raise web.seeother("/admincontrol")
def weasyl_exception_processor(): web.ctx.log_exc = web.ctx.env.get('raven.captureException', lambda **kw: traceback.print_exc()) try: return _handle() except ClientGoneAway: if 'raven.captureMessage' in web.ctx.env: web.ctx.env['raven.captureMessage']('HTTP client went away', level=logging.INFO) return '' except web.HTTPError: raise except Exception as e: userid = d.get_userid() errorpage_kwargs = {} if isinstance(e, WeasylError): if e.render_as_json: return json.dumps({'error': {'name': e.value}}) errorpage_kwargs = e.errorpage_kwargs if e.value in errorcode.error_messages: web.ctx.status = errorcode.error_status_code.get( e.value, '200 OK') message = '%s %s' % (errorcode.error_messages[e.value], e.error_suffix) return d.errorpage(userid, message, **errorpage_kwargs) web.ctx.status = '500 Internal Server Error' request_id = None if 'raven.captureException' in web.ctx.env: request_id = base64.b64encode(os.urandom(6), '+-') event_id, = web.ctx.env['raven.captureException']( request_id=request_id) request_id = '%s-%s' % (event_id, request_id) print 'unhandled error (request id %s) in %r' % (request_id, web.ctx.env) traceback.print_exc() if getattr(e, '__render_as_json', False): return json.dumps({'error': {}}) return d.errorpage(userid, request_id=request_id, **errorpage_kwargs)
def ravenCaptureArguments(self, level=None, **extra): data = { 'level': level, 'user': { 'id': d.get_userid(), 'ip_address': d.get_address(), }, 'request': { 'url': web.ctx.env['PATH_INFO'], 'method': web.ctx.env['REQUEST_METHOD'], 'data': web.webapi.rawinput(method='POST'), 'query_string': web.ctx.env['QUERY_STRING'], 'headers': http.get_headers(web.ctx.env), 'env': web.ctx.env, }, } return { 'data': data, 'extra': dict( extra, session=web.ctx.get('weasyl_session'), ), }
def select_statistics(userid): if "i" in d.get_config(userid) and d.get_userid() not in staff.MODS: return return _select_statistics(userid)
def select_statistics(userid): show = "i" not in d.get_config(userid) or d.get_userid() in staff.MODS return _select_statistics(userid), show
def weasyl_404(request): userid = d.get_userid() return Response(d.errorpage( userid, "**404!** The page you requested could not be found."), status="404 Not Found")
def select_statistics(userid): show = "i" not in d.get_config(userid) or d.get_userid() in staff.MODS return _select_statistics(userid), show
def weasyl_404(): userid = d.get_userid() return web.notfound(d.errorpage( userid, "**404!** The page you requested could not be found."))
def weasyl_404(request): userid = d.get_userid() return Response(d.errorpage(userid, "**404!** The page you requested could not be found."), status="404 Not Found")
def weasyl_404(): userid = d.get_userid() return web.notfound( d.errorpage(userid, "**404!** The page you requested could not be found."))