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)