admin.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. 'nickname', 'organization_name', 'email',
  22. 'end_date_of_membership')
  23. list_display_links = ('id', 'username', 'first_name', 'last_name')
  24. list_filter = ('status', MembershipFeeFilter)
  25. search_fields = ['username', 'first_name', 'last_name', 'email']
  26. ordering = ('last_name',)
  27. actions = [delete_selected, 'set_as_member', 'set_as_non_member']
  28. form = MemberChangeForm
  29. add_form = MemberCreationForm
  30. fieldsets = (
  31. ('Adhérent', {'fields': (
  32. ('status', 'resign_date'),
  33. 'type',
  34. ('first_name', 'last_name', 'nickname'),
  35. 'organization_name')}),
  36. ('Coordonnées', {'fields': (
  37. 'email',
  38. ('home_phone_number', 'mobile_phone_number'),
  39. 'address',
  40. ('postal_code', 'city', 'country'))}),
  41. ('Authentification', {'fields': (
  42. ('username', 'password'))}),
  43. ('Permissions', {'fields': (
  44. ('is_active', 'is_staff', 'is_superuser'))})
  45. )
  46. add_fieldsets = (
  47. ('Adhérent', {'fields': (
  48. 'status',
  49. 'type',
  50. ('first_name', 'last_name', 'nickname'),
  51. 'organization_name')}),
  52. ('Coordonnées', {'fields': (
  53. 'email',
  54. ('home_phone_number', 'mobile_phone_number'),
  55. 'address',
  56. ('postal_code', 'city', 'country'))}),
  57. ('Authentification', {'fields': (
  58. ('username', 'password'),)}),
  59. ('Permissions', {'fields': (
  60. ('is_active', 'is_staff', 'is_superuser', 'date_joined'))})
  61. )
  62. radio_fields = {"type": admin.HORIZONTAL}
  63. save_on_top = True
  64. inlines = [CryptoKeyInline, MembershipFeeInline]
  65. def get_readonly_fields(self, request, obj=None):
  66. if obj:
  67. # Remove help_text for readonly field (can't do that in the Form
  68. # django seems to user help_text from model for readonly fields)
  69. username_field = [
  70. f for f in obj._meta.fields if f.name == 'username']
  71. username_field[0].help_text = ''
  72. return ['username', ]
  73. else:
  74. return []
  75. def set_as_member(self, request, queryset):
  76. rows_updated = queryset.update(status='member')
  77. self.message_user(
  78. request,
  79. '%d membre(s) définis comme adhérent(s).' % rows_updated)
  80. set_as_member.short_description = 'Définir comme adhérent'
  81. def set_as_non_member(self, request, queryset):
  82. rows_updated = queryset.update(status='not_member')
  83. self.message_user(
  84. request,
  85. '%d membre(s) définis comme non adhérent(s).' % rows_updated)
  86. set_as_non_member.short_description = "Définir comme non adhérent"
  87. class MembershipFeeAdmin(admin.ModelAdmin):
  88. list_display = ('member', 'end_date', 'amount', 'payment_method',
  89. 'payment_date')
  90. form = autocomplete_light.modelform_factory(MembershipFee)
  91. admin.site.register(Member, MemberAdmin)
  92. admin.site.register(MembershipFee, MembershipFeeAdmin)
  93. admin.site.unregister(Group)
  94. # admin.site.register(LdapUser, LdapUserAdmin)