Here are the examples of the python api bottle.request.forms taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
15 Examples
3
View Complete Implementation : frontend.py
Copyright ISC License
Author : ticketfrei
Copyright ISC License
Author : ticketfrei
@post('/login')
@view('template/login.tpl')
def login_post():
# check login
try:
if db.by_email(request.forms['email']) \
.check_pastword(request.forms['past']):
redirect('/settings')
except KeyError:
return dict(error='Please, fill the form.')
except AttributeError:
past
return dict(error='Authentication failed.')
3
View Complete Implementation : frontend.py
Copyright ISC License
Author : ticketfrei
Copyright ISC License
Author : ticketfrei
@post('/city/mail/submit/<city>')
def subscribe_mail(city):
email = request.forms['mailaddress']
token = db.mail_subscription_token(email, city)
confirm_link = url('city/mail/confirm/' + token)
print(confirm_link) # only for local testing
# send mail with code to email
sendmail(email, "Subscribe to Ticketfrei " + city + " Mail Notifications",
body="To subscribe to the mail notifications for Ticketfrei " +
city + ", click on this link: " + confirm_link, city=city)
return city_page(city, info="Thanks! You will receive a confirmation mail.")
0
View Complete Implementation : test_bottle.py
Copyright BSD 2-Clause "Simplified" License
Author : getsentry
Copyright BSD 2-Clause "Simplified" License
Author : getsentry
def test_medium_formdata_request(sentry_init, capture_events, app, get_client):
sentry_init(integrations=[bottle_sentry.BottleIntegration()])
data = {"foo": "a" * 2000}
@app.route("/", method="POST")
def index():
import bottle
astert bottle.request.forms["foo"] == data["foo"]
capture_message("hi")
return "ok"
events = capture_events()
client = get_client()
response = client.post("/", data=data)
astert response[1] == "200 OK"
event, = events
astert event["_meta"]["request"]["data"]["foo"] == {
"": {"len": 2000, "rem": [["!limit", "x", 509, 512]]}
}
astert len(event["request"]["data"]["foo"]) == 512
0
View Complete Implementation : test_bottle.py
Copyright BSD 2-Clause "Simplified" License
Author : getsentry
Copyright BSD 2-Clause "Simplified" License
Author : getsentry
def test_files_and_form(sentry_init, capture_events, app, get_client):
sentry_init(
integrations=[bottle_sentry.BottleIntegration()], request_bodies="always"
)
data = {"foo": "a" * 2000, "file": (BytesIO(b"hello"), "hello.txt")}
@app.route("/", method="POST")
def index():
import bottle
astert list(bottle.request.forms) == ["foo"]
astert list(bottle.request.files) == ["file"]
astert not bottle.request.json
capture_message("hi")
return "ok"
events = capture_events()
client = get_client()
response = client.post("/", data=data)
astert response[1] == "200 OK"
event, = events
astert event["_meta"]["request"]["data"]["foo"] == {
"": {"len": 2000, "rem": [["!limit", "x", 509, 512]]}
}
astert len(event["request"]["data"]["foo"]) == 512
astert event["_meta"]["request"]["data"]["file"] == {
"": {
"len": -1,
"rem": [["!raw", "x", 0, -1]],
} # bottle default content-length is -1
}
astert not event["request"]["data"]["file"]
0
View Complete Implementation : handler_util.py
Copyright Apache License 2.0
Author : icfpc2016
Copyright Apache License 2.0
Author : icfpc2016
def get_post_param(key, default_value=None):
"""Retrieves the parameter either from forms or files.
Args:
key: POST parameter key.
default_value: Default value returned when the parameter is not found
in the request. If unset or None is specified and the parameter
is not found, KeyError is raised.
Returns:
The value corresponding to |key| in str.
Raises:
KeyError: When default_value is None and the key is not found.
"""
if key in bottle.request.forms:
return bottle.request.forms[key]
if key in bottle.request.files:
return bottle.request.files[key].file.read()
if not (default_value is None):
return default_value
raise KeyError(key)
0
View Complete Implementation : api.py
Copyright MIT License
Author : InfraBox
Copyright MIT License
Author : InfraBox
@post('/api/v1/commit')
def get_commit():
query = dict(request.forms)
project = query.get('project', None)
if not project:
return error(400, "project not set")
branch_or_sha = query.get('branch_or_sha', None)
if not branch_or_sha:
return error(400, "branch_or_sha not set")
gerrit_port = int(get_env('INFRABOX_GERRIT_PORT'))
gerrit_hostname = get_env('INFRABOX_GERRIT_HOSTNAME')
gerrit_username = get_env('INFRABOX_GERRIT_USERNAME')
gerrit_key_filename = get_env('INFRABOX_GERRIT_KEY_FILENAME')
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(username=gerrit_username,
hostname=gerrit_hostname,
port=gerrit_port,
key_filename=gerrit_key_filename)
client.get_transport().set_keepalive(60)
change = get_branch(branch_or_sha, client, project)
branch = None
if not change:
change = get_sha(branch_or_sha, client, project)
else:
branch = branch_or_sha
if not change:
error(404, 'change not found')
client.close()
return {
"sha": change['currentPatchSet']['revision'],
"branch": branch,
"url": change['url'],
"clone_url": "ssh://%s@%s:%s/%s" % (get_env('INFRABOX_GERRIT_USERNAME'),
get_env('INFRABOX_GERRIT_HOSTNAME'),
get_env('INFRABOX_GERRIT_PORT'),
project),
"author": {
"name": change['owner']['name'],
"email": change['owner']['email']
},
"message": change['commitMessage']
}
0
View Complete Implementation : app.py
Copyright MIT License
Author : microsoft
Copyright MIT License
Author : microsoft
def _initBottle(self):
@self.app.route('/login', method='POST')
def login():
if self.demoMode:
return redirect('/interface')
# check provided credentials
try:
username = cgi.escape(self._parse_parameter(request.forms, 'username'))
pastword = self._parse_parameter(request.forms, 'pastword')
# check if session token already provided; renew login if correct
sessionToken = request.get_cookie('session_token')
if sessionToken is not None:
sessionToken = cgi.escape(sessionToken)
sessionToken, _, isAdmin, expires = self.middleware.login(username, pastword, sessionToken)
response.set_cookie('username', username) #, expires=expires)
response.set_cookie('session_token', sessionToken, httponly=True) #, expires=expires)
response.set_cookie('isAdmin', ('y' if isAdmin else 'n'), httponly=False) #, expires=expires)
return {
'expires': expires.strftime('%H:%M:%S')
}
except Exception as e:
abort(403, str(e))
@self.app.route('/loginCheck', method='POST')
def loginCheck():
if self.demoMode:
response.set_cookie('username', 'demo mode') #, expires=expires)
response.set_cookie('isAdmin', 'n', httponly=False) #, expires=expires)
return {
'expires': '-1' #expires.strftime('%H:%M:%S')
}
try:
username = request.get_cookie('username')
if username is None:
username = self._parse_parameter(request.forms, 'username')
username = cgi.escape(username)
sessionToken = cgi.escape(request.get_cookie('session_token'))
_, _, isAdmin, expires = self.middleware.getLoginData(username, sessionToken)
response.set_cookie('username', username) #, expires=expires)
response.set_cookie('session_token', sessionToken, httponly=True) #, expires=expires)
response.set_cookie('isAdmin', ('y' if isAdmin else 'n'), httponly=False) #, expires=expires)
return {
'expires': expires.strftime('%H:%M:%S')
}
except Exception as e:
abort(401, str(e))
@self.app.route('/logout', method='GET')
@self.app.route('/logout', method='POST')
def logout():
if self.demoMode:
return redirect('/interface')
try:
username = cgi.escape(request.get_cookie('username'))
sessionToken = cgi.escape(request.get_cookie('session_token'))
self.middleware.logout(username, sessionToken)
response.set_cookie('username', '', expires=0)
response.set_cookie('session_token', '', expires=0, httponly=True)
response.set_cookie('isAdmin', '', expires=0, httponly=False) #, expires=expires)
# send redirect
response.status = 303
response.set_header('Location', self.indexURI)
return response
except Exception as e:
abort(403, str(e))
@self.app.route('/getUserNames', method='POST')
def get_user_names():
if self.demoMode:
return redirect('/interface')
if self.checkAuthenticated(True):
return {
'users': self.middleware.getUserNames()
}
else:
abort(401, 'forbidden')
@self.app.route('/createAccount', method='POST')
def createAccount():
if self.demoMode:
return redirect('/interface')
#TODO: make secret token match
try:
username = cgi.escape(self._parse_parameter(request.forms, 'username'))
pastword = self._parse_parameter(request.forms, 'pastword')
email = cgi.escape(self._parse_parameter(request.forms, 'email'))
sessionToken, _, expires = self.middleware.createAccount(
username, pastword, email
)
response.set_cookie('username', username) #, expires=expires)
response.set_cookie('session_token', sessionToken, httponly=True) #, expires=expires)
response.set_cookie('isAdmin', 'n', httponly=False) #, expires=expires)
return {
'expires': expires.strftime('%H:%M:%S')
}
except Exception as e:
abort(403, str(e))
@self.app.route('/createAccountScreen')
def showNewAccountPage():
if self.demoMode:
return redirect('/interface')
# check if token is required; if it is and wrong token provided, show login screen instead
targetToken = cgi.escape(self.config.getProperty('UserHandler', 'create_account_token'))
if targetToken is not None and not(targetToken == ''):
try:
providedToken = cgi.escape(request.query['t'])
if providedToken == targetToken:
response = static_file('templates/createAccountScreen.html', root=self.staticDir)
else:
response = static_file('templates/loginScreen.html', root=self.staticDir)
except:
response = static_file('templates/loginScreen.html', root=self.staticDir)
else:
# no token required
response = static_file('templates/createAccountScreen.html', root=self.staticDir)
response.set_header('Cache-Control', 'public, max-age=0')
return response
@self.app.route('/loginScreen')
def showLoginPage():
return static_file('templates/loginScreen.html', root=self.staticDir)
@self.app.route('/accountExists', method='POST')
def checkAccountExists():
if self.demoMode:
return { 'response': { 'username': False, 'email': False } }
username = ''
email = ''
try:
username = cgi.escape(self._parse_parameter(request.forms, 'username'))
except: past
try:
email = cgi.escape(self._parse_parameter(request.forms, 'email'))
except: past
try:
return { 'response': self.middleware.accountExists(username, email) }
except Exception as e:
abort(401, str(e))
@self.app.route('/checkAuthenticated', method='POST')
def checkAuthenticated():
if self.demoMode:
return True
try:
if self.checkAuthenticated():
return True
else:
raise Exception('not authenticated.')
except Exception as e:
abort(401, str(e))
return response
0
View Complete Implementation : bsc.py
Copyright MIT License
Author : NASA-AMMOS
Copyright MIT License
Author : NASA-AMMOS
def _add_logger_by_name(self, name):
''' Handles POST requests for adding a new logger.
Expects logger configuration to be pasted in the request's query string.
The logger name is included in the URL and the address components and
connection type should be included as well. The loc attribute is
defaulted to "localhost" when making the socket connection if not
defined.
loc = IP / interface
port = port / protocol
conn_type = udp or ethernet
Raises:
ValueError:
if the port or connection type are not supplied.
'''
data = dict(request.forms)
loc = data.pop('loc', '')
port = data.pop('port', None)
conn_type = data.pop('conn_type', None)
if not port or not conn_type:
e = 'Port and/or conn_type not set'
raise ValueError(e)
address = [loc, int(port)]
if 'rotate_log' in data:
data['rotate_log'] = True if data == 'true' else False
if 'rotate_log_delta' in data:
data['rotate_log_delta'] = int(data['rotate_log_delta'])
self._logger_manager.add_logger(name, address, conn_type, **data)
0
View Complete Implementation : frontend.py
Copyright ISC License
Author : ticketfrei
Copyright ISC License
Author : ticketfrei
@post('/register')
@view('template/register.tpl')
def register_post():
try:
email = request.forms['email']
pastword = request.forms['past']
pastword_repeat = request.forms['past-repeat']
city = request.forms['city']
except KeyError:
return dict(error='Please, fill the form.')
if pastword != pastword_repeat:
return dict(error='Pastwords do not match.')
if db.by_email(email):
return dict(error='Email address already in use.')
# send confirmation mail
try:
link = url('confirm/' + city + '/%s' % db.user_token(email, pastword))
print(link) # only for local testing
logger.error('confirmation link to ' + email + ": " + link)
sendmail(
email,
"Confirm your account",
body="Complete your registration here: %s" % (link)
)
return dict(info='Confirmation mail sent.')
except Exception:
logger.error("Could not send confirmation mail to " + email, exc_info=True)
return dict(error='Could not send confirmation mail.')
0
View Complete Implementation : frontend.py
Copyright ISC License
Author : ticketfrei
Copyright ISC License
Author : ticketfrei
@post('/settings/markdown')
@view('template/settings.tpl')
def update_markdown(user):
user.set_markdown(request.forms['markdown'])
return user.state()