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 | |
| parent | 5e37d36d5b8a241d458d54fa300ff3b7bfed8f5f (diff) | |
| download | django-brevisurl-e5091447bc204d730be7129be575516ab1acef91.tar.bz2 | |
Fixes for version 1.01.0
Diffstat (limited to 'brevisurl')
| -rw-r--r-- | brevisurl/backends/local.py | 4 | ||||
| -rw-r--r-- | brevisurl/context_processors.py | 3 | ||||
| -rw-r--r-- | brevisurl/settings.py | 5 | ||||
| -rw-r--r-- | brevisurl/tests/backends/test_local.py | 10 | ||||
| -rw-r--r-- | brevisurl/tests/test_utils.py | 15 | ||||
| -rw-r--r-- | brevisurl/utils.py | 31 |
6 files changed, 43 insertions, 25 deletions
diff --git a/brevisurl/backends/local.py b/brevisurl/backends/local.py index 2415694..77e0a7e 100644 --- a/brevisurl/backends/local.py +++ b/brevisurl/backends/local.py @@ -37,10 +37,10 @@ class BrevisUrlBackend(BaseBrevisUrlBackend): short_url = ShortUrl() if self.kwargs.get('domain') is not None: # Domain is present in keyword arguments supplied by constructor. - domain = self.kwargs.get('domain').rstrip('/') + domain = self.kwargs.get('domain') elif brevisurl.settings.LOCAL_BACKEND_DOMAIN is not None: # Domain is defined in settings. - domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN.rstrip('/') + domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN else: # Domain is taken from django site framework. domain = Site.objects.get_current().domain diff --git a/brevisurl/context_processors.py b/brevisurl/context_processors.py index 10ae356..72e6ae3 100644 --- a/brevisurl/context_processors.py +++ b/brevisurl/context_processors.py @@ -12,6 +12,5 @@ def brevisurl_data(request): 'BREVISURL_LOCAL_BACKEND_TOKEN_CHARS': brevisurl.settings.LOCAL_BACKEND_TOKEN_CHARS, 'BREVISURL_LOCAL_BACKEND_TOKEN_LENGTH': brevisurl.settings.LOCAL_BACKEND_TOKEN_LENGTH, 'BREVISURL_LOCAL_BACKEND_URL_PATTERN': brevisurl.settings.LOCAL_BACKEND_URL_PATTERN, - 'BREVISURL_LOCAL_BACKEND_DOMAIN_PROTOCOL': brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL, - 'BREVISURL_LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH': brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH + 'BREVISURL_LOCAL_BACKEND_DOMAIN_PROTOCOL': brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL }
\ No newline at end of file diff --git a/brevisurl/settings.py b/brevisurl/settings.py index 641020b..b7c7efa 100644 --- a/brevisurl/settings.py +++ b/brevisurl/settings.py @@ -19,7 +19,4 @@ LOCAL_BACKEND_TOKEN_LENGTH = getattr(settings, 'BREVISURL_LOCAL_BACKEND_TOKEN_LE LOCAL_BACKEND_URL_PATTERN = getattr(settings, 'BREVISURL_LOCAL_BACKEND_URL_PATTERN', r'^(?P<token>[a-zA-Z0-9]{' + str(LOCAL_BACKEND_TOKEN_LENGTH) + r'})$') # Protocol for local backend. -LOCAL_BACKEND_DOMAIN_PROTOCOL = getattr(settings, 'BREVISURL_LOCAL_BACKEND_DOMAIN_PROTOCOL', 'http') - -# Do we need slash in newly generated token url ? -LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH = getattr(settings, 'BREVISURL_LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH', False)
\ No newline at end of file +LOCAL_BACKEND_DOMAIN_PROTOCOL = getattr(settings, 'BREVISURL_LOCAL_BACKEND_DOMAIN_PROTOCOL', 'http')
\ No newline at end of file diff --git a/brevisurl/tests/backends/test_local.py b/brevisurl/tests/backends/test_local.py index 437c790..4577376 100644 --- a/brevisurl/tests/backends/test_local.py +++ b/brevisurl/tests/backends/test_local.py @@ -119,19 +119,13 @@ class TestLocalBrevisUrlBackend(TestCase): brevisurl.settings.LOCAL_BACKEND_DOMAIN = _original_domain def test_url_path_slash_stripping(self): - _original_slash_strip = brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH original_url = 'http://www.codescale.net/' connection = get_connection('brevisurl.backends.local.BrevisUrlBackend', domain='http://test.com/d') - brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH = True short_url = connection.shorten_url(original_url) self.assertRegexpMatches(short_url.shortened_url, r'^http://test\.com/d[^/]{5}$') - brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH = _original_slash_strip def test_url_path_slash_no_stripping(self): - _original_slash_strip = brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH original_url = 'http://www.codescale.net/' - connection = get_connection('brevisurl.backends.local.BrevisUrlBackend', domain='http://test.com/d') - brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH = False + connection = get_connection('brevisurl.backends.local.BrevisUrlBackend', domain='http://test.com/d/') short_url = connection.shorten_url(original_url) - self.assertRegexpMatches(short_url.shortened_url, r'^http://test\.com/d/[^/]{5}$') - brevisurl.settings.LOCAL_BACKEND_STRIP_TOKEN_URL_SLASH = _original_slash_strip
\ No newline at end of file + self.assertRegexpMatches(short_url.shortened_url, r'^http://test\.com/d/[^/]{5}$')
\ No newline at end of file diff --git a/brevisurl/tests/test_utils.py b/brevisurl/tests/test_utils.py index a6a8fd2..c4b6237 100644 --- a/brevisurl/tests/test_utils.py +++ b/brevisurl/tests/test_utils.py @@ -1,7 +1,7 @@ from django.utils import unittest from django.contrib.sites.models import Site -from brevisurl.utils import load_object, absurl, url_has_protocol +from brevisurl.utils import load_object, absurl, url_has_protocol, url_has_path from brevisurl.backends.local import BrevisUrlBackend @@ -62,4 +62,15 @@ class TestUrlHasProtocol(unittest.TestCase): def test_url_without_protocol(self): url = 'test.sk/path/' - self.assertFalse(url_has_protocol(url))
\ No newline at end of file + self.assertFalse(url_has_protocol(url)) + + +class TestUrlHasPath(unittest.TestCase): + + def test_url_with_path(self): + url = 'http://test.sk/' + self.assertTrue(url_has_path(url)) + + def test_url_without_path(self): + url = 'http://test.sk' + self.assertFalse(url_has_path(url))
\ No newline at end of file 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 |
