122 lines
No EOL
5.6 KiB
Python
122 lines
No EOL
5.6 KiB
Python
from django.shortcuts import render, redirect
|
||
from django.contrib.auth.decorators import login_required
|
||
from .models import PrivateMessage, PrivateMessageSubject
|
||
from django.db import models
|
||
from django.db.models import Max
|
||
from .forms import PrivateMessageForm, PrivateMessageSubjectForm
|
||
from django.contrib import messages
|
||
|
||
@login_required
|
||
def home(request):
|
||
private_messages = PrivateMessageSubject.objects.filter(
|
||
(models.Q(receiver=request.user) | models.Q(sender=request.user)) & models.Q(is_active=True)
|
||
).annotate(last_message_date=Max('messages__date_sent')).order_by('-last_message_date')
|
||
|
||
return render(request, 'messagerie/home.html', {'private_messages': private_messages})
|
||
|
||
@login_required
|
||
def view_message(request, message_id):
|
||
pm_message = PrivateMessageSubject.objects.get(pk=message_id)
|
||
if (pm_message.receiver != request.user and pm_message.sender != request.user) or not pm_message.is_active:
|
||
return redirect('pm_home')
|
||
|
||
private_messages = PrivateMessage.objects.filter(subject=pm_message).order_by('date_sent')
|
||
|
||
form = PrivateMessageForm(request.POST or None)
|
||
|
||
if not pm_message.is_read and pm_message.messages.first().author != request.user:
|
||
pm_message.is_read = True
|
||
pm_message.save()
|
||
|
||
if form.is_valid():
|
||
message = form.save(commit=False)
|
||
message.author = request.user
|
||
message.subject = pm_message
|
||
message.save()
|
||
|
||
pm_message.is_read = False
|
||
pm_message.save()
|
||
|
||
form = PrivateMessageForm()
|
||
|
||
return render(request, 'messagerie/view_message.html', {'pm_message': pm_message, 'private_messages': private_messages, 'form': form})
|
||
|
||
return render(request, 'messagerie/view_message.html', {'pm_message': pm_message, 'private_messages': private_messages, 'form': form})
|
||
|
||
@login_required
|
||
def new_message(request):
|
||
form_subject = PrivateMessageSubjectForm(request.POST or None)
|
||
form_message = PrivateMessageForm(request.POST or None)
|
||
|
||
if form_subject.is_valid() and form_message.is_valid():
|
||
if form_subject.cleaned_data['receiver'] == request.user:
|
||
messages.error(request, 'Vous ne pouvez pas vous envoyer un message à vous-même')
|
||
return redirect('pm_home')
|
||
subject = form_subject.save(commit=False)
|
||
subject.sender = request.user
|
||
subject.is_read = False
|
||
subject.save()
|
||
|
||
message = form_message.save(commit=False)
|
||
message.author = request.user
|
||
message.subject = subject
|
||
message.save()
|
||
|
||
return redirect('pm_view', message_id=message.id)
|
||
|
||
return render(request, 'messagerie/new_message.html', {'form_subject': form_subject, 'form_message': form_message})
|
||
|
||
def delete_subject(request, message_id):
|
||
pm_message = PrivateMessageSubject.objects.get(pk=message_id)
|
||
if pm_message.receiver != request.user and pm_message.sender != request.user:
|
||
return redirect('pm_home')
|
||
|
||
pm_message.is_active = False
|
||
pm_message.is_read = True
|
||
pm_message.save()
|
||
|
||
messages.success(request, 'Le sujet a bien été supprimé')
|
||
|
||
return redirect('pm_home')
|
||
|
||
@login_required
|
||
def send_all_users(request):
|
||
from users.models import User
|
||
all_users = User.objects.all()
|
||
sender = User.objects.get(username='RetroBot')
|
||
for user in all_users:
|
||
subject = PrivateMessageSubject.objects.create(
|
||
receiver=user,
|
||
sender=User.objects.get(username='RetroBot'),
|
||
subject="Bienvenue sur PassionRetro !"
|
||
)
|
||
|
||
PrivateMessage.objects.create(
|
||
subject=subject,
|
||
author=User.objects.get(username='RetroBot'),
|
||
message=f"""[b]Bienvenue sur Passion Retro ![/b]
|
||
|
||
Salut [b]{user.username}[/b] !,
|
||
|
||
Merci de nous avoir rejoints dans cette aventure dédiée aux passionnés de rétro ! Que tu sois fan de consoles vintage, collectionneur d'objets d'époque ou simple curieux, tu es ici chez toi.
|
||
|
||
✨ [b]Découvre tout ce que Passion Retro a à offrir :[/b]
|
||
Plonge dans nos articles pour en apprendre plus sur les trésors du passé, participe aux discussions sur le forum et teste tes connaissances avec nos jeux rétro. Chaque section est là pour te permettre de partager ta passion et d'en apprendre davantage.
|
||
|
||
🚀 [b]Rejoins la communauté :[/b]
|
||
Ton avis et tes contributions sont précieux ! N’hésite pas à lancer une discussion sur le forum, à réagir aux articles ou à défier les autres membres sur nos jeux. Plus nous sommes actifs, plus l’expérience sera enrichissante pour tous.
|
||
|
||
Si tu as des questions ou des suggestions pour améliorer le site, contacte-nous. Nous sommes là pour t'accompagner !
|
||
|
||
Encore une fois, bienvenue parmi nous et prépare-toi à replonger dans l’univers du rétro !
|
||
|
||
À bientôt,
|
||
[b]L'équipe Passion Retro[/b]""")
|
||
|
||
subject = PrivateMessageSubject.objects.create(receiver=user, sender=sender, subject='Bienvenue sur la messagerie privée')
|
||
PrivateMessage.objects.create(
|
||
subject=subject,
|
||
author=sender,
|
||
message=f"Cher [b]{user.username}[/b],\n\nBienvenue sur la messagerie privée de passion-retro. Tu peux désormais échanger des messages privés avec les autres membres du site.\n\nQuant a moi, je suis un nouvel utilisateur du site venu de la planète [b]Retronia[/b] ! J'ai été investis de la mission la plus importante de ma longue vie : [u]être le meilleur assistant de passion-retro[/u] ! J'espère sincèrement y parvenir !\n\nJe suis encore en orbite actuellement, mais guette les infos car je serait bientôt présent !\n\nCordialement,\n{sender.username}"
|
||
)
|
||
return redirect('pm_home') |