Commit f275f0ab authored by Hamza Dely's avatar Hamza Dely

[consos/views] Correction de TransactionViewSet.create()

parent 93c9e194
......@@ -518,7 +518,10 @@ class BoutonViewSet(viewsets.GenericViewSet):
queryset = Bouton.objects.all()
serializer_class = BoutonSerializer
filter_backends = (DjangoFilterBackend,)
filterset_fields = ('categorie', 'actif',)
filter_fields = {
'categorie' : ['exact', 'in'],
'actif' : ['exact'],
}
def list(self, request):
"""
......@@ -638,7 +641,7 @@ class TransactionViewSet(viewsets.GenericViewSet):
queryset = Transaction.objects.all()
serializer_class = TransactionSerializer
filter_backends = (DjangoFilterBackend,)
filterset_fields = ('id', 'valide',)
filter_fields = ('id', 'valide',)
def list(self, request):
"""
......@@ -656,14 +659,22 @@ class TransactionViewSet(viewsets.GenericViewSet):
def create(self, request):
"""
Ajoute une nouvelle transaction dans la base de données
Effectue une ou plusieurs nouvelles transactions.
S'il s'agit d'une vente de consos, le paramètre 'action' doit valoir
'vente', et le 'moyen' de paiement doit valoir 'note'.
Les données doivent:
- être envoyées via une requête POST
- dans le cas d'une vente, contenir l'identifiant du bouton dans le paramètre 'bouton',
contenir une liste d'identifiants de note dans le paramètre 'emetteur', ainsi qu'une quantité
dans le paramètre 'quantite'
"""
if not request.user.has_perm("consos.transaction_effectuer"):
return Response({}, status=status.HTTP_403_FORBIDDEN)
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
if serializer.emetteur != request.user.pk and not request.user.has_perm("consos.transaction_effectuer", Acl.TOTAL):
if (any(emetteur != request.user.pk for emetteur in serializer.emetteurs)
and not request.user.has_perm("consos.transaction_effectuer", Acl.TOTAL)):
return Response({"detail" : "Vous ne pouvez faire que des transactions depuis vôtre note"}, status=status.HTTP_403_FORBIDDEN)
serializer.save()
return Response({}, status=status.HTTP_201_CREATED)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment