summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJelle van der Waa <jelle@vdwaa.nl>2016-11-30 21:40:31 +0100
committerJelle van der Waa <jelle@vdwaa.nl>2017-05-02 21:13:56 +0200
commit9ae767cb4faf8d8d58630cd4716d946abcc9653a (patch)
treea12c529ba640c095190a2c09125aed0fa80a6031
parent0b714e47d27d1a5f32635f144c7ad1f7bc1635a2 (diff)
downloadarchweb-9ae767cb4faf8d8d58630cd4716d946abcc9653a.tar.gz
archweb-9ae767cb4faf8d8d58630cd4716d946abcc9653a.zip
port templates/packages to pure django
-rw-r--r--main/templatetags/details_link.py77
-rw-r--r--templates/packages/details.html2
-rw-r--r--templates/packages/details_depend.html (renamed from templates/packages/details_depend.html.jinja)8
-rw-r--r--templates/packages/details_link.html1
-rw-r--r--templates/packages/details_link.html.jinja1
-rw-r--r--templates/packages/details_relatedto.html3
-rw-r--r--templates/packages/details_relatedto.html.jinja3
-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 %}