1414from dje .admin import dejacode_site
1515from dje .forms import DataspacedAdminForm
1616from notification .models import WEBHOOK_EVENTS
17+ from notification .models import WebhookDelivery
1718from notification .models import WebhookSubscription
1819
1920
@@ -35,6 +36,24 @@ def __init__(self, *args, **kwargs):
3536 self .fields ["event" ] = forms .ChoiceField (choices = self .EVENTS )
3637
3738
39+ class WebhookDeliveryInline (admin .TabularInline ):
40+ model = WebhookDelivery
41+ fields = ("sent_date" , "response_status_code" , "delivery_error" )
42+ readonly_fields = ("sent_date" , "response_status_code" , "delivery_error" )
43+ extra = 0
44+ can_delete = False
45+ show_change_link = False
46+ verbose_name_plural = "Last 10 deliveries"
47+
48+ def has_add_permission (self , request , obj = None ):
49+ return False
50+
51+ def get_queryset (self , request ):
52+ qs = super ().get_queryset (request )
53+ latest_pks = qs .order_by ("-sent_date" ).values_list ("pk" , flat = True )[:10 ]
54+ return qs .filter (pk__in = latest_pks ).order_by ("-sent_date" )
55+
56+
3857@admin .register (WebhookSubscription , site = dejacode_site )
3958class WebhookSubscriptionAdmin (ProhibitDataspaceLookupMixin , DataspacedAdmin ):
4059 list_display = ("__str__" , "event" , "target_url" , "is_active" , "dataspace" )
@@ -44,3 +63,4 @@ class WebhookSubscriptionAdmin(ProhibitDataspaceLookupMixin, DataspacedAdmin):
4463 actions = []
4564 actions_to_remove = ["copy_to" , "compare_with" ]
4665 email_notification_on = ()
66+ inlines = [WebhookDeliveryInline ]
0 commit comments