This commit is contained in:
Trullemans Gregory 2021-06-20 14:34:56 +02:00
parent 787ba706aa
commit 088895ec43
1 changed files with 41 additions and 65 deletions

View File

@ -15,99 +15,75 @@ from .models import Message
@login_required @login_required
def get_number_of_unread_message(request): def get_number_of_unread_message(request):
"""Récupère le nombre de messages non lus associés à l'utilisateur en session. """Récupère le nombre de messages non lus associés à l'utilisateur en session.
""" """
return Message.objects.filter(recipient=request.user).filter(read_at__isnull=True).count() return Message.objects.filter(recipient=request.user).filter(read_at__isnull=True).count()
@login_required
@require_http_methods(["GET"])
def get_messages(request, message_type="received"):
"""Récupère des messages associés l'utilisateur actuellement connecté.
Args:
request (django.http.HttpRequest): (voir mes notes ci-dessous)
message_type (str): { received | sent }
Returns:
Retourne les messages reçus ou envoyés par l'utilisateur connecté.
Si le paramètre `message_type` est vide, la liste renvoyée est vide également.
"""
if message_type == "received":
message_list = request.user.received_messages.all()
elif message_type == "sent":
message_list = request.user.sent_messages.all()
else:
message_list = None
context = {"message_list": message_list, "message_type": message_type}
return render(request, "message_list.html", context)
@login_required @login_required
@require_http_methods(["GET"]) @require_http_methods(["GET"])
def get_received_messages(request): def get_received_messages(request):
"""Récupère des messages recus pour l'utilisateur connecté. """Récupère des messages recus pour l'utilisateur connecté.
""" """
return get_messages(request, "received") return request.user.received_messages.all()
@login_required @login_required
@require_http_methods(["GET"]) @require_http_methods(["GET"])
def get_sent_messages(request): def get_sent_messages(request):
"""Récupère des messages envoyés par l'utilisateur connecté. """Récupère des messages envoyés par l'utilisateur connecté.
""" """
return get_messages(request, "sent") return request.user.sent_messages.all()
@login_required @login_required
@require_http_methods(["GET"]) @require_http_methods(["GET"])
def get_message_details(request, messageid): def get_message_details(request, messageid):
"""Récupère les détails (l'affichage ?) d'un message. """Récupère les détails (l'affichage ?) d'un message.
""" """
message = get_object_or_404(Message, pk=messageid) message = get_object_or_404(Message, pk=messageid)
if not message.read_at and message.recipient == request.user.id: if not message.read_at and message.recipient == request.user.id:
message.read_at = datetime.now() message.read_at = datetime.now()
message.save() message.save()
context = {"message": message, "type": None} context = {"message": message, "type": None}
return render(request, "message_details.html", context) return render(request, "message_details.html", context)
@login_required @login_required
@require_http_methods(["POST"]) @require_http_methods(["POST"])
def delete_message(request, messageid): def delete_message(request, messageid):
"""Supprime le message dont la clé est passée en paramètre. """Supprime le message dont la clé est passée en paramètre.
""" """
try: try:
message = Message.objects.get(pk=messageid) message = Message.objects.get(pk=messageid)
if message.sender == request.user or message.recipient == request.user : if message.sender == request.user or message.recipient == request.user :
message.delete() message.delete()
else: else:
return HttpResponse(401) return HttpResponse(401)
except: except:
return HttpResponse(400) return HttpResponse(400)
return HttpResponse(200) return HttpResponse(200)
@login_required @login_required
@require_http_methods(["GET", "POST"]) @require_http_methods(["GET", "POST"])
def compose_message(request): def compose_message(request):
"""Permet à l'utilisateur connecté de rédiger un nouveau message. """Permet à l'utilisateur connecté de rédiger un nouveau message.
""" """
if request.method == "POST": if request.method == "POST":
form = MessageForm(request.POST) form = MessageForm(request.POST)
if form.is_valid(): if form.is_valid():
form.save() form.save()
return HttpResponseRedirect(reverse("sent_messages")) return HttpResponseRedirect(reverse("sent_messages"))
print("Invalid form") print("Invalid form")
else: else:
form = MessageForm() form = MessageForm()
context = {"form": form, "writer": request.user.id} context = {"form": form, "writer": request.user.id}
return render(request, "message_create.html", context) return render(request, "message_create.html", context)