93 lines
2.5 KiB
Python
93 lines
2.5 KiB
Python
"""Vues et fonctions pour tout ce qui touche à la communication entre plusieurs utilisateurs."""
|
|
|
|
from datetime import datetime
|
|
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
from django.shortcuts import render, get_object_or_404
|
|
from django.views.decorators.http import require_http_methods
|
|
from django.urls import reverse
|
|
|
|
from .forms import MessageForm
|
|
from .models import Message
|
|
|
|
|
|
@login_required
|
|
def get_number_of_unread_message(request):
|
|
"""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()
|
|
)
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["GET"])
|
|
def get_received_messages(request):
|
|
"""Récupère des messages recus pour l'utilisateur connecté.
|
|
"""
|
|
return request.user.received_messages.all()
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["GET"])
|
|
def get_sent_messages(request):
|
|
"""Récupère des messages envoyés par l'utilisateur connecté.
|
|
"""
|
|
return request.user.sent_messages.all()
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["GET"])
|
|
def get_message_details(request, messageid):
|
|
"""Récupère les détails (l'affichage ?) d'un message.
|
|
"""
|
|
message = get_object_or_404(Message, pk=messageid)
|
|
if not message.read_at and message.recipient == request.user.id:
|
|
message.read_at = datetime.now()
|
|
message.save()
|
|
|
|
context = {"message": message, "type": None}
|
|
return render(request, "message_details.html", context)
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["POST"])
|
|
def delete_message(request, messageid):
|
|
"""Supprime le message dont la clé est passée en paramètre.
|
|
"""
|
|
try:
|
|
message = Message.objects.get(pk=messageid)
|
|
|
|
if message.sender == request.user or message.recipient == request.user:
|
|
message.delete()
|
|
else:
|
|
return HttpResponse(401)
|
|
except:
|
|
return HttpResponse(400)
|
|
|
|
return HttpResponse(200)
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["GET", "POST"])
|
|
def compose_message(request):
|
|
"""Permet à l'utilisateur connecté de rédiger un nouveau message.
|
|
"""
|
|
|
|
if request.method == "POST":
|
|
form = MessageForm(request.POST)
|
|
|
|
if form.is_valid():
|
|
form.save()
|
|
return HttpResponseRedirect(reverse("sent_messages"))
|
|
|
|
print("Invalid form")
|
|
else:
|
|
form = MessageForm()
|
|
|
|
context = {"form": form, "writer": request.user.id}
|
|
return render(request, "message_create.html", context)
|