admin.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django import forms
  2. from django.contrib import admin
  3. from django.utils.safestring import mark_safe
  4. from .models import CustomField, CustomFieldChoice, Graph, ExportTemplate, TopologyMap, UserAction
  5. class CustomFieldForm(forms.ModelForm):
  6. class Meta:
  7. model = CustomField
  8. exclude = []
  9. def __init__(self, *args, **kwargs):
  10. super(CustomFieldForm, self).__init__(*args, **kwargs)
  11. # Organize the available ContentTypes
  12. queryset = self.fields['obj_type'].queryset.order_by('app_label', 'model')
  13. self.fields['obj_type'].choices = [(ct.pk, '{} > {}'.format(ct.app_label, ct.name)) for ct in queryset]
  14. class CustomFieldChoiceAdmin(admin.TabularInline):
  15. model = CustomFieldChoice
  16. extra = 5
  17. @admin.register(CustomField)
  18. class CustomFieldAdmin(admin.ModelAdmin):
  19. inlines = [CustomFieldChoiceAdmin]
  20. list_display = ['name', 'models', 'type', 'required', 'default', 'weight', 'description']
  21. form = CustomFieldForm
  22. def models(self, obj):
  23. return ', '.join([ct.name for ct in obj.obj_type.all()])
  24. @admin.register(Graph)
  25. class GraphAdmin(admin.ModelAdmin):
  26. list_display = ['name', 'type', 'weight', 'source']
  27. @admin.register(ExportTemplate)
  28. class ExportTemplateAdmin(admin.ModelAdmin):
  29. list_display = ['name', 'content_type', 'description', 'mime_type', 'file_extension']
  30. @admin.register(TopologyMap)
  31. class TopologyMapAdmin(admin.ModelAdmin):
  32. list_display = ['name', 'slug', 'site']
  33. prepopulated_fields = {
  34. 'slug': ['name'],
  35. }
  36. @admin.register(UserAction)
  37. class UserActionAdmin(admin.ModelAdmin):
  38. actions = None
  39. list_display = ['user', 'action', 'content_type', 'object_id', '_message']
  40. def _message(self, obj):
  41. return mark_safe(obj.message)