100 lines
2.5 KiB
Python
100 lines
2.5 KiB
Python
|
# coding=UTF-8
|
||
|
|
||
|
from django.views.decorators.http import require_http_methods
|
||
|
from django.http import HttpResponse, HttpResponseRedirect
|
||
|
from django.contrib.auth.decorators import login_required
|
||
|
from django.shortcuts import render, get_object_or_404
|
||
|
from django.contrib.auth.models import User
|
||
|
from django.urls import reverse
|
||
|
from .forms import MessageForm
|
||
|
from .models import Message
|
||
|
|
||
|
|
||
|
# @login_required
|
||
|
def get_number_unreaded_message(request):
|
||
|
"""
|
||
|
"""
|
||
|
# user = User.objects.get(pk=userid)
|
||
|
number_unreaded_message = Message.objects.filter(reader=request.user).count()
|
||
|
return number_unreaded_message
|
||
|
|
||
|
|
||
|
@login_required
|
||
|
@require_http_methods(["GET"])
|
||
|
def get_messages(request, message_type="received"):
|
||
|
"""
|
||
|
"""
|
||
|
if message_type == "received":
|
||
|
message_list = Message.objects.filter(reader=request.user)
|
||
|
elif message_type == "sent":
|
||
|
message_list = Message.objects.filter(writer=request.user)
|
||
|
else:
|
||
|
message_list = None
|
||
|
|
||
|
context = {"message_list": message_list, "message_type": message_type}
|
||
|
return render(request, "message_list.html", context)
|
||
|
|
||
|
|
||
|
@login_required
|
||
|
@require_http_methods(["GET"])
|
||
|
def get_message_received(request):
|
||
|
"""
|
||
|
"""
|
||
|
return get_messages(request, "received")
|
||
|
|
||
|
|
||
|
@login_required
|
||
|
@require_http_methods(["GET"])
|
||
|
def get_message_sent(request):
|
||
|
"""
|
||
|
"""
|
||
|
return get_messages(request, "sent")
|
||
|
|
||
|
|
||
|
@login_required
|
||
|
@require_http_methods(["GET"])
|
||
|
def get_message_details(request, messageid):
|
||
|
"""
|
||
|
"""
|
||
|
message = get_object_or_404(Message, pk=messageid)
|
||
|
if not message.is_read and message.reader == request.user.id:
|
||
|
message.is_read = True
|
||
|
message.save()
|
||
|
|
||
|
context = {"message": message, "type": None}
|
||
|
return render(request, "message_details.html", context)
|
||
|
|
||
|
|
||
|
@login_required
|
||
|
@require_http_methods(["GET"])
|
||
|
def delete_message(request, messageid):
|
||
|
"""
|
||
|
"""
|
||
|
try:
|
||
|
Message.objects.get(pk=messageid).delete()
|
||
|
except:
|
||
|
return HttpResponse(409)
|
||
|
|
||
|
return HttpResponse(200)
|
||
|
|
||
|
|
||
|
@login_required
|
||
|
@require_http_methods(["GET", "POST"])
|
||
|
def compose_message(request):
|
||
|
"""
|
||
|
"""
|
||
|
|
||
|
if request.method == "POST":
|
||
|
form = MessageForm(request.POST)
|
||
|
|
||
|
if form.is_valid():
|
||
|
form.save()
|
||
|
return HttpResponseRedirect(reverse("message_sent"))
|
||
|
else:
|
||
|
print("Form invalide")
|
||
|
else:
|
||
|
form = MessageForm()
|
||
|
|
||
|
context = {"form": form, "writer": request.user.id}
|
||
|
return render(request, "message_create.html", context)
|