admin.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. from django.contrib import admin
  2. from django.contrib.contenttypes.admin import GenericTabularInline
  3. from django.contrib.contenttypes.models import ContentType
  4. from django.db.models import Q
  5. from django.core.urlresolvers import reverse
  6. from services.models import ServiceType
  7. from .models import Payment
  8. ### Inlines
  9. class PaymentInline(GenericTabularInline):
  10. model = Payment
  11. ct_field = 'reason_type'
  12. ct_fk_field = 'reason_id'
  13. extra = 0
  14. #max_num = 0
  15. fields = ('amount', 'period', 'payment_method', 'start', 'end',)
  16. #readonly_fields = ('amount', 'period', 'payment_method', 'start',)
  17. verbose_name_plural = 'Contributions'
  18. #def get_queryset(self, request):
  19. # # Paiement récurrent en cours (sans date de fin)
  20. # return super().get_queryset(request).filter(period__gt=0, end__isnull=True)
  21. #def has_delete_permission(self, request, obj=None):
  22. # return False
  23. #class ValidatedPaymentInline(PaymentInline):
  24. # extra = 0
  25. # verbose_name_plural = 'Paiements validés'
  26. #
  27. # def get_readonly_fields(self, request, obj=None):
  28. # if request.user.has_perm('banking.validate_payment'):
  29. # return ()
  30. # else:
  31. # return self.get_fields(request, obj)
  32. #
  33. # def has_add_permission(self, request):
  34. # return False
  35. #
  36. # def has_delete_permission(self, request, obj=None):
  37. # return request.user.has_perm('banking.validate_payment')
  38. #
  39. # def get_queryset(self, request):
  40. # return super().get_queryset(request).filter(validated=True)
  41. #
  42. #
  43. #class PendingOrNewPaymentInline(PaymentInline):
  44. # verbose_name_plural = 'Paiements en attente de validation et nouveaux paiements'
  45. #
  46. # def get_queryset(self, request):
  47. # return super().get_queryset(request).filter(validated=False)
  48. ### Filters
  49. #class PaymentTypeFilter(admin.SimpleListFilter):
  50. # title = 'type de paiement'
  51. # parameter_name = 'type'
  52. #
  53. # def lookups(self, request, model_admin):
  54. # choices = [
  55. # ('membership', 'Cotisation'),
  56. # ('service', 'Service'),
  57. # ]
  58. # service_types = ServiceType.objects.all()
  59. # if not (request.user.is_superuser or request.user.has_perm('banking.validate_payment')):
  60. # service_types = service_types.filter(group__in=request.user.groups.all())
  61. # for stype in service_types:
  62. # choices.append((stype.pk, 'Service (%s)' % stype.name))
  63. # return choices
  64. #
  65. # def queryset(self, request, queryset):
  66. # if self.value() == 'membership':
  67. # return queryset.filter(reason_type__app_label='adhesions',
  68. # reason_type__model='adherent')
  69. # if self.value() == 'service':
  70. # return queryset.filter(reason_type__app_label='services',
  71. # reason_type__model='service')
  72. # try:
  73. # service_type = ServiceType.objects.get(pk=int(self.value()))
  74. # except (ValueError, TypeError, ServiceType.DoesNotExist,):
  75. # return queryset
  76. # else:
  77. # return queryset.filter(service__service_type=service_type)
  78. #
  79. #
  80. #### Actions
  81. #
  82. #def validate_payment(payment, request, queryset):
  83. # queryset.update(validated=True)
  84. #
  85. #
  86. #### ModelAdmin
  87. #
  88. #class PaymentAdmin(admin.ModelAdmin):
  89. # #list_display_links = None
  90. # list_filter = (PaymentTypeFilter, 'payment_method', 'validated',)
  91. #
  92. # def get_list_display(self, request):
  93. # list_display = ()
  94. # #if request.user.has_perm('auth.change_user'):
  95. # # list_display += ('adherent_link',)
  96. # #else:
  97. # #list_display += ('get_adherent',)
  98. # list_display += ('payment_type_verbose', 'get_adherent', 'amount',
  99. # 'period', 'payment_method', 'start_display', 'end_display', 'validated_display',)
  100. # #if request.user.has_perm('banking.validate_payment'):
  101. # # list_display += ('change',)
  102. # #else:
  103. # # list_display += ('change_pending',)
  104. # return list_display
  105. #
  106. # def start_display(self, obj):
  107. # return obj.start
  108. # start_display.short_description = 'Début'
  109. #
  110. # def end_display(self, obj):
  111. # return obj.end
  112. # end_display.short_description = 'Fin'
  113. #
  114. # def validated_display(self, obj):
  115. # return obj.validated
  116. # validated_display.short_description = 'Validé'
  117. # validated_display.boolean = True
  118. #
  119. # #def adherent_link(self, obj):
  120. # # adherent = obj.get_adherent()
  121. # # url = reverse('admin:adhesions_adherent_change', args=[adherent.pk])
  122. # # return '<a href="%s">%s</a>' % (url, adherent)
  123. # #adherent_link.short_description = 'Adhérent'
  124. # #adherent_link.allow_tags = True
  125. #
  126. # def change(self, obj):
  127. # url = reverse('admin:banking_payment_change', args=[obj.pk])
  128. # return '<a href="%s" class="changelink">Modifier</a>' % url
  129. # change.short_description = ''
  130. # change.allow_tags = True
  131. #
  132. # def change_pending(self, obj):
  133. # if obj.validated:
  134. # return '-'
  135. # else:
  136. # return self.change(obj)
  137. # change_pending.short_description = ''
  138. # change_pending.allow_tags = True
  139. #
  140. # def get_actions(self, request):
  141. # actions = super().get_actions(request)
  142. # if request.user.has_perm('banking.validate_payment'):
  143. # actions['validate'] = (validate_payment, 'validate', 'Valider les paiements sélectionnés')
  144. # return actions
  145. #
  146. # def has_add_permission(self, request):
  147. # return False
  148. #
  149. # def has_change_permission(self, request, obj=None):
  150. # if obj and not request.user.has_perm('banking.validate_payment'):
  151. # return not obj.validated
  152. # return True
  153. #
  154. # def has_delete_permission(self, request, obj=None):
  155. # if obj and not request.user.has_perm('banking.validate_payment'):
  156. # return not obj.validated
  157. # return False
  158. #
  159. #
  160. #admin.site.register(Payment, PaymentAdmin)