diff --git a/app/owlca/templates/owlca/cert_item.html b/app/owlca/templates/owlca/cert_item.html index 1e4154d54428bf6f546f7d9238cff107d09552f5..3d74239a53faac8ec07a793a9739bea58542f51a 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 0c31aca2f3b32f1ccf1d707c409925f0288dbebf..87bbf9eee86fd996065cf655b5f49568aee0586f 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 ab35fef28b1f7716fc2d9d1f6d20553972dc529f..ece4fc454c2f74243d0df61f251ab32aa68cd008 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 12dadcbab1c3318275c4ddd53b6419a324172fb4..6cbf62486e2db8e1f1e3c0c74dda38ce54ff8b0f 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()