def handler(request): msg = str(request.exception.message) log.info("xyz_handler (%s): %s" % (status, str(msg))) # request.response.status = status # request.response.content_type = "application/json" body = status_body(success=False, message=msg, to_json=True) rc = Response(body) rc.status = status rc.content_type = "application/json" return rc
def graphql_api(request): slug = request.matchdict['discussion_slug'] # Check permission discussion = find_discussion_from_slug(slug) if discussion is None: raise HTTPUnauthorized() # Check if this discussion has CORS enabled cors_pref = discussion.preferences['graphql_valid_cors'] has_cors = cors_pref and len(cors_pref) > 0 cors_string = str(",".join(cors_pref)) cors_headers = [('Access-Control-Allow-Origin', cors_string), ('Access-Control-Allow-Headers', 'Content-Type, Cookie'), ('Access-Control-Allow-Methods', 'POST, OPTIONS')] # Response for preflight-CORS requests # No authentication needed if has_cors: if request.method == 'OPTIONS': response = Response(status=200, body=b'') response.headerlist = [] response.headerlist.extend(cors_headers) return response discussion_id = discussion.id # set discussion_id in request.matchdict which is use as context_value request.matchdict['discussion_id'] = discussion_id user_id = request.authenticated_userid or Everyone permissions = get_permissions(user_id, discussion_id) # don't check read permission for TextFields query needed on the signup # page because we don't have read permission on private debate check_read_permission = True if request.content_type == 'application/json' and u'query' in request.json_body and ( request.json_body['query'].startswith(u'query TextFields(') or request.json_body['query'].startswith(u'query UpdateShareCount(') or request.json_body['query'].startswith(u'query TabsCondition(') or request.json_body['query'].startswith(u'query LegalContents(') or request.json_body['query'].startswith( u'query DiscussionPreferences')): check_read_permission = False if check_read_permission and not discussion.user_can( user_id, CrudPermissions.READ, permissions): raise HTTPUnauthorized() middleware = MiddlewareManager(LoggingMiddleware(), ReadOnlyMiddleware(), wrap_in_promise=False) solver = graphql_wsgi_wrapper(Schema, middleware=middleware) response = solver(request) if has_cors: response.headerlist.extend(cors_headers) return response
def graphql_api(request): slug = request.matchdict['discussion_slug'] # Check permission discussion = models.Discussion.query.filter( models.Discussion.slug == slug).one() if discussion is None: raise HTTPUnauthorized() # Check if this discussion has CORS enabled cors_pref = discussion.preferences['graphql_valid_cors'] has_cors = cors_pref and len(cors_pref) > 0 cors_string = str(",".join(cors_pref)) cors_headers = [ ('Access-Control-Allow-Origin', cors_string), ('Access-Control-Allow-Headers', 'Content-Type, Cookie'), ('Access-Control-Allow-Methods', 'POST, OPTIONS') ] # Response for preflight-CORS requests # No authentication needed if has_cors: if request.method == 'OPTIONS': response = Response(status=200, body=b'') response.headerlist = [] response.headerlist.extend(cors_headers) return response discussion_id = discussion.id # set discussion_id in request.matchdict which is use as context_value request.matchdict['discussion_id'] = discussion_id user_id = request.authenticated_userid or Everyone permissions = get_permissions(user_id, discussion_id) # don't check read permission for TextFields query needed on the signup # page because we don't have read permission on private debate check_read_permission = True if request.content_type == 'application/json' and u'query' in request.json_body and ( request.json_body['query'].startswith(u'query TextFields(') or request.json_body['query'].startswith(u'query TabsCondition(') or request.json_body['query'].startswith(u'query LegalContents(')): check_read_permission = False if check_read_permission and not discussion.user_can(user_id, CrudPermissions.READ, permissions): raise HTTPUnauthorized() # Using a middleware transforms the request to a promise that # doesn't play nice with multiprocesses or multithreading and sqlalchemy session. # We monkey patch get_graphql_params for logging instead. solver = graphql_wsgi_wrapper(Schema) # , middleware=[LoggingMiddleware()]) response = solver(request) if has_cors: response.headerlist.extend(cors_headers) return response
def stub_view(request): what = request.matchdict["what"] if what == "ok": return Response(status=200) if what == "notfound": return Response(status=404) if what == "forbidden": return Response(status=403) if what == "exc_forbidden": raise HTTPForbidden if what == "impl_forbidden": request.response.status_code = 403 return "" raise HTTPNotFound
def graphql_api(request): if request.method == 'OPTIONS': response = Response(status=200, body=b'') response.headerlist = [] # we have to reset headerlist response.headerlist.extend(( ('Access-Control-Allow-Origin', '*'), ('Access-Control-Allow-Headers', 'Content-Type'), )) else: solver = graphql_wsgi(schema) response = solver(request) response.headerlist.append(('Access-Control-Allow-Origin', '*')) return response
def handler(request): msg = str(request.exception.message) log.info("xyz_handler (%s): %s" % (status, str(msg))) # request.response.status = status # request.response.content_type = "application/json" body = status_body( status="error", message=msg, ) rc = Response(body) rc.status = status rc.content_type = "application/json" return rc
def comment_authors(self): authors = "" for comment in DB.get_all(Comment): comment = comment.serialize() if comment['author'] not in authors: authors += "<li>"+comment['author']+"</li>" return Response(authors, content_type = 'text/plain')
def cors_helper(request, response=None): if response is None: response = Response() request_headers = request.headers['Access-Control-Request-Headers'].lower() request_headers = re.findall('\w(?:[-\w]*\w)', request_headers) response_headers = ['access-control-allow-origin'] for req_acoa_header in request_headers: if req_acoa_header not in response_headers: response_headers.append(req_acoa_header) response_headers = ','.join(response_headers) response.headers.update({ 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': '%s' % response_headers }) response.status_int = 204 print response.headers return response
def login(self, request): log_debug = self.log_debug if log_debug: log.debug('Handling OpenID login') # Load default parameters that all Auth Responders take openid_url = request.params.get('openid_identifier') # Let inherited consumers alter the openid identifier if desired openid_url = self._lookup_identifier(request, openid_url) if not openid_url: log.error('Velruse: no openid_url') raise MissingParameter('No openid_identifier was found') openid_session = {} oidconsumer = consumer.Consumer(openid_session, self.openid_store) try: if log_debug: log.debug('About to try OpenID begin') authrequest = oidconsumer.begin(openid_url) except consumer.DiscoveryFailure: if log_debug: log.debug('OpenID begin DiscoveryFailure') raise if authrequest is None: if log_debug: log.debug('OpenID begin returned empty') raise ThirdPartyFailure("OpenID begin returned nothing") if log_debug: log.debug('Updating authrequest') # Update the authrequest self._update_authrequest(request, authrequest) return_to = request.route_url(self.process_url) # OpenID 2.0 lets Providers request POST instead of redirect, this # checks for such a request. if authrequest.shouldSendRedirect(): if log_debug: log.debug('About to initiate OpenID redirect') redirect_url = authrequest.redirectURL(realm=self.realm, return_to=return_to, immediate=False) request.session['openid_session'] = openid_session return HTTPFound(location=redirect_url) else: if log_debug: log.debug('About to initiate OpenID POST') html = authrequest.htmlMarkup( realm=self.realm, return_to=return_to, immediate=False) request.session['openid_session'] = openid_session return Response(body=html)
def request_factory(environ): request = Request(environ) if request.is_xhr: request.response = Response() request.response.headerlist = [] request.response.headerlist.extend( (('Access-Control-Allow-Origin', '*'), ('Content-Type', 'application/json'))) return request
def view(request, sid): res = Response() res = sio.emit("data", room=sid) cnt = 0 while True: cnt += 1 tm = time.time() return sio.emit("sine", {"value": (tm * 1000, math.sin(tm))})
def search_raw(self): """ Search results without template (raw Response() object). Templates help escaping characters. """ query = self.request.params.get('q', '') #query = html.escape(query) content = """ <html> <body> <p>Your query is: {0}</p> </body> </html>""".format(query) return Response(content)
def notfound_404_view(request): """A custom 404 view returning JSON error message body instead of HTML. :returns: a JSON response with the body:: json.dumps(dict(error="URI Not Found '...'")) """ msg = str(request.exception.message) get_log().info("notfound_404_view: URI '%s' not found!" % str(msg)) request.response.status = httplib.NOT_FOUND request.response.content_type = "application/json" body = status_body( status="error", message="URI Not Found '%s'" % msg, ) return Response(body)
def get_response(self, filename, content_type, data): """Prepare the response.""" response = Response() header_list = [ ('Content-Disposition', 'attachment; filename={filename}'.format( filename=filename )), ('Pragma', 'no-cache'), ('Expires', 'Fri, 29 Mar 2012 17:30:00 GMT'), ] response.status_int = 200 response.charset = 'utf-8' response.content_type = content_type response.text = data response.headerlist = header_list return response
def request_factory(environ): """Factory function that adds the headers necessary for Cross-domain calls. Adapted from: http://stackoverflow.com/questions/21107057/pyramid-cors-for-ajax-requests """ request = Request(environ) if request.is_xhr: request.response = Response() request.response.headerlist = [] request.response.headerlist.extend( ( ('Access-Control-Allow-Origin', '*'), ('Access-Control-Allow-Credentials', 'true'), ('Access-Control-Max-Age', 86400), ('Content-Type', 'application/json') ) ) return request
def category(self): """ Probability histogram for category """ id_doc = self.request.matchdict.get('id_doc') start_date = self.request.params.get('start_date') end_date = self.request.params.get('end_date') # Get starting date if start_date is None: return Response("Start date mandatory", status=500) else: start_date_obj = datetime.datetime.strptime(start_date, "%Y-%m-%d") # Get end date if end_date is None: end_date_obj = datetime.datetime.now() end_date = end_date_obj.strftime("%Y-%m-%d") else: end_date_obj = datetime.datetime.strptime(end_date, "%Y-%m-%d") status_list = self.status_base.get_status_probability( category_id_doc=id_doc, start_date=start_date_obj, end_date=end_date_obj) if len(status_list) == 0: return {} # Transform results in list of values saida = list() for status in status_list['results']: if status is not None: saida.append(status['category']['category_probability']) # Plot Histogram data = Data([Histogram(x=saida)]) filename = "category-" + id_doc + "-" + start_date + "-" + end_date plot_url = py.plot(data, filename=filename) return {"graph_url": plot_url, "category_id_doc": id_doc}
def graphqlview(context, request): #pylint: disable=W0613 token = request.headers.get('X-Api-Key', '') is_private = getattr(request.root, 'only_for_members', False) if is_private and not auth_user(token, request): response = HTTPUnauthorized() response.content_type = 'application/json' return response if request.method == 'OPTIONS': response = Response(status=200, body=b'') response.headerlist = [] # we have to reset headerlist response.headerlist.extend(( ('Access-Control-Allow-Origin', '*'), ('Access-Control-Allow-Headers', 'Content-Type'), )) else: solver = graphql_wsgi(schema) response = solver(request) response.headerlist.append(('Access-Control-Allow-Origin', '*')) return response
def second_view(context, request): return Response(u'second')
def _do(method, headers, credentials=False, settings=SETTINGS): req = Request({}, method=method, headers=headers) req.response = Response() set_cors_headers(settings, req, "foo", credentials, req.response) return req.response.headers
def foo(context, request): called.append(True) return Response(u"")
def first_view(context, request): return Response(u'first')
def my_viewlet(request): assert hasattr(request, 'registry') assert hasattr(request, 'context') assert hasattr(request, 'user') return Response(u"Hello world!")
def foo(context, request): bar = request.POST['bar'] return Response(u"{0} world!".format(bar))
def foo(context, request): greeting = request.POST['greeting'] return Response(u"{0} world!".format(greeting))
def special(context, request): return Response(u"Hello world!")
def foo(context, request): slot = request.kotti_slot return Response(f"I'm in slot {slot}.")
def foo(context, request): bar = request.POST["bar"] return Response(f"{bar} world!")
def foo(context, request): slot = request.kotti_slot return Response(u"I'm in slot {0}.".format(slot))
def no_slash(request): return Response("No slash")
def category_list(self): """ Probability histogram for category """ start_date = self.request.params.get('start_date') end_date = self.request.params.get('end_date') # Get starting date if start_date is None: return Response("Start date mandatory", status=500) else: start_date_obj = datetime.datetime.strptime(start_date, "%Y-%m-%d") # Get end date if end_date is None: end_date_obj = datetime.datetime.now() end_date = end_date_obj.strftime("%Y-%m-%d") else: end_date_obj = datetime.datetime.strptime(end_date, "%Y-%m-%d") categories = self.crimes_base.get_all() graph_list = list() for category in categories: id_doc = category['_metadata']['id_doc'] # Render all categories status_list = self.status_base.get_status_probability( category_id_doc=id_doc, start_date=start_date_obj, end_date=end_date_obj) if len(status_list) == 0: return {} # Transform results in list of values saida = list() for status in status_list['results']: if status is not None: saida.append(status['category']['category_probability']) # Plot Histogram graph = Histogram( x=saida, opacity=0.75, name=category['category_pretty_name'], xbins=XBins( # start=-3.2, # end=2.8, # size=0.2 ), marker=Marker(color=category['color']), ) graph_list.append(graph) data = Data(graph_list) layout = Layout( title="""Probabilidade na Categoria entre %s e %s""" % (start_date, end_date), xaxis=XAxis(title='Probabilidade'), yaxis=YAxis(title='Ocorrências'), barmode='overlay', # bargap=0.25, # bargroupgap=0.3 ) filename = "category-" + start_date + "-" + end_date fig = Figure(data=data, layout=layout) plot_url = py.plot(fig, filename=filename, auto_open=False) return {'graph_url': plot_url, 'graph_id': filename}
def has_slash(request): return Response("Has slash")
def states(self): """ Generate graphics for states """ start_date = self.request.params.get('start_date') end_date = self.request.params.get('end_date') # Get starting date if start_date is None: return Response("Start date mandatory", status=500) else: start_date_obj = datetime.datetime.strptime(start_date, "%Y-%m-%d") # Get end date if end_date is None: end_date_obj = datetime.datetime.now() end_date = end_date_obj.strftime("%Y-%m-%d") else: end_date_obj = datetime.datetime.strptime(end_date, "%Y-%m-%d") analysis = self.analytics_base.get_state_analysis( start_date=start_date_obj, end_date=end_date_obj) # Brasil states list uf_list = sorted([ "GO", "MT", "MS", "DF", "AM", "AC", "RO", "RR", "AP", "TO", "PA", "MA", "PI", "CE", "RN", "PB", "PE", "SE", "AL", "BA", "SP", "MG", "RJ", "ES", "PR", "SC", "RS" ]) # Now create graph for all states trace_list = list() for category_id_doc in sorted(analysis.keys()): if category_id_doc == 'total_status': continue category = self.crimes_base.get_document(category_id_doc) bary = list() for uf in uf_list: if analysis[category_id_doc].get(uf) is None: bary.append(0) else: # Add these to the bar bary.append(analysis[category_id_doc][uf]) # Create trace bar to add to the graph trace = Bar(x=uf_list, y=bary, name=category['category_pretty_name']) trace_list.append(trace) # Ploth graph bar with title data = Data(trace_list) layout = Layout( barmode='stack', title= """Crimes identificados por estado entre %s e %s. Total: %s encontrados""" % (start_date, end_date, analysis['total_status'])) fig = Figure(data=data, layout=layout) filename = """states-between-%s-and-%s""" % (start_date, end_date) plot_url = py.plot(fig, filename=filename, auto_open=False) return {'graph_url': plot_url, 'graph_id': filename}