digitaleagenturnc/message/views.py

122 lines
4.5 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
# 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_id = formtocheck.cleaned_data["target_user"]
targetuser = User.objects.get(pk=targetuser_id)
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."
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):
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 render (request, 'message/message.html', context)