From 9adb90ffda93d2884c0bf1cca75963947049b8c3 Mon Sep 17 00:00:00 2001 From: Frank Sauerburger <frank@sauerburger.com> Date: Wed, 3 Mar 2021 23:42:32 +0100 Subject: [PATCH] Use pickup-based certificate download --- app/owlca/templates/owlca/cert_item.html | 9 ++++++++- app/owlca/templates/owlca/certificate_pickup.html | 2 +- app/owlca/urls.py | 2 +- app/owlca/views.py | 5 ++--- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/owlca/templates/owlca/cert_item.html b/app/owlca/templates/owlca/cert_item.html index 1e4154d..3d74239 100644 --- a/app/owlca/templates/owlca/cert_item.html +++ b/app/owlca/templates/owlca/cert_item.html @@ -99,10 +99,17 @@ {% if not csr %} <div> + {% if pickup %} + <a href="{% url 'cert-pickup-download' cert.request.pickup_code cert.pk %}"> + <i class="fas fa-download"></i> + Download cert.pem + </a> + {% else %} <a href="{% url 'cert-download' cert.pk %}"> <i class="fas fa-download"></i> - {{ request.scheme }}://{{ request.get_host}}{% url 'cert-download' cert.pk %} + {{ request.scheme }}://{{ request.get_host}}{% url 'cert-download' cert.pk %} </a> + {% endif %} </div> {% endif %} </div> diff --git a/app/owlca/templates/owlca/certificate_pickup.html b/app/owlca/templates/owlca/certificate_pickup.html index 0c31aca..87bbf9e 100644 --- a/app/owlca/templates/owlca/certificate_pickup.html +++ b/app/owlca/templates/owlca/certificate_pickup.html @@ -36,7 +36,7 @@ {% if certificatesigningrequest.verification == 10 %} <ul class="list-unstyled"> {% for cert in certificatesigningrequest.certificates.all %} - {% include 'owlca/cert_item.html' %} + {% include 'owlca/cert_item.html' with pickup=True %} {% endfor %} </ul> {% elif certificatesigningrequest.verification == 0 %} diff --git a/app/owlca/urls.py b/app/owlca/urls.py index ab35fef..ece4fc4 100644 --- a/app/owlca/urls.py +++ b/app/owlca/urls.py @@ -32,7 +32,7 @@ urlpatterns = [ path("cert/<str:pickup_code>/", views.CertPickupView.as_view(), name="cert-pickup"), - path("cert/<str:pickup_code>/<str:serial_number>/cert.pem", + path("cert/<str:pickup_code>/<str:cert_pk>/cert.pem", views.cert_pickup_download, name="cert-pickup-download"), ] diff --git a/app/owlca/views.py b/app/owlca/views.py index 12dadcb..6cbf624 100644 --- a/app/owlca/views.py +++ b/app/owlca/views.py @@ -89,12 +89,11 @@ class CertPickupView(DetailView): template_name = "owlca/certificate_pickup.html" model = models.CertificateSigningRequest -def cert_pickup_download(request, pickup_code, serial_number): +def cert_pickup_download(request, pickup_code, cert_pk): csr = get_object_or_404(models.CertificateSigningRequest, pickup_code=pickup_code) try: - bin_serial = bytes.fromhex(serial_number) - cert = csr.certificates.get(serial_number=bin_serial) + cert = csr.certificates.get(pk=cert_pk) except (ValueError, models.Certificate.DoesNotExist) as e: raise Http404() -- GitLab