def method_not_allowed(res):
if request.method == 'OPTIONS':
new_res = bottle.HTTPResponse()
new_res.set_header('Access-Control-Allow-Origin', '*')
new_res.set_header('Access-Control-Allow-Methods', 'GET, POST, DELETE, PUT')
new_res.set_header('Access-Control-Allow-Headers', 'X-Session-Token, X-Impersonate-Username, Content-Type')
return new_res
res.headers['Allow'] += ', OPTIONS'
return request.app.default_error_handler(res)
python类HTTPResponse()的实例源码
def render_pdf_from_html():
template = (
bottle.request.forms.data or bottle.request.forms.template or ''
)
backend = bottle.request.forms.backend or 'pdfkit'
code = bottle.request.forms.qr or None
options = bottle.request.forms.decode()
try:
qr_x = int(bottle.request.forms.qr_x or 545)
qr_y = int(bottle.request.forms.qr_y or 20)
version = None
if bottle.request.forms.version:
version = int(bottle.request.forms.version)
except ValueError:
return bottle.HTTPResponse(
status=400,
body='Invalid value passed to QR code coordinates.',
)
try:
pdf_file = backends_registry.get(backend).render(template, options)
except AttributeError:
return bottle.HTTPResponse(
status=400,
body='Provided backend (%s) is not supported.' % backend,
)
if code is not None:
try:
pdf_file = postprocess_pdf(pdf_file, code, qr_x, qr_y, version)
except ValueError:
logger.error('Failed to append QR code', exc_info=True)
return bottle.HTTPResponse(
status=422,
body='Unable to append QR code to rendered template.',
)
bottle.response.headers['Content-Type'] = 'application/pdf; charset=UTF-8'
return pdf_file
def buttonIf():
var = request.json
# print (var)
index = int(var["index"])
onoff = button(index)
retBody = {
"ret": "ok",
"onoff": "on" if onoff == True else "off"
}
r = HTTPResponse(status=200, body=retBody)
r.set_header('Content-Type', 'application/json')
return r
def rotaryEncoderIf():
var = request.json
# print (var)
rotate = rotaryEncoder()
retBody = {
"ret": "ok",
"rotate": rotate
}
r = HTTPResponse(status=200, body=retBody)
r.set_header('Content-Type', 'application/json')
return r
def tapIf():
var = request.json
# print (var)
tapNum = tap()
retBody = {
"ret": "ok",
"tapNum": tapNum
}
r = HTTPResponse(status=200, body=retBody)
r.set_header('Content-Type', 'application/json')
return r
def GSensorIf():
var = request.json
# print (var)
xyz = GSensor()
retBody = {
"ret": "ok",
"x": xyz[0],
"y": xyz[1],
"z": xyz[2],
}
r = HTTPResponse(status=200, body=retBody)
r.set_header('Content-Type', 'application/json')
return r
def method2(self) -> HTTPResponse:
return HTTPResponse()
def apply(self, callback, route):
# hack to support bottle v0.9.x
if bottle.__version__.startswith('0.9'):
config = route['config']
_callback = route['callback']
else:
config = route.config
_callback = route.callback
if "sqlalchemy" in config: # support for configuration before `ConfigDict` namespaces
g = lambda key, default: config.get('sqlalchemy', {}).get(key, default)
else:
g = lambda key, default: config.get('sqlalchemy.' + key, default)
keyword = g('keyword', self.keyword)
create = g('create', self.create)
commit = g('commit', self.commit)
use_kwargs = g('use_kwargs', self.use_kwargs)
try:
# check if inspect.signature exists
inspect.signature
except AttributeError:
argspec = inspect.getargspec(_callback)
parameters = argspec.args
accept_kwargs = argspec.keywords
else:
parameters = inspect.signature(_callback).parameters
accept_kwargs = any(p.kind == inspect.Parameter.VAR_KEYWORD
for p in parameters.values())
if not ((use_kwargs and accept_kwargs) or keyword in parameters):
return callback
if create:
self.metadata.create_all(self.engine)
def wrapper(*args, **kwargs):
kwargs[keyword] = session = self.create_session(bind=self.engine)
try:
rv = callback(*args, **kwargs)
if commit:
session.commit()
except (SQLAlchemyError, bottle.HTTPError):
session.rollback()
raise
except bottle.HTTPResponse:
if commit:
session.commit()
raise
finally:
if isinstance(self.create_session, ScopedSession):
self.create_session.remove()
else:
session.close()
return rv
return wrapper
def apply(self, callback, route):
# hack to support bottle v0.9.x
if bottle.__version__.startswith('0.9'):
config = route['config']
_callback = route['callback']
else:
config = route.config
_callback = route.callback
if "sqlalchemy" in config: # support for configuration before `ConfigDict` namespaces
g = lambda key, default: config.get('sqlalchemy', {}).get(key, default)
else:
g = lambda key, default: config.get('sqlalchemy.' + key, default)
keyword = g('keyword', self.keyword)
create = g('create', self.create)
commit = g('commit', self.commit)
use_kwargs = g('use_kwargs', self.use_kwargs)
try:
# check if inspect.signature exists
inspect.signature
except AttributeError:
argspec = inspect.getargspec(_callback)
parameters = argspec.args
accept_kwargs = argspec.keywords
else:
parameters = inspect.signature(_callback).parameters
accept_kwargs = any(p.kind == inspect.Parameter.VAR_KEYWORD
for p in parameters.values())
if not ((use_kwargs and accept_kwargs) or keyword in parameters):
return callback
if create:
self.metadata.create_all(self.engine)
def wrapper(*args, **kwargs):
kwargs[keyword] = session = self.create_session(bind=self.engine)
try:
rv = callback(*args, **kwargs)
if commit:
session.commit()
except (SQLAlchemyError, bottle.HTTPError):
session.rollback()
raise
except bottle.HTTPResponse:
if commit:
session.commit()
raise
finally:
if isinstance(self.create_session, ScopedSession):
self.create_session.remove()
else:
session.close()
return rv
return wrapper