|
@@ -11,31 +11,35 @@ from .models import Payment
|
|
|
class PaymentMixin:
|
|
|
def get_fields(self, request, obj=None):
|
|
|
fields = ('amount', 'period', 'payment_method', 'date',)
|
|
|
- if request.user.is_superuser or request.user.has_perm('banking.validate_payment'):
|
|
|
+ if request.user.has_perm('banking.validate_payment'):
|
|
|
fields += ('validated',)
|
|
|
return fields
|
|
|
|
|
|
def get_queryset(self, request):
|
|
|
qs = super().get_queryset(request)
|
|
|
- if request.user.is_superuser or request.user.has_perm('banking.validate_payment'):
|
|
|
+ if request.user.has_perm('banking.validate_payment'):
|
|
|
return qs
|
|
|
# Show only adherent contribution and payment related to a service for which the user is in managment group.
|
|
|
user_ctype = ContentType.objects.get(app_label='adhesions', model='adherent')
|
|
|
return qs.filter(Q(reason_type=user_ctype) | Q(service__service_type__group__in=request.user.groups.all()))
|
|
|
|
|
|
|
|
|
-class PaymentInlineMixin(PaymentMixin, GenericTabularInline):
|
|
|
+class PaymentInline(PaymentMixin, GenericTabularInline):
|
|
|
model = Payment
|
|
|
ct_field = 'reason_type'
|
|
|
ct_fk_field = 'reason_id'
|
|
|
+ extra = 1
|
|
|
|
|
|
|
|
|
-class ValidatedPaymentInline(PaymentInlineMixin):
|
|
|
+class ValidatedPaymentInline(PaymentInline):
|
|
|
extra = 0
|
|
|
verbose_name_plural = 'Paiements validés'
|
|
|
|
|
|
def get_readonly_fields(self, request, obj=None):
|
|
|
- return self.get_fields(request, obj)
|
|
|
+ if request.user.has_perm('banking.validate_payment'):
|
|
|
+ return ()
|
|
|
+ else:
|
|
|
+ return self.get_fields(request, obj)
|
|
|
|
|
|
def has_add_permission(self, request):
|
|
|
return False
|
|
@@ -47,8 +51,7 @@ class ValidatedPaymentInline(PaymentInlineMixin):
|
|
|
return super().get_queryset(request).filter(validated=True)
|
|
|
|
|
|
|
|
|
-class PendingOrNewPaymentInline(PaymentInlineMixin):
|
|
|
- extra = 1
|
|
|
+class PendingOrNewPaymentInline(PaymentInline):
|
|
|
verbose_name_plural = 'Paiements en attente de validation et nouveaux paiements'
|
|
|
|
|
|
def get_queryset(self, request):
|