All checks were successful
Deploy production / deploy (push) Successful in 10m4s
59 lines
1.7 KiB
Python
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
|