admin.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. def order_content_types(field):
  7. """
  8. Order the list of available ContentTypes by application
  9. """
  10. queryset = field.queryset.order_by('app_label', 'model')
  11. field.choices = [(ct.pk, '{} > {}'.format(ct.app_label, ct.name)) for ct in queryset]
  12. #
  13. # Custom fields
  14. #
  15. class CustomFieldForm(forms.ModelForm):
  16. class Meta:
  17. model = CustomField
  18. exclude = []
  19. def __init__(self, *args, **kwargs):
  20. super(CustomFieldForm, self).__init__(*args, **kwargs)
  21. order_content_types(self.fields['obj_type'])
  22. class CustomFieldChoiceAdmin(admin.TabularInline):
  23. model = CustomFieldChoice
  24. extra = 5
  25. @admin.register(CustomField)
  26. class CustomFieldAdmin(admin.ModelAdmin):
  27. inlines = [CustomFieldChoiceAdmin]
  28. list_display = ['name', 'models', 'type', 'required', 'default', 'weight', 'description']
  29. form = CustomFieldForm
  30. def models(self, obj):
  31. return ', '.join([ct.name for ct in obj.obj_type.all()])
  32. #
  33. # Graphs
  34. #
  35. @admin.register(Graph)
  36. class GraphAdmin(admin.ModelAdmin):
  37. list_display = ['name', 'type', 'weight', 'source']
  38. #
  39. # Export templates
  40. #
  41. class ExportTemplateForm(forms.ModelForm):
  42. class Meta:
  43. model = ExportTemplate
  44. exclude = []
  45. def __init__(self, *args, **kwargs):
  46. super(ExportTemplateForm, self).__init__(*args, **kwargs)
  47. # Format ContentType choices
  48. order_content_types(self.fields['content_type'])
  49. self.fields['content_type'].choices.insert(0, ('', '---------'))
  50. @admin.register(ExportTemplate)
  51. class ExportTemplateAdmin(admin.ModelAdmin):
  52. list_display = ['name', 'content_type', 'description', 'mime_type', 'file_extension']
  53. form = ExportTemplateForm
  54. #
  55. # Topology maps
  56. #
  57. @admin.register(TopologyMap)
  58. class TopologyMapAdmin(admin.ModelAdmin):
  59. list_display = ['name', 'slug', 'site']
  60. prepopulated_fields = {
  61. 'slug': ['name'],
  62. }
  63. #
  64. # User actions
  65. #
  66. @admin.register(UserAction)
  67. class UserActionAdmin(admin.ModelAdmin):
  68. actions = None
  69. list_display = ['user', 'action', 'content_type', 'object_id', '_message']
  70. def _message(self, obj):
  71. return mark_safe(obj.message)