diff options
author | Jelle van der Waa <jelle@vdwaa.nl> | 2016-11-30 21:40:31 +0100 |
---|---|---|
committer | Jelle van der Waa <jelle@vdwaa.nl> | 2017-05-02 21:13:56 +0200 |
commit | 9ae767cb4faf8d8d58630cd4716d946abcc9653a (patch) | |
tree | a12c529ba640c095190a2c09125aed0fa80a6031 | |
parent | 0b714e47d27d1a5f32635f144c7ad1f7bc1635a2 (diff) |
port templates/packages to pure django
-rw-r--r-- | main/templatetags/details_link.py | 77 | ||||
-rw-r--r-- | templates/packages/details.html | 2 | ||||
-rw-r--r-- | templates/packages/details_depend.html (renamed from templates/packages/details_depend.html.jinja) | 8 | ||||
-rw-r--r-- | templates/packages/details_link.html | 1 | ||||
-rw-r--r-- | templates/packages/details_link.html.jinja | 1 | ||||
-rw-r--r-- | templates/packages/details_relatedto.html | 3 | ||||
-rw-r--r-- | templates/packages/details_relatedto.html.jinja | 3 | ||||
-rw-r--r-- | templates/packages/details_requiredby.html (renamed from templates/packages/details_requiredby.html.jinja) | 2 | ||||
-rw-r--r-- | templates/packages/package_details.html (renamed from templates/packages/details.html.jinja) | 86 |
9 files changed, 130 insertions, 53 deletions
diff --git a/main/templatetags/details_link.py b/main/templatetags/details_link.py new file mode 100644 index 00000000..b94f8487 --- /dev/null +++ b/main/templatetags/details_link.py @@ -0,0 +1,77 @@ +from urllib import urlencode, quote as urlquote, unquote +from django import template +from main.templatetags import pgp + +register = template.Library() + + +def link_encode(url, query): + # massage the data into all utf-8 encoded strings first, so urlencode + # doesn't barf at the data we pass it + query = {k: unicode(v).encode('utf-8') for k, v in query.items()} + data = urlencode(query) + return "%s?%s" % (url, data) + + +@register.inclusion_tag('packages/details_link.html') +def details_link(pkg): + return {'pkg': pkg} + + +@register.simple_tag +def scm_link(package, operation): + parts = (package.repo.svn_root, operation, package.pkgbase) + linkbase = ( + "https://projects.archlinux.org/svntogit/%s.git/%s/trunk?" + "h=packages/%s") + return linkbase % tuple(urlquote(part.encode('utf-8')) for part in parts) + + +@register.simple_tag +def bugs_list(package): + url = "https://bugs.archlinux.org/" + data = { + 'project': package.repo.bugs_project, + 'cat[]': package.repo.bugs_category, + 'string': package.pkgname, + } + return link_encode(url, data) + + +@register.simple_tag +def bug_report(package): + url = "https://bugs.archlinux.org/newtask" + data = { + 'project': package.repo.bugs_project, + 'product_category': package.repo.bugs_category, + 'item_summary': '[%s] PLEASE ENTER SUMMARY' % package.pkgname, + } + return link_encode(url, data) + + +@register.simple_tag +def wiki_link(package): + url = "https://wiki.archlinux.org/index.php/Special:Search" + data = { + 'search': package.pkgname, + } + return link_encode(url, data) + + +@register.simple_tag +def pgp_key_link(key_id, link_text=None): + return pgp.pgp_key_link(key_id, link_text) + + +@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 + +# vim: set ts=4 sw=4 et: diff --git a/templates/packages/details.html b/templates/packages/details.html index 7a0f8e88..2851abd6 100644 --- a/templates/packages/details.html +++ b/templates/packages/details.html @@ -5,7 +5,7 @@ {% block navbarclass %}anb-packages{% endblock %} {% block content %} -{% include "packages/details.html.jinja" %} +{% include "packages/package_details.html" %} {% endblock %} {% block script_block %} diff --git a/templates/packages/details_depend.html.jinja b/templates/packages/details_depend.html index a2d3a010..5e27374b 100644 --- a/templates/packages/details_depend.html.jinja +++ b/templates/packages/details_depend.html @@ -1,8 +1,8 @@ -{% import 'packages/details_link.html.jinja' as details %}<li>{% if depend.pkg == None %} -{% if depend.providers %}{{ depend.dep.name }}{{ depend.dep.comparison|default("", true) }}{{ depend.dep.version|default("", true) }} <span class="virtual-dep">({% for pkg in depend.providers %}{{ details.details_link(pkg) }}{% if not loop.last %}, {% endif %}{% endfor %})</span> -{% else %}{{ depend.dep.name }}{{ depend.dep.comparison|default("", true) }}{{ depend.dep.version|default("", true) }} <span class="virtual-dep">(virtual)</span> +{% load details_link %}<li>{% if depend.pkg == None %} +{% if depend.providers %}{{ depend.dep.name }}{{ depend.dep.comparison|default:"" }}{{ depend.dep.version|default:"" }} <span class="virtual-dep">({% for pkg in depend.providers %}{% details_link pkg %}{% if not loop.last %}, {% endif %}{% endfor %})</span> +{% else %}{{ depend.dep.name }}{{ depend.dep.comparison|default:"" }}{{ depend.dep.version|default:"" }} <span class="virtual-dep">(virtual)</span> {% endif %}{% else %} -{{ details.details_link(depend.pkg) }}{{ depend.dep.comparison|default("", true) }}{{ depend.dep.version|default("", true) }} +{% details_link depend.pkg %}{{ depend.dep.comparison|default:"" }}{{ depend.dep.version|default:"" }} {% if depend.pkg.repo.testing %} <span class="testing-dep"> (testing)</span> {% endif %}{% if depend.pkg.repo.staging %} <span class="staging-dep"> (staging)</span> {% endif %}{% endif %} diff --git a/templates/packages/details_link.html b/templates/packages/details_link.html new file mode 100644 index 00000000..87d66d6a --- /dev/null +++ b/templates/packages/details_link.html @@ -0,0 +1 @@ +<a href="{{ pkg.get_absolute_url }}" title="View package details for {{ pkg.pkgname }}">{{ pkg.pkgname }}</a> diff --git a/templates/packages/details_link.html.jinja b/templates/packages/details_link.html.jinja deleted file mode 100644 index b7e75fe5..00000000 --- a/templates/packages/details_link.html.jinja +++ /dev/null @@ -1 +0,0 @@ -{% macro details_link(pkg) %}<a href="{{ pkg.get_absolute_url() }}" title="View package details for {{ pkg.pkgname }}">{{ pkg.pkgname }}</a>{% endmacro %} diff --git a/templates/packages/details_relatedto.html b/templates/packages/details_relatedto.html new file mode 100644 index 00000000..c22dfb7f --- /dev/null +++ b/templates/packages/details_relatedto.html @@ -0,0 +1,3 @@ +{% load details_link %}{% for related in all_related %}{% with best_satisfier=related.get_best_satisfier %} +<span class="related">{% if best_satisfier == None %}{{ related.name }}{% else %}{% details_link best_satisfier %}{% endif %}{{ related.comparison|default:'' }}{{ related.version|default:'' }}{% if not loop.last %}, {% endif %}</span> +{% endwith %}{% endfor %} diff --git a/templates/packages/details_relatedto.html.jinja b/templates/packages/details_relatedto.html.jinja deleted file mode 100644 index 818224de..00000000 --- a/templates/packages/details_relatedto.html.jinja +++ /dev/null @@ -1,3 +0,0 @@ -{% import 'packages/details_link.html.jinja' as details %}{% for related in all_related %}{% with best_satisfier = related.get_best_satisfier() %} -<span class="related">{% if best_satisfier == None %}{{ related.name }}{% else %}{{ details.details_link(best_satisfier) }}{% endif %}{{ related.comparison|default('', true) }}{{ related.version|default('', true) }}{% if not loop.last %}, {% endif %}</span> -{% endwith %}{% endfor %} diff --git a/templates/packages/details_requiredby.html.jinja b/templates/packages/details_requiredby.html index b083a7fc..c8084649 100644 --- a/templates/packages/details_requiredby.html.jinja +++ b/templates/packages/details_requiredby.html @@ -1,4 +1,4 @@ -{% import 'packages/details_link.html.jinja' as details %}<li>{{ details.details_link(req.pkg) }} +{% load details_link %}<li>{% details_link req.pkg %} {% if req.name != pkg.pkgname %}<span class="virtual-dep"> (requires {{ req.name }})</span> {% endif %}{% if req.pkg.repo.testing %}<span class="testing-dep"> (testing)</span> {% endif %}{% if req.pkg.repo.staging %}<span class="staging-dep"> (staging)</span> diff --git a/templates/packages/details.html.jinja b/templates/packages/package_details.html index 9a72622d..c0a066f2 100644 --- a/templates/packages/details.html.jinja +++ b/templates/packages/package_details.html @@ -1,4 +1,4 @@ -{% import 'packages/details_link.html.jinja' as details %} +{% load details_link %} <div id="pkgdetails" class="box"> <h2>{{ pkg.pkgname }} {{ pkg.full_version }}</h2> @@ -7,19 +7,19 @@ <h4>Package Actions</h4> <ul class="small"> <li> - <a href="{{ scm_link(pkg, 'tree') }}" title="View source files for {{ pkg.pkgname }}">Source Files</a> / - <a href="{{ scm_link(pkg, 'log') }}" title="View changes for {{ pkg.pkgname }}">View Changes</a> + <a href="{% scm_link pkg 'tree' %}" title="View source files for {{ pkg.pkgname }}">Source Files</a> / + <a href="{% scm_link pkg 'log' %}" title="View changes for {{ pkg.pkgname }}">View Changes</a> </li> <li> - <a href="{{ bugs_list(pkg) }}" title="View existing bug tickets for {{ pkg.pkgname }}">Bug Reports</a> / - <a href="{{ bug_report(pkg) }}" title="Report new bug for {{ pkg.pkgname }}">Add New Bug</a> + <a href="{% bugs_list pkg %}" title="View existing bug tickets for {{ pkg.pkgname }}">Bug Reports</a> / + <a href="{% bug_report pkg %}" title="Report new bug for {{ pkg.pkgname }}">Add New Bug</a> </li> - <li><a href="{{ wiki_link(pkg) }}" title="Search wiki for {{ pkg.pkgname }}">Search Wiki</a></li> + <li><a href="{% wiki_link pkg %}" title="Search wiki for {{ pkg.pkgname }}">Search Wiki</a></li> {% if pkg.flag_date %} <li><span class="flagged">Flagged out-of-date on {{ pkg.flag_date|date }}</span></li> - {% with tp = pkg.in_testing() %}{% if tp %} + {% with tp=pkg.in_testing %}{% if tp %} <li><span class="flagged">Version - <a href="{{ tp.get_absolute_url() }}" + <a href="{{ tp.get_absolute_url }}" title="Testing package details for {{ tp.pkgname }}">{{ tp.full_version }}</a> in testing</span></li> {% endif %}{% endwith %} @@ -49,12 +49,12 @@ {% endif %} </div> - {% with others = pkg.elsewhere() %}{% if others %} + {% with others=pkg.elsewhere %}{% if others %} <div id="elsewhere" class="widget"> <h4>Versions Elsewhere</h4> <ul> {% for o in others %} - <li><a href="{{ o.get_absolute_url() }}" + <li><a href="{{ o.get_absolute_url }}" title="Package details for {{ o.pkgname }}">{{ o.pkgname }} {{ o.full_version }} [{{ o.repo.name|lower }}] ({{ o.arch.name }})</a></li> {% endfor %} </ul> @@ -67,11 +67,11 @@ <meta itemprop="version" content="{{ pkg.full_version|escape }}"/> <meta itemprop="softwareVersion" content="{{ pkg.full_version|escape }}"/> <meta itemprop="fileSize" content="{{ pkg.compressed_size }}"/> - <meta itemprop="dateCreated" content="{{ pkg.build_date|date("Y-m-d") }}"/> - <meta itemprop="datePublished" content="{{ pkg.last_update|date("Y-m-d") }}"/> + <meta itemprop="dateCreated" content="{{ pkg.build_date|date:"Y-m-d" }}"/> + <meta itemprop="datePublished" content="{{ pkg.last_update|date:"Y-m-d" }}"/> <meta itemprop="operatingSystem" content="Arch Linux"/> {% if pkg.packager %}<div style="display:none" itemprop="provider" itemscope itemtype="http://schema.org/Person"> - <meta itemprop="name" content="{{ pkg.packager.get_full_name()|escape }}"/> + <meta itemprop="name" content="{{ pkg.packager.get_full_name|escape }}"/> </div>{% endif %} <table id="pkginfo"> <tr> @@ -84,17 +84,17 @@ title="Browse the {{ pkg.repo.name|capfirst }} repository">{{ pkg.repo.name|capfirst }}</a></td> </tr> {% if pkg.pkgname == pkg.pkgbase %} - {% with splits = pkg.split_packages() %}{% if splits %} + {% with splits=pkg.split_packages %}{% if splits %} <tr> <th>Split Packages:</th> - <td class="wrap relatedto">{% for s in splits %}<span class="related">{{ details.details_link(s) }}{% if not loop.last %}, {% endif %}</span>{% endfor %}</td> + <td class="wrap relatedto">{% for s in splits %}<span class="related">{% details_link s %}{% if not loop.last %}, {% endif %}</span>{% endfor %}</td> </tr> {% endif %}{% endwith %} {% else %} <tr> <th>Base Package:</th> - {% with base = pkg.base_package() %}{% if base %} - <td>{{ details.details_link(base) }}</td> + {% with base=pkg.base_package %}{% if base %} + <td>{% details_link base %}</td> {% else %} <td><a href="../{{ pkg.pkgbase }}/" title="Split package details for {{ pkg.pkgbase }}">{{ pkg.pkgbase }}</a></td> @@ -103,16 +103,16 @@ {% endif %} <tr> <th>Description:</th> - <td class="wrap" itemprop="description">{{ pkg.pkgdesc|default("", true) }}</td> + <td class="wrap" itemprop="description">{{ pkg.pkgdesc|default:"" }}</td> </tr><tr> <th>Upstream URL:</th> <td>{% if pkg.url %}<a itemprop="url" href="{{ pkg.url }}" title="Visit the website for {{ pkg.pkgname }}">{{ pkg.url|url_unquote }}</a>{% endif %}</td> </tr><tr> <th>License(s):</th> - <td class="wrap">{{ pkg.licenses.all()|join(", ") }}</td> + <td class="wrap">{{ pkg.licenses.all|join:", " }}</td> </tr> - {% with groups = pkg.groups.all() %}{% if groups %} + {% with groups=pkg.groups.all %}{% if groups %} <tr> <th>Groups:</th> <td class="wrap">{% for g in groups %} @@ -121,37 +121,37 @@ </td> </tr> {% endif %}{% endwith %} - {% with all_related = pkg.provides.all() %}{% if all_related %} + {% with all_related=pkg.provides.all %}{% if all_related %} <tr> <th>Provides:</th> - <td class="wrap relatedto">{% include "packages/details_relatedto.html.jinja" %}</td> + <td class="wrap relatedto">{% include "packages/details_relatedto.html" %}</td> </tr> {% endif %}{% endwith %} - {% with all_related = pkg.replaces.all() %}{% if all_related %} + {% with all_related=pkg.replaces.all %}{% if all_related %} <tr> <th>Replaces:</th> - <td class="wrap relatedto">{% include "packages/details_relatedto.html.jinja" %}</td> + <td class="wrap relatedto">{% include "packages/details_relatedto.html" %}</td> </tr> {% endif %}{% endwith %} - {% with all_related = pkg.conflicts.all() %}{% if all_related %} + {% with all_related=pkg.conflicts.all %}{% if all_related %} <tr> <th>Conflicts:</th> - <td class="wrap relatedto">{% include "packages/details_relatedto.html.jinja" %}</td> + <td class="wrap relatedto">{% include "packages/details_relatedto.html" %}</td> </tr> {% endif %}{% endwith %} - {% with rev_conflicts = pkg.reverse_conflicts() %}{% if rev_conflicts %} + {% with rev_conflicts=pkg.reverse_conflicts %}{% if rev_conflicts %} <tr> <th>Reverse Conflicts:</th> <td class="wrap relatedto">{% for conflict in rev_conflicts %} - <span class="related">{{ details.details_link(conflict) }}{% if not loop.last %}, {% endif %}</span>{% endfor %}</td> + <span class="related">{% details_link conflict %}{% if not loop.last %}, {% endif %}</span>{% endfor %}</td> </tr> {% endif %}{% endwith %} <tr> <th>Maintainers:</th> - {% with maints = pkg.maintainers %} + {% with maints=pkg.maintainers %} <td>{% if maints %}{% for m in maints %} <a href="/packages/?maintainer={{ m.username }}" - title="View packages maintained by {{ m.get_full_name() }}">{{ m.get_full_name() }}</a><br/> + title="View packages maintained by {{ m.get_full_name }}">{{ m.get_full_name }}</a><br/> {% endfor %}{% else %}Orphan{% endif %} </td> {% endwith %} @@ -163,50 +163,50 @@ <td>{{ pkg.installed_size|filesizeformat }}</td> </tr><tr> <th>Last Packager:</th> - <td>{% with pkgr = pkg.packager %}{% if pkgr %} + <td>{% with pkgr=pkg.packager %}{% if pkgr %} <a href="/packages/?packager={{ pkgr.username }}" - title="View packages packaged by {{ pkgr.get_full_name() }}">{{ pkgr.get_full_name() }}</a> + title="View packages packaged by {{ pkgr.get_full_name }}">{{ pkgr.get_full_name }}</a> {% else %}{{ pkg.packager_str }}{% endif %}{% endwith %}</td> </tr><tr> <th>Build Date:</th> - <td>{{ pkg.build_date|date("DATETIME_FORMAT") }} UTC</td> + <td>{{ pkg.build_date|date:"DATETIME_FORMAT" }} UTC</td> </tr>{% if pkg.signature %}<tr> <th>Signed By:</th> - <td>{% with signer = pkg.signer %}{% if signer %}{{ pgp_key_link(pkg.signature.key_id, signer.get_full_name())|safe }}{% else %}Unknown ({{ pgp_key_link(pkg.signature.key_id)|safe }}){% endif %}{% endwith %}</td> + <td>{% with signer=pkg.signer %}{% if signer %}{% pgp_key_link pkg.signature.key_id signer.get_full_name|safe %}{% else %}Unknown ({% pgp_key_link pkg.signature.key_id|safe %}){% endif %}{% endwith %}</td> </tr><tr> <th>Signature Date:</th> - <td>{{ pkg.signature.creation_time|date("DATETIME_FORMAT") }} UTC</td> + <td>{{ pkg.signature.creation_time|date:"DATETIME_FORMAT" }} UTC</td> </tr>{% else %}<tr> <th>Signed By:</th> <td>Unsigned</td> </tr>{% endif %}<tr> <th>Last Updated:</th> - <td>{{ pkg.last_update|date("DATETIME_FORMAT") }} UTC</td> + <td>{{ pkg.last_update|date:"DATETIME_FORMAT" }} UTC</td> </tr> - {% if user.is_authenticated() %}{% with flag_request = pkg.flag_request() %}{% if flag_request %}<tr> + {% if user.is_authenticated %}{% with flag_request=pkg.flag_request %}{% if flag_request %}<tr> <th>Last Flag Request:</th> - <td class="wrap">From {{ flag_request.who() }} on {{ flag_request.created|date }}:<br/> - <div class="userdata">{{ flag_request.message|linebreaksbr|default("{no message}", true) }}</div></td> + <td class="wrap">From {{ flag_request.who }} on {{ flag_request.created|date }}:<br/> + <div class="userdata">{{ flag_request.message|linebreaksbr|default:"{no message}" }}</div></td> </tr>{% endif %}{% endwith %}{% endif %} </table> </div> <div id="metadata"> - {% with deps = pkg.get_depends() %} + {% with deps=pkg.get_depends %} <div id="pkgdeps" class="listing"> <h3 title="{{ pkg.pkgname }} has the following dependencies"> Dependencies ({{deps|length}})</h3> {% if deps %}<ul id="pkgdepslist"> - {% for depend in deps %}{% include "packages/details_depend.html.jinja" %}{% endfor %} + {% for depend in deps %}{% include "packages/details_depend.html" %}{% endfor %} </ul>{% endif %} </div> {% endwith %} - {% with rqdby = pkg.get_requiredby() %} + {% with rqdby=pkg.get_requiredby %} <div id="pkgreqs" class="listing"> <h3 title="Packages that require {{ pkg.pkgname }}"> Required By ({{rqdby|length}})</h3> {% if rqdby %}<ul id="pkgreqslist"> - {% for req in rqdby %}{% include "packages/details_requiredby.html.jinja" %}{% endfor %} + {% for req in rqdby %}{% include "packages/details_requiredby.html" %}{% endfor %} </ul>{% endif %} </div> {% endwith %} |