115 lines
4.1 KiB
Python
115 lines
4.1 KiB
Python
from django.shortcuts import render
|
|
from django.contrib.auth.decorators import login_required
|
|
from channels_presence.models import Presence
|
|
from django.http import HttpResponseRedirect,HttpResponse, JsonResponse
|
|
from django.contrib.auth.models import User
|
|
from channels_presence.models import Room
|
|
from channels_presence.models import Presence
|
|
import channels.layers
|
|
from django.utils import timezone
|
|
from .models import ChatRoom, ChatMessage
|
|
|
|
# Create your views here.
|
|
@login_required
|
|
def chatmanagement(request):
|
|
|
|
users_online = Room.objects.get(channel_name="agency_" + str(request.user.profile.agency.pk))
|
|
|
|
context = {
|
|
'active_link' : 'chat',
|
|
"usersofagency" : User.objects.filter(profile__agency=request.user.profile.agency).exclude(pk=request.user.pk).order_by("last_name"),
|
|
"onlineusers" : users_online.get_users()
|
|
|
|
}
|
|
return render(request, 'chat/chatmanagement.html', context)
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
def getloggedusers(request):
|
|
if request.method == "GET":
|
|
|
|
users_online = Room.objects.get(channel_name="agency_" + str(request.user.profile.agency.pk))
|
|
|
|
context = {
|
|
"usersofagency" : User.objects.filter(profile__agency=request.user.profile.agency).exclude(pk=request.user.pk).oder_by("last_name"),
|
|
"onlineusers" : users_online.get_users()
|
|
}
|
|
|
|
return render(request, "chat/chat_allusers.html", context)
|
|
else:
|
|
return JsonResponse({})
|
|
|
|
@login_required
|
|
def getloggedusersdata(request):
|
|
if request.method == "GET":
|
|
|
|
users_online = Room.objects.get(channel_name="agency_" + str(request.user.profile.agency.pk)).get_users()
|
|
users_agency = User.objects.filter(profile__agency=request.user.profile.agency).exclude(pk=request.user.pk)
|
|
|
|
user_online_final = []
|
|
for u in users_agency:
|
|
if(u in users_online):
|
|
user_online_final.append("" + str(u.pk))
|
|
|
|
return JsonResponse({"onlineusers" : user_online_final})
|
|
else:
|
|
return JsonResponse({})
|
|
|
|
@login_required
|
|
def chatajaxmain(request):
|
|
if request.method == "GET":
|
|
|
|
context = {}
|
|
choosenroom = ""
|
|
if request.GET["action"] == "startnewchat_user_user":
|
|
singleuserid = request.GET["new_chat_userid"]
|
|
getroom = ChatRoom.objects.filter(chatmember_single__pk=singleuserid, creator=request.user) | ChatRoom.objects.filter(creator__pk=singleuserid, chatmember_single=request.user)
|
|
singleuser = User.objects.get(pk=singleuserid)
|
|
# NO PRIVATE CHAT THERE, CREATE ONE!
|
|
if(len(getroom) == 0):
|
|
newchatroom = ChatRoom(creator=request.user, chatroomtype=0, roomname="Gespräch mit " + singleuser.first_name + " " + singleuser.last_name, roomname_channel="privatechat_" + str(request.user.pk) + "_" + singleuserid, chatmember_single=singleuser, chatroom_createddate=timezone.now(), viewstatus=0)
|
|
newchatroom.save()
|
|
context = {
|
|
"roomdata" : newchatroom
|
|
}
|
|
else:
|
|
context = {
|
|
"roomdata" : list(getroom)[0]
|
|
}
|
|
|
|
return render(request, "chat/chat_content.html", context)
|
|
elif request.GET["action"] == "addnewmessage":
|
|
room = ChatRoom.objects.get(pk=request.GET["room"])
|
|
if(request.user == room.creator or request.user == room.chatmember_single):
|
|
|
|
newmessage = ChatMessage(room=room, author=request.user, content=request.GET["message"])
|
|
newmessage.save()
|
|
room.messages.add(newmessage)
|
|
room.save()
|
|
return render(request, "chat/chat_ownmessage.html", {"newmessage" : newmessage})
|
|
else:
|
|
JsonResponse({"status" : "Error on CHATAJAXMAIN"})
|
|
elif request.GET["action"] == "loadnewestmessage":
|
|
room = ChatRoom.objects.get(pk=request.GET["room"])
|
|
last_message = list(room.messages.order_by('-sendtime'))[0]
|
|
|
|
if(last_message.author == request.user):
|
|
return render(request, "chat/chat_ownmessage.html", {"newmessage" : last_message})
|
|
else:
|
|
return render(request, "chat/chat_othermessage.html", {"newmessage" : last_message})
|
|
|
|
else:
|
|
return JsonResponse({"status" : "Error on CHATAJAXMAIN"})
|
|
|
|
|
|
|
|
'''
|
|
author = models.ForeignKey(User, on_delete=models.CASCADE)
|
|
content = models.CharField(max_length=5000, blank=False, default="")
|
|
sendtime = models.DateField(default=timezone.now, blank=True)
|
|
room = models.ForeignKey("ChatRoom", on_delete=models.CASCADE)
|
|
|
|
|
|
''' |