Source code for pki.admin

"""Django admin configuration for the PKI app."""

from django.contrib import admin
from django.http import HttpRequest

from pki.models.issued_credential import IssuedCredentialModel, RemoteIssuedCredentialModel

from .models import CaModel
from .models.certificate import CertificateModel
from .models.credential import CertificateChainOrderModel, CredentialModel
from .models.devid_registration import DevIdRegistration


[docs] class IssuedCredentialModelAdmin(admin.ModelAdmin[IssuedCredentialModel]): """Registers the IssuedCredentialModelAdmin with Django Admin."""
[docs] class RemoteIssuedCredentialModelAdmin(admin.ModelAdmin[RemoteIssuedCredentialModel]): """Registers the RemoteIssuedCredentialModelAdmin with Django Admin."""
[docs] class DevIdRegistrationAdmin(admin.ModelAdmin[DevIdRegistration]): """Admin configuration for the DevIdRegistrationModel."""
[docs] class CertificateModelAdmin(admin.ModelAdmin[CertificateModel]): """Admin configuration for the CertificateModel."""
[docs] def get_readonly_fields(self, _request: HttpRequest, _obj: CertificateModel | None = None) -> list[str]: """Sets all fields as read-only.""" return [f.name for f in CertificateModel._meta.fields] # noqa: SLF001
[docs] class CredentialModelAdmin(admin.ModelAdmin[CredentialModel]): """Admin configuration for the CredentialModel."""
[docs] class CertificateChainOrderModelAdmin(admin.ModelAdmin[CertificateChainOrderModel]): """Admin configuration for the CertificateChainOrderModel."""
[docs] class CaModelAdmin(admin.ModelAdmin[CaModel]): """Admin configuration for the CaModel."""
[docs] fieldsets = ( ( 'General', { 'fields': ( 'unique_name', 'is_active', 'ca_type', 'parent_ca', ) } ), ( 'Certificates and Credentials', { 'fields': ( 'certificate', 'credential', 'chain_truststore', ) } ), ( 'Remote Configuration', { 'fields': ( 'remote_host', 'remote_port', 'remote_path', 'est_username', 'onboarding_config', 'no_onboarding_config', ), 'classes': ('collapse',), } ), ( 'CRL Cycle Configuration', { 'fields': ( 'crl_cycle_enabled', 'crl_cycle_interval_hours', 'last_crl_generation_started_at', 'auto_crl_on_revocation_enabled', ), 'description': 'Configure automatic periodic CRL generation', } ), )
[docs] readonly_fields = ('last_crl_generation_started_at',)
admin.site.register(CertificateModel, CertificateModelAdmin) admin.site.register(CredentialModel, CredentialModelAdmin) admin.site.register(CertificateChainOrderModel, CertificateChainOrderModelAdmin) admin.site.register(CaModel, CaModelAdmin) admin.site.register(DevIdRegistration, DevIdRegistrationAdmin) admin.site.register(IssuedCredentialModel, IssuedCredentialModelAdmin) admin.site.register(RemoteIssuedCredentialModel, RemoteIssuedCredentialModelAdmin)