admin.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. # -*- coding: utf-8 -*-
  2. from django.contrib import admin
  3. from django.contrib.auth.admin import UserAdmin
  4. from django.contrib.auth.models import Group
  5. from coin.members.models import Member, CryptoKey, LdapUser, MembershipFee
  6. from coin.members.membershipfee_filter import MembershipFeeFilter
  7. from coin.members.forms import MemberChangeForm, MemberCreationForm
  8. import autocomplete_light
  9. class CryptoKeyInline(admin.StackedInline):
  10. model = CryptoKey
  11. extra = 0
  12. class MembershipFeeInline(admin.TabularInline):
  13. model = MembershipFee
  14. extra = 0
  15. fields = ('start_date', 'end_date', 'amount')
  16. class MemberAdmin(UserAdmin):
  17. list_display = ('id', 'status', 'login', 'first_name', 'last_name',
  18. 'organization_name', 'email', 'end_date_of_membership')
  19. list_display_links = ('id', 'login', 'first_name', 'last_name')
  20. list_filter = ('status', MembershipFeeFilter)
  21. search_fields = ['login', 'first_name', 'last_name', 'email']
  22. ordering = ('last_name',)
  23. actions = ['set_as_member', 'set_as_non_member']
  24. form = MemberChangeForm
  25. add_form = MemberCreationForm
  26. fieldsets = (
  27. ('Adhérent', {'fields':(
  28. 'status',
  29. 'type',
  30. ('first_name', 'last_name', 'organization_name'),
  31. ('entry_date', 'resign_date'))}),
  32. ('Coordonnées', {'fields':(
  33. 'email',
  34. ('home_phone_number', 'mobile_phone_number'),
  35. 'address',
  36. ('postal_code', 'city', 'country'))}),
  37. ('Authentification', {'fields':(
  38. ('login', 'password'),)}),
  39. ('Permissions', {'fields':(
  40. ('is_staff', 'is_superuser'))})
  41. )
  42. add_fieldsets = (
  43. ('Adhérent', {'fields':(
  44. 'status',
  45. 'type',
  46. ('first_name', 'last_name', 'organization_name'),
  47. ('entry_date', 'resign_date'))}),
  48. ('Coordonnées', {'fields':(
  49. 'email',
  50. ('home_phone_number', 'mobile_phone_number'),
  51. 'address',
  52. ('postal_code', 'city', 'country'))}),
  53. ('Authentification', {'fields':(
  54. ('login','password'))}),
  55. ('Permissions', {'fields':(
  56. ('is_staff', 'is_superuser'))})
  57. )
  58. radio_fields = {"type": admin.HORIZONTAL}
  59. save_on_top = True
  60. inlines = [CryptoKeyInline, MembershipFeeInline]
  61. def get_readonly_fields(self, request, obj=None):
  62. if obj:
  63. return ['login',]
  64. else:
  65. return []
  66. def set_as_member(self, request, queryset):
  67. rows_updated = queryset.update(status='adherent')
  68. self.message_user(
  69. request,
  70. '%d membre(s) définis comme adhérent(s).' % rows_updated)
  71. set_as_member.short_description = 'Définir comme adhérent'
  72. def set_as_non_member(self, request, queryset):
  73. rows_updated = queryset.update(status='non_adherent')
  74. self.message_user(
  75. request,
  76. '%d membre(s) définis comme non adhérent(s).' % rows_updated)
  77. set_as_non_member.short_description = "Définir comme non adhérent"
  78. class MembershipFeeAdmin(admin.ModelAdmin):
  79. list_display = ('member', 'end_date', 'amount')
  80. form = autocomplete_light.modelform_factory(MembershipFee)
  81. admin.site.register(Member, MemberAdmin)
  82. admin.site.register(MembershipFee, MembershipFeeAdmin)
  83. admin.site.unregister(Group)
  84. # admin.site.register(LdapUser, LdapUserAdmin)