admin.py 1.8 KB

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