admin.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from django import forms
  2. from django.contrib import admin
  3. from django.contrib.contenttypes.models import ContentType
  4. from utilities.forms import ContentTypeMultipleChoiceField, LaxURLField
  5. from .models import JobResult, Webhook
  6. from .utils import FeatureQuery
  7. #
  8. # Webhooks
  9. #
  10. class WebhookForm(forms.ModelForm):
  11. content_types = ContentTypeMultipleChoiceField(
  12. queryset=ContentType.objects.all(),
  13. limit_choices_to=FeatureQuery('webhooks')
  14. )
  15. payload_url = LaxURLField(
  16. label='URL'
  17. )
  18. class Meta:
  19. model = Webhook
  20. exclude = ()
  21. @admin.register(Webhook)
  22. class WebhookAdmin(admin.ModelAdmin):
  23. list_display = [
  24. 'name', 'models', 'payload_url', 'http_content_type', 'enabled', 'type_create', 'type_update', 'type_delete',
  25. 'ssl_verification',
  26. ]
  27. list_filter = [
  28. 'enabled', 'type_create', 'type_update', 'type_delete', 'content_types',
  29. ]
  30. form = WebhookForm
  31. fieldsets = (
  32. (None, {
  33. 'fields': ('name', 'content_types', 'enabled')
  34. }),
  35. ('Events', {
  36. 'fields': ('type_create', 'type_update', 'type_delete')
  37. }),
  38. ('HTTP Request', {
  39. 'fields': (
  40. 'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret',
  41. ),
  42. 'classes': ('monospace',)
  43. }),
  44. ('SSL', {
  45. 'fields': ('ssl_verification', 'ca_file_path')
  46. })
  47. )
  48. def models(self, obj):
  49. return ', '.join([ct.name for ct in obj.content_types.all()])
  50. #
  51. # Reports
  52. #
  53. @admin.register(JobResult)
  54. class JobResultAdmin(admin.ModelAdmin):
  55. list_display = [
  56. 'obj_type', 'name', 'created', 'completed', 'user', 'status',
  57. ]
  58. fields = [
  59. 'obj_type', 'name', 'created', 'completed', 'user', 'status', 'data', 'job_id'
  60. ]
  61. list_filter = [
  62. 'status',
  63. ]
  64. readonly_fields = fields
  65. def has_add_permission(self, request):
  66. return False