admin.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. from __future__ import unicode_literals
  2. from django import forms
  3. from django.contrib import admin
  4. from django.utils.safestring import mark_safe
  5. from utilities.forms import LaxURLField
  6. from .models import (
  7. CustomField, CustomFieldChoice, Graph, ExportTemplate, TopologyMap, UserAction,
  8. Webhook
  9. )
  10. def order_content_types(field):
  11. """
  12. Order the list of available ContentTypes by application
  13. """
  14. queryset = field.queryset.order_by('app_label', 'model')
  15. field.choices = [(ct.pk, '{} > {}'.format(ct.app_label, ct.name)) for ct in queryset]
  16. #
  17. # Webhooks
  18. #
  19. class WebhookForm(forms.ModelForm):
  20. payload_url = LaxURLField()
  21. class Meta:
  22. model = Webhook
  23. exclude = []
  24. def __init__(self, *args, **kwargs):
  25. super(WebhookForm, self).__init__(*args, **kwargs)
  26. order_content_types(self.fields['obj_type'])
  27. @admin.register(Webhook)
  28. class WebhookAdmin(admin.ModelAdmin):
  29. list_display = [
  30. 'name', 'models', 'payload_url', 'http_content_type', 'enabled', 'type_create', 'type_update',
  31. 'type_delete', 'ssl_verification',
  32. ]
  33. form = WebhookForm
  34. def models(self, obj):
  35. return ', '.join([ct.name for ct in obj.obj_type.all()])
  36. #
  37. # Custom fields
  38. #
  39. class CustomFieldForm(forms.ModelForm):
  40. class Meta:
  41. model = CustomField
  42. exclude = []
  43. def __init__(self, *args, **kwargs):
  44. super(CustomFieldForm, self).__init__(*args, **kwargs)
  45. order_content_types(self.fields['obj_type'])
  46. class CustomFieldChoiceAdmin(admin.TabularInline):
  47. model = CustomFieldChoice
  48. extra = 5
  49. @admin.register(CustomField)
  50. class CustomFieldAdmin(admin.ModelAdmin):
  51. inlines = [CustomFieldChoiceAdmin]
  52. list_display = ['name', 'models', 'type', 'required', 'filter_logic', 'default', 'weight', 'description']
  53. form = CustomFieldForm
  54. def models(self, obj):
  55. return ', '.join([ct.name for ct in obj.obj_type.all()])
  56. #
  57. # Graphs
  58. #
  59. @admin.register(Graph)
  60. class GraphAdmin(admin.ModelAdmin):
  61. list_display = ['name', 'type', 'weight', 'source']
  62. #
  63. # Export templates
  64. #
  65. class ExportTemplateForm(forms.ModelForm):
  66. class Meta:
  67. model = ExportTemplate
  68. exclude = []
  69. def __init__(self, *args, **kwargs):
  70. super(ExportTemplateForm, self).__init__(*args, **kwargs)
  71. # Format ContentType choices
  72. order_content_types(self.fields['content_type'])
  73. self.fields['content_type'].choices.insert(0, ('', '---------'))
  74. @admin.register(ExportTemplate)
  75. class ExportTemplateAdmin(admin.ModelAdmin):
  76. list_display = ['name', 'content_type', 'description', 'mime_type', 'file_extension']
  77. form = ExportTemplateForm
  78. #
  79. # Topology maps
  80. #
  81. @admin.register(TopologyMap)
  82. class TopologyMapAdmin(admin.ModelAdmin):
  83. list_display = ['name', 'slug', 'site']
  84. prepopulated_fields = {
  85. 'slug': ['name'],
  86. }
  87. #
  88. # User actions
  89. #
  90. @admin.register(UserAction)
  91. class UserActionAdmin(admin.ModelAdmin):
  92. actions = None
  93. list_display = ['user', 'action', 'content_type', 'object_id', '_message']
  94. def _message(self, obj):
  95. return mark_safe(obj.message)