admin.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. from __future__ import absolute_import
  2. from django.contrib import admin
  3. from django.core.paginator import Paginator
  4. from .models import (Event, Child, Parent, Genre, Band, Musician, Group,
  5. Quartet, Membership, ChordsMusician, ChordsBand, Invitation, Swallow)
  6. site = admin.AdminSite(name="admin")
  7. class CustomPaginator(Paginator):
  8. def __init__(self, queryset, page_size, orphans=0, allow_empty_first_page=True):
  9. super(CustomPaginator, self).__init__(queryset, 5, orphans=2,
  10. allow_empty_first_page=allow_empty_first_page)
  11. class EventAdmin(admin.ModelAdmin):
  12. list_display = ['event_date_func']
  13. def event_date_func(self, event):
  14. return event.date
  15. site.register(Event, EventAdmin)
  16. class ParentAdmin(admin.ModelAdmin):
  17. list_filter = ['child__name']
  18. search_fields = ['child__name']
  19. class ChildAdmin(admin.ModelAdmin):
  20. list_display = ['name', 'parent']
  21. list_per_page = 10
  22. list_filter = ['parent', 'age']
  23. def get_queryset(self, request):
  24. return super(ChildAdmin, self).get_queryset(request).select_related("parent__name")
  25. class CustomPaginationAdmin(ChildAdmin):
  26. paginator = CustomPaginator
  27. class FilteredChildAdmin(admin.ModelAdmin):
  28. list_display = ['name', 'parent']
  29. list_per_page = 10
  30. def get_queryset(self, request):
  31. return super(FilteredChildAdmin, self).get_queryset(request).filter(
  32. name__contains='filtered')
  33. class BandAdmin(admin.ModelAdmin):
  34. list_filter = ['genres']
  35. class GroupAdmin(admin.ModelAdmin):
  36. list_filter = ['members']
  37. class QuartetAdmin(admin.ModelAdmin):
  38. list_filter = ['members']
  39. class ChordsBandAdmin(admin.ModelAdmin):
  40. list_filter = ['members']
  41. class DynamicListDisplayChildAdmin(admin.ModelAdmin):
  42. list_display = ('parent', 'name', 'age')
  43. def get_list_display(self, request):
  44. my_list_display = super(DynamicListDisplayChildAdmin, self).get_list_display(request)
  45. if request.user.username == 'noparents':
  46. my_list_display = list(my_list_display)
  47. my_list_display.remove('parent')
  48. return my_list_display
  49. class DynamicListDisplayLinksChildAdmin(admin.ModelAdmin):
  50. list_display = ('parent', 'name', 'age')
  51. list_display_links = ['parent', 'name']
  52. def get_list_display_links(self, request, list_display):
  53. return ['age']
  54. site.register(Child, DynamicListDisplayChildAdmin)
  55. class SwallowAdmin(admin.ModelAdmin):
  56. actions = None # prevent ['action_checkbox'] + list(list_display)
  57. list_display = ('origin', 'load', 'speed')
  58. site.register(Swallow, SwallowAdmin)
  59. class DynamicListFilterChildAdmin(admin.ModelAdmin):
  60. list_filter = ('parent', 'name', 'age')
  61. def get_list_filter(self, request):
  62. my_list_filter = super(DynamicListFilterChildAdmin, self).get_list_filter(request)
  63. if request.user.username == 'noparents':
  64. my_list_filter = list(my_list_filter)
  65. my_list_filter.remove('parent')
  66. return my_list_filter