"""
Public certificate verification (Part 6).
URL: /verify/{certificate_number}/
"""
from django.shortcuts import get_object_or_404, render
from django.views import View

from apps.courses.models import CourseCertificate
from apps.courses.growth_service import freelancer_share_blurb


class PublicCertificateVerifyView(View):
    """
    Credibility page: name (or initials), course, score band (not exact %),
    issue date, valid/revoked. Exact score is intentionally withheld.
    """
    template_name = 'courses/verify_certificate.html'

    def get(self, request, certificate_id):
        cert = get_object_or_404(
            CourseCertificate.objects.select_related('course', 'user'),
            certificate_number__iexact=certificate_id.strip(),
        )
        return render(request, self.template_name, {
            'certificate': cert,
            'is_valid': cert.is_valid,
            'display_name': cert.public_display_name,
            'score_band_label': cert.score_band_label,
            'freelancer_blurb': (
                freelancer_share_blurb(
                    cert,
                    request.build_absolute_uri(cert.get_verify_path()),
                ) if cert.is_valid else ''
            ),
        })
