admin.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # -*- coding: utf-8 -*-
  2. from django.contrib import admin
  3. from coin.members.models import Member, CryptoKey, LdapUser, MembershipFee
  4. from django import forms
  5. from coin.members.membershipfee_filter import MembershipFeeFilter
  6. import pprint
  7. # class LdapUserAdmin(admin.ModelAdmin):
  8. # exclude = ['dn']
  9. # list_display = ['uid','first_name', 'last_name']
  10. # search_fields = ['first_name', 'last_name']
  11. #TODO : Déplacer dans LdapUser model (pre_save ?)
  12. #def save_model(self, request, obj, form, change):
  13. class CryptoKeyInline(admin.StackedInline):
  14. model = CryptoKey
  15. extra = 0
  16. class MembershipFeeInline(admin.TabularInline):
  17. model = MembershipFee
  18. extra = 0
  19. fields = ('start_date', 'end_date', 'amount')
  20. class MemberAdminForm(forms.ModelForm):
  21. # password = forms.CharField(widget=forms.PasswordInput(), required=False)
  22. def clean(self):
  23. cleaned_data = super(MemberAdminForm, self).clean()
  24. pprint.pprint(cleaned_data)
  25. return cleaned_data
  26. class Meta:
  27. model = Member
  28. class MemberAdmin(admin.ModelAdmin):
  29. list_display = ('id', 'status', 'first_name', 'last_name',
  30. 'organization_name', 'email', 'end_date_of_membership')
  31. list_display_links = ('id', 'first_name', 'last_name')
  32. list_filter = ('status', MembershipFeeFilter)
  33. search_fields = ['first_name', 'last_name', 'email']
  34. actions = ['set_as_member', 'set_as_non_member']
  35. fields = (
  36. 'status',
  37. 'type',
  38. ('first_name', 'last_name', 'organization_name'),
  39. ('email', 'home_phone_number', 'mobile_phone_number'),
  40. 'address',
  41. ('postal_code', 'city', 'country'),
  42. ('entry_date', 'resign_date'),
  43. 'ldap_cn'
  44. )
  45. radio_fields = {"type": admin.HORIZONTAL}
  46. save_on_top = True
  47. form = MemberAdminForm
  48. inlines = [CryptoKeyInline, MembershipFeeInline]
  49. def set_as_member(self, request, queryset):
  50. rows_updated = queryset.update(status='adherent')
  51. self.message_user(
  52. request,
  53. '%d membre(s) définis comme adhérent(s).' % rows_updated)
  54. set_as_member.short_description = 'Définir comme adhérent'
  55. def set_as_non_member(self, request, queryset):
  56. rows_updated = queryset.update(status='non_adherent')
  57. self.message_user(
  58. request,
  59. '%d membre(s) définis comme non adhérent(s).' % rows_updated)
  60. set_as_non_member.short_description = "Définir comme non adhérent"
  61. class MembershipFeeAdmin(admin.ModelAdmin):
  62. list_display = ('member', 'end_date', 'amount')
  63. admin.site.register(Member, MemberAdmin)
  64. admin.site.register(MembershipFee, MembershipFeeAdmin)
  65. # admin.site.register(LdapUser, LdapUserAdmin)