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