diff options
Diffstat (limited to 'packages/templatetags/package_extras.py')
-rw-r--r-- | packages/templatetags/package_extras.py | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py index 45a534c8..66fb5e7c 100644 --- a/packages/templatetags/package_extras.py +++ b/packages/templatetags/package_extras.py @@ -1,4 +1,4 @@ -from urllib import urlencode, quote as urlquote +from urllib import urlencode, quote as urlquote, unquote try: from urlparse import parse_qs except ImportError: @@ -13,6 +13,17 @@ def link_encode(url, query, doseq=False): data = urlencode(query, doseq).replace('&', '&') return "%s?%s" % (url, data) +@register.filter +def url_unquote(original_url): + try: + url = original_url + if isinstance(url, unicode): + url = url.encode('ascii') + url = unquote(url).decode('utf-8') + return url + except UnicodeError: + return original_url + class BuildQueryStringNode(template.Node): def __init__(self, sortfield): self.sortfield = sortfield @@ -62,16 +73,38 @@ def userpkgs(user): return '' @register.simple_tag +def get_download_link(package): + parts = { + "repo": package.repo.name.lower(), + "arch": package.arch.name, + "pkgfile": package.filename + } + if parts["arch"] == "any": + parts["arch"] = "i686" + linkbase = "//repo.parabolagnulinux.org/%(repo)s/os/%(arch)s/%(pkgfile)s" + return linkbase % parts + +@register.simple_tag def get_wiki_link(package): - url = "http://wiki.parabolagnulinux.org/Special:Search" + url = "//wiki.parabolagnulinux.org/index.php" data = { + 'title': "Special:Search", 'search': package.pkgname, } return link_encode(url, data) @register.simple_tag +def svn_arch(package): + repo = package.repo.name.lower() + return svn_link(package, "repos/%s-%s" % (repo, package.arch.name)) + +@register.simple_tag +def svn_trunk(package): + return svn_link(package, "trunk") + +@register.simple_tag def bugs_list(package): - url = "https://bugs.parabolagnulinux.org/bugs/issue" + url = "//bugs.parabolagnulinux.org/bugs/issue" data = { '@action': 'search', 'title': package.pkgname, @@ -80,7 +113,7 @@ def bugs_list(package): @register.simple_tag def bug_report(package): - url = "https://bugs.parabolagnulinux.org/bugs/issue" + url = "//bugs.parabolagnulinux.org/bugs/issue" data = { '@template': 'item', 'keyword': 'packages', @@ -98,5 +131,5 @@ def flag_unfree(package): 'priority': 'critical', 'title': '[%s] Please put your reasons here (register first if you haven\'t)' % package.pkgname, } - return link_encode(url, data) + return "//bugs.parabolagnulinux.org/bugs/issue?%s" % urlencode(data) # vim: set ts=4 sw=4 et: |