38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import random
|
|
import string
|
|
import urlparse
|
|
import urllib
|
|
|
|
ALPHABET = string.letters+string.digits+'-'
|
|
|
|
def get_logout_urls(request):
|
|
'''Retrieve logout urls'''
|
|
return ()
|
|
|
|
def make_id(prefix='', length=29):
|
|
'''Generate CAS tickets identifiers'''
|
|
l = length-len(prefix)
|
|
content = ( random.SystemRandom().choice(ALPHABET) for x in range(l) )
|
|
return prefix + ''.join(content)
|
|
|
|
def url_overwrite_parameters(url, **kwargs):
|
|
splitted_url = urlparse.urlsplit(url)
|
|
query = splitted_url.query
|
|
parsed_query = urlparse.parse_qsl(query)
|
|
parsed_query = [(a,b) for a, b in parsed_query if a not in kwargs]
|
|
for a, b in kwargs.iteritems():
|
|
parsed_query.append((a, unicode(b).encode('utf-8')))
|
|
query = urllib.urlencode(parsed_query)
|
|
splitted_url = splitted_url[:3] + (query,) + splitted_url[4:]
|
|
return urlparse.urlunsplit(splitted_url)
|
|
|
|
def url_add_parameters(url, **kwargs):
|
|
splitted_url = urlparse.urlsplit(url)
|
|
query = splitted_url.query
|
|
parsed_query = urlparse.parse_qsl(query)
|
|
for a, b in kwargs.iteritems():
|
|
parsed_query.append((a, unicode(b).encode('utf-8')))
|
|
query = urllib.urlencode(parsed_query)
|
|
splitted_url = splitted_url[:3] + (query,) + splitted_url[4:]
|
|
return urlparse.urlunsplit(splitted_url)
|