admin.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 autocomplete_light
  7. class CryptoKeyInline(admin.StackedInline):
  8. model = CryptoKey
  9. extra = 0
  10. class MembershipFeeInline(admin.TabularInline):
  11. model = MembershipFee
  12. extra = 0
  13. fields = ('start_date', 'end_date', 'amount')
  14. class MemberAdmin(admin.ModelAdmin):
  15. list_display = ('id', 'status', 'first_name', 'last_name',
  16. 'organization_name', 'email', 'end_date_of_membership')
  17. list_display_links = ('id', 'first_name', 'last_name')
  18. list_filter = ('status', MembershipFeeFilter)
  19. search_fields = ['first_name', 'last_name', 'email']
  20. actions = ['set_as_member', 'set_as_non_member']
  21. fields = (
  22. 'status',
  23. 'type',
  24. ('first_name', 'last_name', 'organization_name'),
  25. ('email', 'home_phone_number', 'mobile_phone_number'),
  26. 'address',
  27. ('postal_code', 'city', 'country'),
  28. ('entry_date', 'resign_date'),
  29. 'login'
  30. )
  31. radio_fields = {"type": admin.HORIZONTAL}
  32. save_on_top = True
  33. inlines = [CryptoKeyInline, MembershipFeeInline]
  34. def get_readonly_fields(self, request, obj=None):
  35. if obj:
  36. return ['login',]
  37. else:
  38. return []
  39. def set_as_member(self, request, queryset):
  40. rows_updated = queryset.update(status='adherent')
  41. self.message_user(
  42. request,
  43. '%d membre(s) définis comme adhérent(s).' % rows_updated)
  44. set_as_member.short_description = 'Définir comme adhérent'
  45. def set_as_non_member(self, request, queryset):
  46. rows_updated = queryset.update(status='non_adherent')
  47. self.message_user(
  48. request,
  49. '%d membre(s) définis comme non adhérent(s).' % rows_updated)
  50. set_as_non_member.short_description = "Définir comme non adhérent"
  51. class MembershipFeeAdmin(admin.ModelAdmin):
  52. list_display = ('member', 'end_date', 'amount')
  53. form = autocomplete_light.modelform_factory(MembershipFee)
  54. admin.site.register(Member, MemberAdmin)
  55. admin.site.register(MembershipFee, MembershipFeeAdmin)
  56. # admin.site.register(LdapUser, LdapUserAdmin)