admin.py 3.9 KB

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