131 lines
4.7 KiB
Python
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")
|