diff options
author | Felix Yan <felixonmars@archlinux.org> | 2019-02-09 01:49:15 +0800 |
---|---|---|
committer | Jelle van der Waa <jelle@vdwaa.nl> | 2019-02-09 14:58:48 +0100 |
commit | a5d05569dfa0802ebe6e7ee96aee434fe43f3e92 (patch) | |
tree | d2ddd3915815c4b8c340df3fba8791526630dc9e /main | |
parent | 4a2c87b0f63ee780089f20845ea3b66ee6228cc2 (diff) | |
download | archweb-a5d05569dfa0802ebe6e7ee96aee434fe43f3e92.tar.gz archweb-a5d05569dfa0802ebe6e7ee96aee434fe43f3e92.zip |
Make Package.signature return str key_id
We use the attribute in many places, but it's a "bytes" object in
pgpdump that messes up the remaining logic. Let's just wrap it from the
very beginning.
Diffstat (limited to 'main')
-rw-r--r-- | main/models.py | 4 | ||||
-rw-r--r-- | main/utils.py | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/main/models.py b/main/models.py index 18980ae5..2c6651b8 100644 --- a/main/models.py +++ b/main/models.py @@ -7,7 +7,7 @@ from django.contrib.auth.models import User from django.contrib.sites.models import Site from .fields import PositiveBigIntegerField -from .utils import set_created_field, DependStandin +from .utils import set_created_field, DependStandin, SignatureWrapper from devel.models import DeveloperKey from packages.alpm import AlpmAPI @@ -142,7 +142,7 @@ class Package(models.Model): return None data = BinaryData(self.signature_bytes) packets = list(data.packets()) - return packets[0] + return SignatureWrapper(packets[0]) @property def signer(self): diff --git a/main/utils.py b/main/utils.py index f0b10ef5..141f26c2 100644 --- a/main/utils.py +++ b/main/utils.py @@ -6,6 +6,7 @@ except ImportError: import hashlib import markdown from markdown.extensions import Extension +from pgpdump.packet import SignaturePacket from django.core.cache import cache from django.db import connections, router @@ -165,4 +166,12 @@ class DependStandin(object): self.deptype = first.deptype self.pkg = first.pkg.base_package() or PackageStandin(first.pkg) + +class SignatureWrapper(SignaturePacket): + 'Decode key_id from raw SignaturePacket' + def __init__(self, packet): + for field in ("sig_version", "creation_time", "expiration_time"): + setattr(self, field, getattr(packet, field)) + self.key_id = str(packet.key_id) if packet.key_id else None + # vim: set ts=4 sw=4 et: |