diff --git a/Borrowing/forms.py b/Borrowing/forms.py index 37f57fccbe7571d93ed441c99db666a4b83a483b..7ae376c6f80029c43000919efcd2758ee613f2db 100644 --- a/Borrowing/forms.py +++ b/Borrowing/forms.py @@ -2,10 +2,13 @@ from django import forms class borrowing(forms.Form): + #Formulaire permettant de demander un objet à emprunter item = forms.CharField(label = "id_object") class accept(forms.Form): + #Formulaire lié à l'acceptation d'une demande d'emprunt id_borrowRequest = forms.CharField(label = "id_borrowRequest") class cancelOrEnd(forms.Form): + #Formulaire lié à l'annulation ou fin d'une demande d'emprunt cancelOrEnd = forms.IntegerField() \ No newline at end of file diff --git a/Borrowing/templates/Borrowing/borrow_request.html b/Borrowing/templates/Borrowing/borrow_request.html index 53835b36b759483360c9894b40537ca3045357c4..ba7e7ddd847b545152241c2c9e9446cbb23955b6 100644 --- a/Borrowing/templates/Borrowing/borrow_request.html +++ b/Borrowing/templates/Borrowing/borrow_request.html @@ -10,8 +10,6 @@ <ul> {% for request in requests %} {% if id_user == request.id_object.id_lender.id and not request.is_finished %} - <form method = "POST"> - {% csrf_token %} <li>{{request.id_object.name}} - Demandé par {{request.id_borrower.username}}</li> {% if request.id_object.is_borrowed%} {% if request.is_accepted %} @@ -21,9 +19,11 @@ <p>Vous prêtez déjà l'objet à quelqu'un d'autre</p> {% endif %} {% else %} + <form method = "POST"> + {% csrf_token %} <button type = "submit" name = "id_borrowRequest" id = "id_borrowRequest" value = {{request.id}} enabled>Accepter</button> + </form> {% endif %} - </form> {% endif %} {% endfor %} </ul> diff --git a/Borrowing/views.py b/Borrowing/views.py index 1293bcf75c5ddb6f466b5bea9d55be90036f7388..28973c078a9fc682ca62840fef1fc554008763c4 100644 --- a/Borrowing/views.py +++ b/Borrowing/views.py @@ -10,13 +10,17 @@ from .models import BorrowRequest @login_required def borrowing(request): + #Vue permettant à l'utilisateur de faire une demande if request.method == "POST": + #Cas où il effectue une nouvelle demande form = forms.borrowing(request.POST) if form.is_valid(): + #Création de la demande dans la base de données + borrowRequest = models.BorrowRequest.objects.create(id_object = item, id_borrower = request.user) + #Création d'un contexte permettant d'éviter de faire plusieurs fois la même demande doublons = models.BorrowRequest.objects.values("id_object", "id_borrower", "is_finished") listObjects = Object.objects.all() item = Object.objects.get(id = form.cleaned_data["item"]) - borrowRequest = models.BorrowRequest.objects.create(id_object = item, id_borrower = request.user) contexte = { "objects": listObjects, "user" : request.user, @@ -24,7 +28,9 @@ def borrowing(request): 'filtered_objects': [obj for obj in listObjects if not {"id_object": obj.id, "id_borrower": request.user.id,"is_finished": False} in doublons], "message" : "Votre demande a été effectuée" } + #Appel du template html return render(request, "Borrowing/borrowing.html", contexte) + #Création d'un contexte permettant d'éviter de faire plusieurs fois la même demande doublons = models.BorrowRequest.objects.values("id_object", "id_borrower", "is_finished") listObjects = Object.objects.all() contexte = { @@ -34,8 +40,10 @@ def borrowing(request): 'filtered_objects': [obj for obj in listObjects if not {"id_object": obj.id, "id_borrower": request.user.id,"is_finished": False} in doublons], "message" : "Choisissez !" } + #Appel du template html return render(request, "Borrowing/borrowing.html", contexte) + @login_required def borrowing_test(request, object_id): object = Object.objects.get(id=object_id) @@ -45,33 +53,43 @@ def borrowing_test(request, object_id): @login_required def borrow_requests(request): + #Vue permettant de voir la liste des sollicitations ainsi que les objets que l'on prête + #L'utilisateur a la possibilité d'accepter une demande if request.method == "POST": + #Cas où l'utilisateur accepte une demande form = forms.accept(request.POST) if form.is_valid(): + #Mise à jour du statut de la demande et de l'objet dans la base de données borrowRequest = BorrowRequest.objects.get(id = form.cleaned_data["id_borrowRequest"]) borrowRequest.id_object.is_borrowed = True borrowRequest.is_accepted = True borrowRequest.id_object.save() borrowRequest.save() + + #Appel du template html contexte = {"requests" : BorrowRequest.objects.all(), "id_user" : request.user.id} return render(request, "borrow_request.html", contexte) @login_required def borrowed_items(request): + #Vue permettant à l'utilisateur de gérer ses demandes if request.method == "POST": + #Cas où l'utilisateur modifie une demande (annule ou termine la demande) form = forms.cancelOrEnd(request.POST) - if form.is_valid(): + #Mise à jour du statut de la demande et de l'objet dans la base de données borrowRequest = BorrowRequest.objects.get(id = form.cleaned_data["cancelOrEnd"]) borrowRequest.is_finished = True if borrowRequest.is_accepted: borrowRequest.id_object.is_borrowed = False borrowRequest.id_object.save() borrowRequest.save() + #Appel du template html contexte = {"requests": BorrowRequest.objects.all(), "user": request.user} return render(request, "borrowed_items.html", contexte) @login_required def borrow_dashboard(request): + #Affichage de la page index return render(request, "borrow_dashboard.html") \ No newline at end of file