digitaleagenturnc/message/views.py

131 lines
4.7 KiB
Python

from django.shortcuts import render, redirect, reverse
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
from .forms import MessageForm
from notificsys.models import UserNotification
from django.core.mail import send_mail
from django.template.loader import render_to_string
from .models import Message
from django.contrib import messages
from django.http import JsonResponse
from notificsys.models import UserNotification
from django.urls import reverse_lazy
# ALLE STANDARDS EINER AGENTUR
@login_required
def mainmessageview(request):
if request.method == 'POST':
context = {
'active_link' : 'messages'
}
formtocheck = MessageForm(request.user, request.POST)
if formtocheck.is_valid():
targetuser_ids = formtocheck.cleaned_data["target_user"]
print(targetuser_ids)
for user in targetuser_ids:
targetuser = User.objects.get(pk=user)
messagecontent = formtocheck.cleaned_data["message_content"]
message = Message.objects.create(target_user=targetuser, agency=request.user.profile.agency, content=messagecontent, created_by=request.user)
targeturl = request.build_absolute_uri() + "sl/" + str(message.id)
notificationtext = "Sie haben eine neue Mitteilung erhalten: " + message.content
if(targetuser.profile.user_messages_mail):
username = targetuser.first_name + " " + targetuser.last_name
msg_html = render_to_string('notificsys/notification_mail.html', {'username': username, 'notificationtext' : notificationtext, 'linktarget' : targeturl})
send_mail(
'Agentur-Benachrichtigung',
'Hallo ' + targetuser.first_name + ' ' + targetuser.last_name + '! ' + notificationtext + " <a href='"+targeturl+"'>Klicken Sie hier.</a>",
'support@digitale-agentur.com',
[targetuser.email],
html_message=msg_html,
fail_silently=False
)
if(targetuser.profile.user_messages_push):
newnotification = UserNotification(touser=targetuser, elementid=message.id, notificationtext='Hallo ' + targetuser.first_name + ' ' + targetuser.last_name + '! ' + notificationtext, notificationtype="messagereceived")
newnotification.save()
else:
messages.warning(request, f'Bitte valide Daten eingeben!')
context = {
'active_link' : 'messages',
'form' : MessageForm(request.user),
'usermessages' : Message.objects.filter(target_user=request.user, agency=request.user.profile.agency).order_by('-created_date')
}
return render (request, 'message/message.html', context)
context = {
'active_link' : 'messages',
'form' : MessageForm(request.user),
'usermessages' : Message.objects.filter(target_user=request.user, agency=request.user.profile.agency).order_by('-created_date')
}
messages.success(request, f'Ihre Nachricht wurde verschickt!')
return render (request, 'message/message.html', context)
else:
context = {
'active_link' : 'messages',
'form' : MessageForm(request.user),
'usermessages' : Message.objects.filter(target_user=request.user, agency=request.user.profile.agency).order_by('-created_date')
}
# Adding active_link
# Loading only user same agency
# Change context and return for template-data
# # Get all Users of the Same Agency as logged user
return render (request, 'message/message.html', context)
@login_required
def singelmessageview(request, pk):
#Notification delete
unknownnotification = UserNotification.objects.filter(touser__pk=request.user.pk, elementid=pk).delete()
context = {
'active_link' : 'messages',
'mess' : Message.objects.get(pk=pk)
}
return render (request, 'message/message_single.html', context)
@login_required
def delsinglemessage(request):
if request.method == 'GET':
if request.GET['action'] == 'delsingle':
Message.objects.get(pk=request.GET['todelid']).delete()
UserNotification.objects.filter(elementid=request.GET['todelid']).delete()
return JsonResponse({})
@login_required
def delsinglemessagefromsingle(request, pk):
todelmess = Message.objects.get(pk=pk)
if(todelmess.agency == request.user.profile.agency and todelmess.target_user == request.user):
messages.success(request, f'Mitteilung gelöscht.')
Message.objects.get(pk=pk).delete()
UserNotification.objects.filter(elementid=pk).delete()
else:
messages.success(request, f'Sie dürfen diese Mitteilung nicht löschen.')
# Load Context!
context = {
'active_link' : 'messages',
'form' : MessageForm(request.user),
'usermessages' : Message.objects.filter(target_user=request.user, agency=request.user.profile.agency).order_by('-created_date')
}
return redirect ("messages")