def test_full_path_with_unicode_query_param_2(self):
     u = UrlHelper('/foo?foo=слово')
     u.update_query_data(bar='слово')
     self.assertEqual(
         u.get_full_path(),
         '/foo?foo=%D1%81%D0%BB%D0%BE%D0%B2%D0%BE&bar=%D1%81'
         '%D0%BB%D0%BE%D0%B2%D0%BE')
 def test_use_as_string_unicode(self):
     u = UrlHelper('/foo/bar')
     u.query = dict(foo='слово', bar=2)
     u.fragment = 'baz'
     self.assertEqual(str(u),
                      '/foo/bar?foo=%D1%81%D0%BB%D0%BE%D0%B2%D0%BE&bar=2#'
                      'baz')
 def test_use_as_string_unicode(self):
     u = UrlHelper('/foo/bar')
     u.query = dict(foo='слово', bar=2)
     u.fragment = 'baz'
     self.assertEqual(
         str(u), '/foo/bar?bar=2&foo=%D1%81%D0%BB%D0%BE%D0%B2%D0%BE#'
         'baz')
 def test_update_query_data_with_correct_escaping_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo='два слова!')
     self.assertEqual(
         u.query_string,
         'foo=%D0%B4%D0%B2%D0%B0+%D1%81%D0%BB%D0%BE%D0%B2%D0%B'
         '0%21&bar=2')
 def test_with_query_params_in_url_unicode(self):
     # FIXME: This breaks. See issue #4
     # https://bitbucket.org/monwara/django-url-tools/issue/4/
     u = UrlHelper('/foo')
     u.update_query_data(redir='/foo/bar/?q=два+слова')
     self.assertEqual(u.get_query_string(safe='/'),
                      'redir=/foo/bar/%3Fq%3D%D0%B4%D0%B2%D0%B0%2B%D1%81%D0%BB%D0')
Exemple #6
0
 def test_with_query_params_in_url_unicode(self):
     # FIXME: This breaks. See issue #4
     # https://bitbucket.org/monwara/django-url-tools/issue/4/
     u = UrlHelper('/foo')
     u.update_query_data(redir='/foo/bar/?q=два+слова')
     self.assertEqual(u.get_query_string(safe='/'),
                      'redir=/foo/bar/%3Fq%3D%D0%B4%D0%B2%D0%B0%2B%D1%81%D0%BB%D0')
def logout_url(url):
    url = UrlHelper(url)
    logout_kwarg = {LOGOUT: ''}
    try:
        url.update_query_data(**logout_kwarg)
        return url.get_full_path()
    except:
        return ''
 def test_remove_params_takes_helper_instance(self):
     self.assertEqual(
         del_params(UrlHelper(
             '/search/?q=something&selected_facets=first:foo&selected_facets=second:bar'
         ),
                    selected_facets='first'),
         '/search/?q=something&selected_facets=second%3Abar')
Exemple #9
0
def get_comment_url(comment_pk=None, comment=None, request=None, include_anchor=True):
    if comment_pk:
        import comments
        comment = get_object_or_404(comments.get_model(), pk=comment_pk, site__pk=settings.SITE_ID)

    if comment is None:
        raise Exception('No comment supplied')

    top_level = get_top_level_comment(comment)
    target = top_level.content_object
    page = get_comment_page(target=target, comment=top_level, request=request)

    if target and isinstance(page, int):
        url = UrlHelper(target.get_absolute_url())

        if page <= 1:
            # Remove pager parameter as we want to go to the first page.
            url.del_params('page')
        else:
            # Update pager parameter
            url.update_query_data(page=page)

        full_url = url.get_full_path()
        if include_anchor:
            full_url += '#comment-%s' % comment._get_pk_val()

        return full_url
Exemple #10
0
def pagination_link(page_obj, page, **kwargs):
    request_copy = copy(page_obj.request)
    if hasattr(request_copy, 'original_path'):
        request_copy.path = request_copy.original_path
    url = UrlHelper(request_copy.get_full_path())
    try:
        page = int(page)
        if page == 1:
            url.del_params('page', **kwargs)
        else:
            url.update_query_data(page=page, **kwargs)
        full_url = url.get_full_path()
        if page_obj.anchor:
            full_url += '#%s' % page_obj.anchor
        return full_url
    except:
        return ''
def pagination_link(page_obj, page, **kwargs):
    request_copy = copy(page_obj.request)
    if hasattr(request_copy, 'original_path'):
        request_copy.path = request_copy.original_path
    url = UrlHelper(request_copy.get_full_path())
    try:
        page = int(page)
        if page == 1:
            url.del_params('page', **kwargs)
        else:
            url.update_query_data(page=page, **kwargs)
        full_url = url.get_full_path()
        if page_obj.anchor:
            full_url += '#%s' % page_obj.anchor
        return full_url
    except:
        return ''
 def test_update_query_data(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo=2)
     self.assertEqual(u.get_query_data()['foo'], 2)
 def test_url_helper_instance_as_argument(self):
     u1 = UrlHelper('/foo/bar?foo=1&bar=2')
     u2 = UrlHelper(u1)
     self.assertEqual(u2.get_full_path(), '/foo/bar?foo=1&bar=2')
 def test_url_helper_instance_as_argument(self):
     u1 = UrlHelper('/foo/bar?foo=1&bar=2')
     u2 = UrlHelper(u1)
     self.assertEqual(u2.get_full_path(), '/foo/bar?foo=1&bar=2')
 def test_delete_multiple_without_arguments(self):
     u = UrlHelper('/foo/bar?foo=1&bar=2')
     u.del_params()
     self.assertEqual(u.get_full_path(), '/foo/bar')
 def test_get_query_string_after_modification_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo='слово')
     self.assertEqual(u.get_query_string(),
                      'foo=%D1%81%D0%BB%D0%BE%D0%B2%D0%BE&bar=2')
 def test_safe_slash_argument(self):
     u = UrlHelper('/foo')
     u.update_query_data(redir='/foo/bar/')
     self.assertEqual(u.get_query_string(safe='/'), 'redir=/foo/bar/')
 def test_update_query_data_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo='слово')
     self.assertEqual(u.get_query_data()['foo'], 'слово')
 def test_update_query_data_with_multiple_values_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo=[1, 2, 'слово'])
     self.assertEqual(u.get_query_data()['foo'], 'слово')
     self.assertEqual(u.get_query_data().getlist('foo'), [1, 2, 'слово'])
 def test_update_query_data(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo=2)
     self.assertEqual(u.get_query_data()['foo'], 2)
 def test_toggle_params_toggle_multiple_unicode(self):
     u = UrlHelper('/foo/bar?foo=слово')
     u.toggle_params(foo='слово', bar=1)
     self.assertEqual(u.get_full_path(), '/foo/bar?bar=1')
 def test_toggle_params_enable_unicode(self):
     u = UrlHelper('/foo/bar?foo=1')
     u.toggle_params(bar='слово')
     self.assertEqual(u.get_full_path(), '/foo/bar?foo=1&bar='
                      '%D1%81%D0%BB%D0%BE%D0%B2%D0%BE')
 def test_toggle_params_enable(self):
     u = UrlHelper('/foo/bar?foo=1')
     u.toggle_params(bar=1)
     self.assertEqual(u.get_full_path(), '/foo/bar?foo=1&bar=1')
 def test_toggle_params_disable_unicode(self):
     u = UrlHelper('/foo/bar?foo=слово')
     u.toggle_params(foo='слово')
     self.assertEqual(u.get_full_path(), '/foo/bar')
 def test_toggle_params_enable(self):
     u = UrlHelper('/foo/bar?foo=1')
     u.toggle_params(bar=1)
     self.assertEqual(u.get_full_path(), '/foo/bar?foo=1&bar=1')
 def test_update_query_data_with_multiple_values_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo=[1, 2, 'слово'])
     self.assertEqual(u.get_query_data()['foo'], 'слово')
     self.assertEqual(u.get_query_data().getlist('foo'), [1, 2, 'слово'])
 def test_toggle_params_toggle_multiple_unicode(self):
     u = UrlHelper('/foo/bar?foo=слово')
     u.toggle_params(foo='слово', bar=1)
     self.assertEqual(u.get_full_path(), '/foo/bar?bar=1')
 def test_update_query_data_with_correct_escaping(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo='space here!')
     self.assertEqual(u.query_string, u'foo=space+here%21&bar=2')
 def test_use_with_URL_as_param_value(self):
     u = UrlHelper('/foo/bar/')
     u.query = {'redir': '/foo/bar/baz?test=1'}
     self.assertEqual(u.get_full_path(),
                      '/foo/bar/?redir=%2Ffoo%2Fbar%2Fbaz%3Ftest%3D1')
 def test_overload_param(self):
     u = UrlHelper('/foo/bar?foo=1')
     u.overload_params(foo=2)
     self.assertEqual(u.get_full_path(), '/foo/bar?foo=1&foo=2')
 def test_get_query_with_multiple_values(self):
     u = UrlHelper('/foo')
     u.update_query_data(foo=[1, 2, 3])
     self.assertEqual(u.get_query_string(), 'foo=1&foo=2&foo=3')
 def test_delete_multiple_keys_unicode(self):
     u = UrlHelper('/foo/bar?foo=слово&bar=2')
     u.del_params('foo', 'bar')
     self.assertEqual(u.get_full_path(), '/foo/bar')
 def test_update_query_data_with_correct_escaping_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo='два слова!')
     self.assertEqual(u.query_string,
                      'foo=%D0%B4%D0%B2%D0%B0+%D1%81%D0%BB%D0%BE%D0%B2%D0%B'
                      '0%21&bar=2')
 def test_overload_param_unicode(self):
     u = UrlHelper('/foo/bar?foo=1')
     u.overload_params(foo='слово')
     self.assertEqual(u.get_full_path(), '/foo/bar?foo=1&foo=%D1%81%D0%BB'
                      '%D0%BE%D0%B2%D0%BE')
 def test_delete_key(self):
     u = UrlHelper('/foo/bar?foo=1&bar=2')
     u.del_param('foo')
     self.assertEqual(u.get_full_path(), '/foo/bar?bar=2')
 def test_get_query_string_after_modification(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo=2)
     self.assertEqual(u.get_query_string(), 'foo=2&bar=2')
 def test_delete_fails_silently_unicode(self):
     u = UrlHelper('/foo/bar?foo=слово&bar=2')
     u.del_params('foo', 'baz')  # baz doesn't exist
     self.assertEqual(u.get_full_path(), '/foo/bar?bar=2')
 def test_get_query_string_after_modification_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo='слово')
     self.assertEqual(u.get_query_string(),
                      'foo=%D1%81%D0%BB%D0%BE%D0%B2%D0%BE&bar=2')
 def test_overload_param(self):
     u = UrlHelper('/foo/bar?foo=1')
     u.overload_params(foo=2)
     self.assertEqual(u.get_full_path(), '/foo/bar?foo=1&foo=2')
 def test_get_query_with_multiple_values(self):
     u = UrlHelper('/foo')
     u.update_query_data(foo=[1, 2, 3])
     self.assertEqual(u.get_query_string(), 'foo=1&foo=2&foo=3')
 def test_overload_param_unicode(self):
     u = UrlHelper('/foo/bar?foo=1')
     u.overload_params(foo='слово')
     self.assertEqual(
         u.get_full_path(), '/foo/bar?foo=1&foo=%D1%81%D0%BB'
         '%D0%BE%D0%B2%D0%BE')
 def test_get_query_with_multiple_values_unicode(self):
     u = UrlHelper('/foo')
     u.update_query_data(foo=[1, 2, 'слово'])
     self.assertEqual(u.get_query_string(),
                      'foo=1&foo=2&foo=%D1%81%D0%BB%D0%BE%D0%B2%D0%BE')
 def test_toggle_params_disable_unicode(self):
     u = UrlHelper('/foo/bar?foo=слово')
     u.toggle_params(foo='слово')
     self.assertEqual(u.get_full_path(), '/foo/bar')
 def test_safe_slash_argument(self):
     u = UrlHelper('/foo')
     u.update_query_data(redir='/foo/bar/')
     self.assertEqual(u.get_query_string(safe='/'), 'redir=/foo/bar/')
 def test_toggle_params_enable_unicode(self):
     u = UrlHelper('/foo/bar?foo=1')
     u.toggle_params(bar='слово')
     self.assertEqual(
         u.get_full_path(), '/foo/bar?foo=1&bar='
         '%D1%81%D0%BB%D0%BE%D0%B2%D0%BE')
 def test_with_query_params_in_url(self):
     u = UrlHelper('/foo')
     u.update_query_data(redir='/foo/bar/?q=Mickey+Mouse')
     self.assertEqual(u.get_query_string(safe='/'),
                      'redir=/foo/bar/%3Fq%3DMickey%2BMouse')
 def test_update_query_data_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo='слово')
     self.assertEqual(u.get_query_data()['foo'], 'слово')
 def test_delete_fails_silently_unicode(self):
     u = UrlHelper('/foo/bar?foo=слово&bar=2')
     u.del_params('foo', 'baz')  # baz doesn't exist
     self.assertEqual(u.get_full_path(), '/foo/bar?bar=2')
 def test_update_query_data_with_correct_escaping(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo='space here!')
     self.assertEqual(u.query_string, 'foo=space+here%21&bar=2')
 def test_delete_multiple_keys_unicode(self):
     u = UrlHelper('/foo/bar?foo=слово&bar=2')
     u.del_params('foo', 'bar')
     self.assertEqual(u.get_full_path(), '/foo/bar')
 def test_get_query_string_after_modification(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     u.update_query_data(foo=2)
     self.assertEqual(u.get_query_string(), 'foo=2&bar=2')
 def test_url_helper_get_query_data_unicode(self):
     u = UrlHelper('/foo?foo=1&bar=слово')
     data = u.get_query_data()
     self.assertEqual(data['foo'], '1')
     self.assertEqual(data['bar'], 'слово')
 def test_url_helper_get_query_string(self):
     u = UrlHelper('/foo?foo=1&bar=2')
     self.assertEqual(u.get_query_string(), 'foo=1&bar=2')
 def test_delete_key(self):
     u = UrlHelper('/foo/bar?foo=1&bar=2')
     u.del_param('foo')
     self.assertEqual(u.get_full_path(), '/foo/bar?bar=2')
 def test_get_query_with_multiple_values_unicode(self):
     u = UrlHelper('/foo')
     u.update_query_data(foo=[1, 2, 'слово'])
     self.assertEqual(u.get_query_string(),
                      'foo=1&foo=2&foo=%D1%81%D0%BB%D0%BE%D0%B2%D0%BE')
 def test_hashling_with_query_string(self):
     u = UrlHelper('/foo/bar')
     u.query = dict(foo=1)
     self.assertEqual(u.hash, '06f0a42bdd474f053fb1343165a31d42')
 def test_with_query_params_in_url(self):
     u = UrlHelper('/foo')
     u.update_query_data(redir='/foo/bar/?q=Mickey+Mouse')
     self.assertEqual(u.get_query_string(safe='/'),
                      'redir=/foo/bar/%3Fq%3DMickey%2BMouse')
 def test_use_with_URL_as_param_value_unicode(self):
     u = UrlHelper('/foo/bar/')
     u.query = {'redir': '/foo/bar/baz?test=слово'}
     self.assertEqual(u.get_full_path(),
                      '/foo/bar/?redir=%2Ffoo%2Fbar%2Fbaz%3Ftest%3D'
                      '%D1%81%D0%BB%D0%BE%D0%B2%D0%BE')
 def test_hashling_with_query_string(self):
     u = UrlHelper('/foo/bar')
     u.query = dict(foo=1)
     self.assertEqual(u.hash, '06f0a42bdd474f053fb1343165a31d42')
 def test_delete_multiple_without_arguments(self):
     u = UrlHelper('/foo/bar?foo=1&bar=2')
     u.del_params()
     self.assertEqual(u.get_full_path(), '/foo/bar')