|
@@ -2,6 +2,7 @@ from django.contrib import admin
|
|
|
from django.contrib.contenttypes.admin import GenericTabularInline
|
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
from django.db.models import Q
|
|
|
+from django.core.urlresolvers import reverse
|
|
|
|
|
|
from services.models import ServiceType
|
|
|
from .models import Payment
|
|
@@ -85,17 +86,54 @@ class PaymentTypeFilter(admin.SimpleListFilter):
|
|
|
return queryset.filter(service__service_type=service_type)
|
|
|
|
|
|
|
|
|
+def validate_payment(payment, request, queryset):
|
|
|
+ queryset.update(validated=True)
|
|
|
+
|
|
|
+
|
|
|
class PaymentAdmin(PaymentMixin, admin.ModelAdmin):
|
|
|
- list_display = ('get_adherent', 'payment_type_verbose', 'amount',
|
|
|
- 'period', 'payment_method', 'validated',)
|
|
|
+ list_display_links = None
|
|
|
list_filter = (PaymentTypeFilter, 'payment_method', 'validated',)
|
|
|
|
|
|
+ def get_list_display(self, request):
|
|
|
+ list_display = ('get_adherent', 'payment_type_verbose', 'amount',
|
|
|
+ 'period', 'payment_method', 'validated',)
|
|
|
+ if request.user.has_perm('banking.validate_payment'):
|
|
|
+ list_display += ('change',)
|
|
|
+ else:
|
|
|
+ list_display += ('change_pending',)
|
|
|
+ return list_display
|
|
|
+
|
|
|
+ def change(self, obj):
|
|
|
+ url = reverse('admin:banking_payment_change', args=[obj.pk])
|
|
|
+ return '<a href="%s" class="changelink">Modifier</a>' % url
|
|
|
+ change.short_description = ''
|
|
|
+ change.allow_tags = True
|
|
|
+
|
|
|
+ def change_pending(self, obj):
|
|
|
+ if obj.validated:
|
|
|
+ return '-'
|
|
|
+ else:
|
|
|
+ return self.change(obj)
|
|
|
+ change_pending.short_description = ''
|
|
|
+ change_pending.allow_tags = True
|
|
|
+
|
|
|
+ def get_actions(self, request):
|
|
|
+ actions = super().get_actions(request)
|
|
|
+ if request.user.has_perm('banking.validate_payment'):
|
|
|
+ actions['validate'] = (validate_payment, 'validate', 'Valider les paiements sélectionnés')
|
|
|
+ return actions
|
|
|
+
|
|
|
+ def has_add_permission(self, request):
|
|
|
+ return False
|
|
|
+
|
|
|
def has_change_permission(self, request, obj=None):
|
|
|
- if obj and not request.user.is_superuser:
|
|
|
+ if obj and not request.user.has_perm('banking.validate_payment'):
|
|
|
return not obj.validated
|
|
|
return True
|
|
|
|
|
|
- def has_add_permission(self, request):
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
+ if obj and not request.user.has_perm('banking.validate_payment'):
|
|
|
+ return not obj.validated
|
|
|
return False
|
|
|
|
|
|
|