admin.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. __package__ = 'archivebox.api'
  2. from signal_webhooks.admin import WebhookAdmin
  3. from signal_webhooks.utils import get_webhook_model
  4. from archivebox.base_models.admin import BaseModelAdmin
  5. from archivebox.api.models import APIToken
  6. class APITokenAdmin(BaseModelAdmin):
  7. list_display = ('created_at', 'id', 'created_by', 'token_redacted', 'expires')
  8. sort_fields = ('id', 'created_at', 'created_by', 'expires')
  9. readonly_fields = ('created_at', 'modified_at')
  10. search_fields = ('id', 'created_by__username', 'token')
  11. fieldsets = (
  12. ('Token', {
  13. 'fields': ('token', 'expires'),
  14. 'classes': ('card',),
  15. }),
  16. ('Owner', {
  17. 'fields': ('created_by',),
  18. 'classes': ('card',),
  19. }),
  20. ('Timestamps', {
  21. 'fields': ('created_at', 'modified_at'),
  22. 'classes': ('card',),
  23. }),
  24. )
  25. list_filter = ('created_by',)
  26. ordering = ['-created_at']
  27. list_per_page = 100
  28. class CustomWebhookAdmin(WebhookAdmin, BaseModelAdmin):
  29. list_display = ('created_at', 'created_by', 'id', *WebhookAdmin.list_display)
  30. sort_fields = ('created_at', 'created_by', 'id', 'referenced_model', 'endpoint', 'last_success', 'last_error')
  31. readonly_fields = ('created_at', 'modified_at', *WebhookAdmin.readonly_fields)
  32. fieldsets = (
  33. ('Webhook', {
  34. 'fields': ('name', 'signal', 'referenced_model', 'endpoint'),
  35. 'classes': ('card', 'wide'),
  36. }),
  37. ('Authentication', {
  38. 'fields': ('auth_token',),
  39. 'classes': ('card',),
  40. }),
  41. ('Status', {
  42. 'fields': ('enabled', 'last_success', 'last_error'),
  43. 'classes': ('card',),
  44. }),
  45. ('Owner', {
  46. 'fields': ('created_by',),
  47. 'classes': ('card',),
  48. }),
  49. ('Timestamps', {
  50. 'fields': ('created_at', 'modified_at'),
  51. 'classes': ('card',),
  52. }),
  53. )
  54. def register_admin(admin_site):
  55. admin_site.register(APIToken, APITokenAdmin)
  56. admin_site.register(get_webhook_model(), CustomWebhookAdmin)