Corp/backend/api/admin.py
Игорь Надеин 86fed54811
All checks were successful
Deploy production / deploy (push) Successful in 10m4s
Add OIDC back-channel logout for deactivated accounts
2026-10-27 20:01:26 +03:00

59 lines
1.7 KiB
Python

from django.contrib import admin
from django.utils import timezone
from api.oidc.models import BackchannelClient, BackchannelDelivery
@admin.register(BackchannelClient)
class BackchannelClientAdmin(admin.ModelAdmin):
list_display = ("application", "logout_uri", "enabled")
list_select_related = ("application",)
def has_add_permission(self, request):
return request.user.is_superuser
def has_change_permission(self, request, obj=None):
return request.user.is_superuser
def has_delete_permission(self, request, obj=None):
return request.user.is_superuser
@admin.register(BackchannelDelivery)
class BackchannelDeliveryAdmin(admin.ModelAdmin):
list_display = (
"id",
"client",
"identity",
"state",
"attempts",
"next_attempt_at",
"last_error",
)
list_filter = ("state",)
list_select_related = ("client__application", "identity__application")
readonly_fields = tuple(field.name for field in BackchannelDelivery._meta.fields)
actions = ("retry_failed",)
@admin.action(description="Повторить неудавшуюся отправку")
def retry_failed(self, request, queryset):
if not request.user.is_superuser:
return
queryset.filter(state="failed").update(
state="pending",
next_attempt_at=timezone.now(),
completed_at=None,
locked_until=None,
lock_token="",
last_error="",
)
def has_add_permission(self, request):
return False
def has_change_permission(self, request, obj=None):
return request.user.is_superuser
def has_delete_permission(self, request, obj=None):
return False