Ejemplo n.º 1
0
def do_urlencode(value):
    """Quote data for use in a URL path or query using UTF-8.

    Basic wrapper around :func:`urllib.parse.quote` when given a
    string, or :func:`urllib.parse.urlencode` for a dict or iterable.

    :param value: Data to quote. A string will be quoted directly. A
        dict or iterable of ``(key, value)`` pairs will be joined as a
        query string.

    When given a string, "/" is not quoted. HTTP servers treat "/" and
    "%2F" equivalently in paths. If you need quoted slashes, use the
    ``|replace("/", "%2F")`` filter.

    .. versionadded:: 2.7
    """
    if isinstance(value, string_types) or not isinstance(value, abc.Iterable):
        return unicode_urlencode(value)

    if isinstance(value, dict):
        items = iteritems(value)
    else:
        items = iter(value)

    return u"&".join(
        "%s=%s" %
        (unicode_urlencode(k, for_qs=True), unicode_urlencode(v, for_qs=True))
        for k, v in items)
Ejemplo n.º 2
0
def do_urlencode(value):
    itemiter = None
    if isinstance(value, dict):
        itemiter = value.iteritems()
    elif not isinstance(value, basestring):
        try:
            itemiter = iter(value)
        except TypeError:
            pass

    if itemiter is None:
        return unicode_urlencode(value)
    return u'&'.join((unicode_urlencode(k) + '=' + unicode_urlencode(v) for k, v in itemiter))
Ejemplo n.º 3
0
def do_urlencode(value):
    itemiter = None
    if isinstance(value, dict):
        itemiter = value.iteritems()
    elif not isinstance(value, basestring):
        try:
            itemiter = iter(value)
        except TypeError:
            pass

    if itemiter is None:
        return unicode_urlencode(value)
    return u'&'.join((unicode_urlencode(k) + '=' + unicode_urlencode(v)
                      for k, v in itemiter))
Ejemplo n.º 4
0
def do_urlencode(value):
    """Escape strings for use in URLs (uses UTF-8 encoding).  It accepts both
    dictionaries and regular strings as well as pairwise iterables.

    .. versionadded:: 2.7
    """
    itemiter = None
    if isinstance(value, dict):
        itemiter = value.iteritems()
    elif not isinstance(value, basestring):
        try:
            itemiter = iter(value)
        except TypeError:
            pass
    if itemiter is None:
        return unicode_urlencode(value)
    return u"&".join(unicode_urlencode(k) + "=" + unicode_urlencode(v) for k, v in itemiter)
Ejemplo n.º 5
0
def do_urlencode(value):
    """Escape strings for use in URLs (uses UTF-8 encoding).  It accepts both
    dictionaries and regular strings as well as pairwise iterables.

    .. versionadded:: 2.7
    """
    itemiter = None
    if isinstance(value, dict):
        itemiter = iteritems(value)
    elif not isinstance(value, string_types):
        try:
            itemiter = iter(value)
        except TypeError:
            pass
    if itemiter is None:
        return unicode_urlencode(value)
    return u'&'.join(
        unicode_urlencode(k) + '=' + unicode_urlencode(v) for k, v in itemiter)
Ejemplo n.º 6
0
def label_search_url(label):
    """Return the URL to the tracker page listing all tickets which have the
    label applied."""
    return "{}?search=label:"{}"".format(
        tracker_url(label.tracker), unicode_urlencode(label.name))