summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-03-21 15:52:40 -0500
committerDan McGee <dan@archlinux.org>2012-03-21 15:52:40 -0500
commit7d8580b4b151f1357632a26739287b9e4e99fc06 (patch)
treec0cc202e3c2710eb12158dda6b80e83fff6d34ff
parent250fa087c990957682d65fb1d1af89a1a176b84f (diff)
Add number of keys signed to master keys page
This really just makes me look bad, but an interesting fact none the less for people to look at. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--devel/models.py6
-rw-r--r--public/views.py15
-rw-r--r--templates/public/keys.html4
3 files changed, 17 insertions, 8 deletions
diff --git a/devel/models.py b/devel/models.py
index a9a2efc5..2fc61060 100644
--- a/devel/models.py
+++ b/devel/models.py
@@ -24,10 +24,8 @@ class MasterKey(models.Model):
class PGPSignature(models.Model):
- signer = PGPKeyField(max_length=40, verbose_name="Signer key fingerprint",
- help_text="consists of 40 hex digits; use `gpg --fingerprint`")
- signee = PGPKeyField(max_length=40, verbose_name="Signee key fingerprint",
- help_text="consists of 40 hex digits; use `gpg --fingerprint`")
+ signer = PGPKeyField(max_length=40, verbose_name="Signer key fingerprint")
+ signee = PGPKeyField(max_length=40, verbose_name="Signee key fingerprint")
created = models.DateField()
expires = models.DateField(null=True, blank=True)
valid = models.BooleanField(default=True)
diff --git a/public/views.py b/public/views.py
index 1f7006a6..1e1ffc6c 100644
--- a/public/views.py
+++ b/public/views.py
@@ -1,11 +1,12 @@
from django.conf import settings
from django.contrib.auth.models import User
+from django.db.models import Count
from django.http import Http404
from django.views.decorators.cache import cache_control
from django.views.generic import list_detail
from django.views.generic.simple import direct_to_template
-from devel.models import MasterKey
+from devel.models import MasterKey, PGPSignature
from main.models import Arch, Repo, Donor
from mirrors.models import MirrorUrl
from news.models import News
@@ -87,9 +88,17 @@ def feeds(request):
@cache_control(max_age=300)
def keys(request):
+ master_keys = MasterKey.objects.select_related('owner', 'revoker',
+ 'owner__userprofile', 'revoker__userprofile').filter(
+ revoked__isnull=True)
+ sig_counts = PGPSignature.objects.filter(valid=True,
+ expires__isnull=True).values_list('signer').annotate(
+ Count('signer'))
+ sig_counts = dict((key_id[-16:], ct) for key_id, ct in sig_counts)
+ for key in master_keys:
+ key.signature_count = sig_counts.get(key.pgp_key[-16:], 0)
context = {
- 'keys': MasterKey.objects.select_related('owner', 'revoker',
- 'owner__userprofile', 'revoker__userprofile').all(),
+ 'keys': master_keys,
}
return direct_to_template(request, 'public/keys.html', context)
diff --git a/templates/public/keys.html b/templates/public/keys.html
index 2e7fcebe..6b06cc32 100644
--- a/templates/public/keys.html
+++ b/templates/public/keys.html
@@ -34,13 +34,14 @@
<th>Owner's Signing Key</th>
<th>Revoker</th>
<th>Revoker's Signing Key</th>
+ <th>Developer/TU Keys Signed</th>
</tr>
</thead>
<tbody>
{% for key in keys %}
<tr>
<td>{% pgp_key_link key.pgp_key %}</td>
- <td>{{ key.pgp_key|pgp_fingerprint }}</td>
+ <td><tt>{{ key.pgp_key|pgp_fingerprint }}</tt></td>
{% with key.owner.userprofile as owner_profile %}
<td><a href="{{ owner_profile.get_absolute_url }}">{{ key.owner.get_full_name }}</a></td>
<td>{% pgp_key_link owner_profile.pgp_key %}</td>
@@ -49,6 +50,7 @@
<td><a href="{{ revoker_profile.get_absolute_url }}">{{ key.revoker.get_full_name }}</a></td>
<td>{% pgp_key_link revoker_profile.pgp_key %}</td>
{% endwith %}
+ <td>{{ key.signature_count }}</td>
</tr>
{% endfor %}
</tbody>