diff options
| author | Vladimir Gorej | 2012-09-17 15:04:01 +0200 | 
|---|---|---|
| committer | Vladimir Gorej | 2012-09-17 15:04:01 +0200 | 
| commit | e5091447bc204d730be7129be575516ab1acef91 (patch) | |
| tree | 2c3b36110b5f2f0c71f191647dde1bfdb2305fe1 /brevisurl/utils.py | |
| parent | 5e37d36d5b8a241d458d54fa300ff3b7bfed8f5f (diff) | |
| download | django-brevisurl-e5091447bc204d730be7129be575516ab1acef91.tar.bz2 | |
Fixes for version 1.01.0
Diffstat (limited to 'brevisurl/utils.py')
| -rw-r--r-- | brevisurl/utils.py | 31 | 
1 files changed, 24 insertions, 7 deletions
| diff --git a/brevisurl/utils.py b/brevisurl/utils.py index a55bb66..6210096 100644 --- a/brevisurl/utils.py +++ b/brevisurl/utils.py @@ -28,7 +28,7 @@ def url_has_protocol(url):      :param url: url that is being examined.      :type url: string -    :returns: True if url has protocol, False if not +    :returns: True if url has protocol, False otherwise      :rtype: bool      """ @@ -36,6 +36,20 @@ def url_has_protocol(url):      return True if url_parsed.netloc != '' and url_parsed.scheme in ('http', 'https') else False +def url_has_path(url): +    """Util for determining whether url has path present or not. + +    :param url: url that is being examined. +    :type url: string +    :returns: True if url has path, False otherwise +    :rtype: bool + +    """ +    url_parsed = urlparse.urlparse(url) +    return True if url_parsed.netloc != '' and url_parsed.path != '' else False + + +  def absurl(protocol=None, domain=None, site=None, path='/'):      """Util for constructing absolute urls from relative urls. @@ -54,14 +68,17 @@ def absurl(protocol=None, domain=None, site=None, path='/'):      :rtype: string      """ +    # Searching for domain.      protocol = protocol or brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL      if domain is None and site is None:          domain = Site.objects.get_current().domain      elif domain is None and site is not None:          domain = site.domain -    if brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH: -        path = path.lstrip('/') -    if url_has_protocol(domain): -        return '{domain:s}{path:s}'.format(domain=domain, path=path) -    else: -        return '{protocol:s}://{domain:s}{path:s}'.format(protocol=protocol, domain=domain, path=path)
\ No newline at end of file +    # Append protocol if not present. +    if not url_has_protocol(domain): +        domain = '{protocol:s}://{domain:s}'.format(protocol=protocol, domain=domain) +    # Always append default path if not present in domain. +    if not url_has_path(domain): +        domain = '{domain:s}/'.format(domain=domain) +    # Concatenate domain with protocol and path. +    return '{domain:s}{path:s}'.format(domain=domain, path=path.lstrip('/'))
\ No newline at end of file | 
