本文整理汇总了Python中werkzeug.url_encode函数的典型用法代码示例。如果您正苦于以下问题:Python url_encode函数的具体用法?Python url_encode怎么用?Python url_encode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了url_encode函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _prep_input
def _prep_input(self, method, data, content_type):
"""Return encoded and packed POST data."""
if data is None or method != 'POST':
prepped = {
'input_stream': None,
'content_length': None,
'content_type': None,
}
if method == 'GET' and data:
qs = MultiDict()
for key, value in to_pairs(data):
qs.setlistdefault(key).append(value)
prepped['query_string'] = url_encode(qs)
return prepped
else:
if content_type == 'multipart/form-data':
data = [(k, _wrap_file(*v)) if isinstance(v, tuple) else (k,v)
for k,v in data]
boundary, payload = encode_multipart(MultiDict(to_pairs(data)))
content_type = 'multipart/form-data; boundary=' + boundary
else:
payload = url_encode(MultiDict(to_pairs(data)))
content_type = 'application/x-www-form-urlencoded'
return {
'input_stream': StringIO(payload),
'content_length': len(payload),
'content_type': content_type
}
示例2: create
def create(self, vals):
data_obj = self.env['ir.model.data']
sequence_ids = data_obj.search([('name','=','seq_is_demande_achat')])
if len(sequence_ids)>0:
sequence_id = sequence_ids[0].res_id
vals['name'] = self.env['ir.sequence'].get_id(sequence_id, 'id')
res = super(is_demande_achat, self).create(vals)
model, action_id = data_obj.get_object_reference('is_plastigray', 'is_demande_achat_action')
print ":action_id::",action_id
base_url = self.env['ir.config_parameter'].get_param('web.base.url')
#menu_id = self.env['ir.ui.menu'].search([('name','=', "Demandes d'achat")])
menu_id = data_obj.get_object_reference('is_plastigray', 'is_mes_demande_achat_menu')
route = 'login'
query = dict(db=self._cr.dbname)
model, action_id = data_obj.get_object_reference('is_plastigray', 'is_demande_achat_action')
fragment = dict()
fragment['action'] = action_id
fragment['view_type'] = 'form'
fragment['menu_id'] = menu_id[0]
fragment['model'] = model
fragment['id'] = res.id
if fragment:
query['redirect'] = '/web#' + werkzeug.url_encode(fragment)
record_url = urljoin(base_url, "/web/%s?%s" % (route, werkzeug.url_encode(query)))
res.record_url = record_url
return res
示例3: __call__
def __call__(self, path=None, **kw):
if not path:
path = self.path
for k, v in self.args.items():
kw.setdefault(k, v)
l = []
for k, v in kw.items():
if v:
if isinstance(v, list) or isinstance(v, set):
l.append(werkzeug.url_encode([(k, i) for i in v]))
else:
l.append(werkzeug.url_encode([(k, v)]))
if l:
path += '?' + '&'.join(l)
return path
示例4: auth
def auth(self, **kw):
# kw:
#
# state: {"p": 1, "r": "%2Fweb%2Flogin%3F", "d": "some-test-3"}
# redirect_uri: https://example.odoo.com/auth_oauth/signin
# response_type: token
# client_id: d885dde2-0168-4650-9a32-ceb058e652a2
# debug: False
# scope: userinfo
uri, http_method, body, headers = self._extract_params(request, kw)
client_redirect = kw.get('redirect')
user = request.registry['res.users'].browse(request.cr, SUPERUSER_ID, request.uid)
try:
scopes, credentials = self._server.validate_authorization_request(
uri, http_method, body, headers)
# Errors that should be shown to the user on the provider website
except errors.FatalClientError as e:
return self._response_from_error(e)
# Errors embedded in the redirect URI back to the client
except errors.OAuth2Error as e:
return self._response({'Location':e.redirect_uri}, None, 302)
if user.login == 'public':
params = {'mode':'login',
'scope':kw.get('scope'),
#'debug':1,
#'login':?,
#'redirect_hostname':TODO,
'redirect': '/oauth2/auth?%s' % werkzeug.url_encode(kw)
}
return self._response({'Location':'/web/login?%s' % werkzeug.url_encode(params)}, None, 302)
else:
credentials.update({'user':user})
try:
headers, body, status = self._server.create_authorization_response(
uri, http_method, body, headers, scopes, credentials)
return self._response(headers, body, status)
except errors.FatalClientError as e:
return self._response_from_error(e)
示例5: inline_object_repl
def inline_object_repl(self, stack, object, object_url=None, object_item=None,
object_text=None, object_args=None):
"""Handles objects included in the page."""
if object_args:
args = parse_arguments(object_args).keyword # XXX needs different parsing
else:
args = {}
if object_item is not None:
query = url_encode(args, charset=CHARSET, encode_keys=True)
att = 'attachment:' # moin 1.9 needed this for an attached file
if object_item.startswith(att):
object_item = '/' + object_item[len(att):] # now we have a subitem
target = Iri(scheme='wiki.local', path=object_item, query=query, fragment=None)
text = object_item
attrib = {xinclude.href: target}
element = xinclude.include(attrib=attrib)
stack.top_append(element)
else:
target = Iri(object_url)
text = object_url
attrib = {xlink.href: target}
if object_text is not None:
attrib[moin_page.alt] = object_text
element = moin_page.object(attrib)
stack.push(element)
if object_text:
self.parse_inline(object_text, stack, self.inlinedesc_re)
else:
stack.top_append(text)
stack.pop()
示例6: __call__
def __call__(self, command, *args, **kw):
transform = _transformers[kw.pop('transform', 'unicode')]
return_list = kw.pop('list', False)
assert not kw, 'Unknown keyword argument.'
payload = {'cmd': command, 'sessionId': self._session_id}
for idx, arg in enumerate(args):
payload[str(idx + 1)] = arg
request = Request(self._server_url, url_encode(payload), {
'Content-Type':
'application/x-www-form-urlencoded; charset=utf-8'})
logger.debug('selenium(%s, %r)', command, args)
response = urlopen(request).read()
if not response.startswith('OK'):
raise RuntimeError(response.encode('utf-8'))
if response == 'OK':
return
data = response[3:]
if return_list:
rows = list(csv.reader(StringIO(data)))
return [transform(col) for col in rows[0]]
else:
return transform(data)
示例7: validate_recaptcha
def validate_recaptcha(challenge, response, remote_ip):
"""Validates the recaptcha. If the validation fails a `RecaptchaValidationFailed`
error is raised.
"""
request = urllib2.Request(
VERIFY_SERVER,
data=url_encode(
{
"privatekey": settings.RECAPTCHA_PRIVATE_KEY,
"remoteip": remote_ip,
"challenge": challenge,
"response": response,
}
),
)
response = urllib2.urlopen(request)
rv = response.read().splitlines()
response.close()
if rv and rv[0] == "true":
return True
if len(rv) > 1:
error = rv[1]
if error == "invalid-site-public-key":
raise RuntimeError("invalid public key for recaptcha set")
if error == "invalid-site-private-key":
raise RuntimeError("invalid private key for recaptcha set")
if error == "invalid-referrer":
raise RuntimeError("key not valid for the current domain")
return False
示例8: mail_action_new
def mail_action_new(self, model, res_id, **kwargs):
if model not in request.env:
return self._redirect_to_messaging()
params = {"view_type": "form", "model": model}
if kwargs.get("action_id"):
params["action"] = kwargs["action_id"]
return werkzeug.utils.redirect("/web?#%s" % url_encode(params))
示例9: _validate_recaptcha
def _validate_recaptcha(self, response, remote_addr):
"""Performs the actual validation."""
try:
private_key = current_app.config['RECAPTCHA_PRIVATE_KEY']
except KeyError:
raise RuntimeError("No RECAPTCHA_PRIVATE_KEY config set")
data = url_encode({
'secret': private_key,
'remoteip': remote_addr,
'response': response
})
http_response = http.urlopen(RECAPTCHA_VERIFY_SERVER, to_bytes(data))
if http_response.code != 200:
return False
json_resp = json.loads(to_unicode(http_response.read()))
if json_resp["success"]:
return True
for error in json_resp.get("error-codes", []):
if error in RECAPTCHA_ERROR_CODES:
raise ValidationError(RECAPTCHA_ERROR_CODES[error])
return False
示例10: handle_oauth2_response
def handle_oauth2_response(self):
"""Handles an oauth2 authorization response. The return value of
this method is forwarded as first argument to the handling view
function.
"""
remote_args = {
'code': request.args.get('code'),
'client_id': self.consumer_key,
'client_secret': self.consumer_secret,
'redirect_uri': session.get(self.name + '_oauthredir')
}
remote_args.update(self.access_token_params)
if self.access_token_method == 'POST':
resp, content = self._client.request(self.access_token_url,
self.access_token_method,
url_encode(remote_args))
elif self.access_token_method == 'GET':
url = add_query(self.expand_url(self.access_token_url), remote_args)
resp, content = self._client.request(url, self.access_token_method)
else:
raise OAuthException('Unsupported access_token_method: ' +
self.access_token_method)
data = parse_response(resp, content)
if resp['status'] != '200':
raise OAuthException('Invalid response from ' + self.name, data)
return data
示例11: url_add
def url_add(url=None, **kwargs):
scheme, netloc, path, query, fragments = urlsplit(url or request.url)
params = url_decode(query)
for key, value in kwargs.items():
if not value in params.getlist(key):
params.add(key, value)
return Markup(urlunsplit((scheme, netloc, path, url_encode(params), fragments)))
示例12: web_auth_signup
def web_auth_signup(self, *args, **kw):
qcontext = self.get_auth_signup_qcontext()
if not qcontext.get('token') and not qcontext.get('signup_enabled'):
raise werkzeug.exceptions.NotFound()
if 'error' not in qcontext and request.httprequest.method == 'POST':
try:
self.do_signup(qcontext)
# Send an account creation confirmation email
if qcontext.get('token'):
user_sudo = request.env['res.users'].sudo().search([('login', '=', qcontext.get('login'))])
template = request.env.ref('auth_signup.mail_template_user_signup_account_created', raise_if_not_found=False)
if user_sudo and template:
template.sudo().with_context(
lang=user_sudo.lang,
auth_login=werkzeug.url_encode({'auth_login': user_sudo.email}),
).send_mail(user_sudo.id, force_send=True)
return super(AuthSignupHome, self).web_login(*args, **kw)
except UserError as e:
qcontext['error'] = e.name or e.value
except (SignupError, AssertionError) as e:
if request.env["res.users"].sudo().search([("login", "=", qcontext.get("login"))]):
qcontext["error"] = _("Another user is already registered using this email address.")
else:
_logger.error("%s", e)
qcontext['error'] = _("Could not create a new account.")
response = request.render('auth_signup.signup', qcontext)
response.headers['X-Frame-Options'] = 'DENY'
return response
示例13: authorize
def authorize(self, callback=None, state=None):
"""Returns a redirect response to the remote authorization URL with
the signed callback given. The callback must be `None` in which
case the application will most likely switch to PIN based authentication
or use a remotely stored callback URL. Alternatively it's an URL
on the system that has to be decorated as :meth:`authorized_handler`.
"""
if self.request_token_url:
token = self.generate_request_token(callback)[0]
url = '%s?oauth_token=%s' % (self.expand_url(self.authorize_url),
url_quote(token))
url = add_query(url, self.authorize_params)
else:
assert callback is not None, 'Callback is required OAuth2'
# This is for things like facebook's oauth. Since we need the
# callback for the access_token_url we need to keep it in the
# session.
params = dict(self.request_token_params)
params['redirect_uri'] = callback
params['client_id'] = self.consumer_key
params['state'] = url_encode(state or {})
session[self.name + '_oauthredir'] = callback
url = add_query(self.expand_url(self.authorize_url), params)
return redirect(url)
示例14: new_database
def new_database(self, **post):
params = post.copy()
state = simplejson.loads(post.get('state'))
if not state.get('p'):
state['p'] = request.env.ref('saas_client.saas_oauth_provider').id
params['state'] = simplejson.dumps(state)
return werkzeug.utils.redirect('/auth_oauth/signin?%s' % werkzeug.url_encode(params))
示例15: _validate_recaptcha
def _validate_recaptcha(self, challenge, response, remote_addr):
"""Performs the actual validation."""
private_key = get_config('tipfy.ext.wtforms', 'recaptcha_private_key')
result = urlfetch.fetch(url=RECAPTCHA_VERIFY_SERVER,
method=urlfetch.POST,
headers={'Content-Type': 'application/x-www-form-urlencoded'},
payload=url_encode({
'privatekey': private_key,
'remoteip': remote_addr,
'challenge': challenge,
'response': response
}))
if result.status_code != 200:
return False
rv = [l.strip() for l in result.content.splitlines()]
if rv and rv[0] == 'true':
return True
if len(rv) > 1:
error = rv[1]
if error in self._error_codes:
raise RuntimeError(self._error_codes[error])
return False