From e01b0e9b082a2a2017e7d7071a76c352725a374b Mon Sep 17 00:00:00 2001 From: Dustin Ingram Date: Tue, 14 Feb 2023 21:15:05 +0000 Subject: [PATCH] Add support for Sigstore bundle files --- downloads/api.py | 2 +- .../0009_releasefile_sigstore_bundle_file.py | 18 ++++++++++++++++++ downloads/models.py | 3 +++ downloads/serializers.py | 1 + downloads/templatetags/download_tags.py | 5 ++++- templates/downloads/release_detail.html | 8 ++++++-- 6 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 downloads/migrations/0009_releasefile_sigstore_bundle_file.py diff --git a/downloads/api.py b/downloads/api.py index bb49e588e..e58023dbf 100644 --- a/downloads/api.py +++ b/downloads/api.py @@ -69,7 +69,7 @@ class Meta(GenericResource.Meta): 'creator', 'last_modified_by', 'os', 'release', 'description', 'is_source', 'url', 'gpg_signature_file', 'md5_sum', 'filesize', 'download_button', 'sigstore_signature_file', - 'sigstore_cert_file', + 'sigstore_cert_file', 'sigstore_bundle_file', ] filtering = { 'name': ('exact',), diff --git a/downloads/migrations/0009_releasefile_sigstore_bundle_file.py b/downloads/migrations/0009_releasefile_sigstore_bundle_file.py new file mode 100644 index 000000000..52383852c --- /dev/null +++ b/downloads/migrations/0009_releasefile_sigstore_bundle_file.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2023-02-14 21:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('downloads', '0008_auto_20220907_2102'), + ] + + operations = [ + migrations.AddField( + model_name='releasefile', + name='sigstore_bundle_file', + field=models.URLField(blank=True, help_text='Sigstore Bundle URL', verbose_name='Sigstore Bundle URL'), + ), + ] diff --git a/downloads/models.py b/downloads/models.py index 7955f58f5..6d91534ac 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -329,6 +329,9 @@ class ReleaseFile(ContentManageable, NameSlugModel): sigstore_cert_file = models.URLField( "Sigstore Cert URL", blank=True, help_text="Sigstore Cert URL" ) + sigstore_bundle_file = models.URLField( + "Sigstore Bundle URL", blank=True, help_text="Sigstore Bundle URL" + ) md5_sum = models.CharField('MD5 Sum', max_length=200, blank=True) filesize = models.IntegerField(default=0) download_button = models.BooleanField(default=False, help_text="Use for the supernav download button for this OS") diff --git a/downloads/serializers.py b/downloads/serializers.py index f30974e02..67bde5b5c 100644 --- a/downloads/serializers.py +++ b/downloads/serializers.py @@ -48,4 +48,5 @@ class Meta: 'resource_uri', 'sigstore_signature_file', 'sigstore_cert_file', + 'sigstore_bundle_file', ) diff --git a/downloads/templatetags/download_tags.py b/downloads/templatetags/download_tags.py index a6df103e9..fb3496787 100644 --- a/downloads/templatetags/download_tags.py +++ b/downloads/templatetags/download_tags.py @@ -10,4 +10,7 @@ def strip_minor_version(version): @register.filter def has_sigstore_materials(files): - return any(f.sigstore_cert_file or f.sigstore_signature_file for f in files) + return any( + f.sigstore_bundle_file or f.sigstore_cert_file or f.sigstore_signature_file + for f in files + ) diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 386bd795d..b68b69a66 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -65,8 +65,12 @@

Files

{{ f.filesize }} {% if f.gpg_signature_file %}SIG{% endif %} {% if release_files|has_sigstore_materials %} - {% if f.sigstore_cert_file %}CRT{% endif %} - {% if f.sigstore_signature_file %}SIG{% endif %} + {% if f.sigstore_bundle_file %} + {% if f.sigstore_bundle_file %}.sigstore{% endif %} + {% else %} + {% if f.sigstore_cert_file %}CRT{% endif %} + {% if f.sigstore_signature_file %}SIG{% endif %} + {% endif %} {% endif %} {% endfor %}