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).order_by("last_name"), "onlineusers" : users_online.get_users() } return render(request, "chat/chat_allusers.html", context) else: return JsonResponse({}) @login_required def getloggedusersdata(request): user_online_final = [] user_besch_final = [] user_abw_final = [] user_off_final = [] 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) for u in users_agency: if(u in users_online): if(u.profile.onlinestatus == 0): user_online_final.append("" + str(u.pk)) elif(u.profile.onlinestatus == 1): user_besch_final.append("" + str(u.pk)) elif(u.profile.onlinestatus == 2): user_abw_final.append("" + str(u.pk)) elif(u.profile.onlinestatus == 3): user_off_final.append("" + str(u.pk)) return JsonResponse({"user_online_final" : user_online_final, "user_besch_final" : user_besch_final, "user_abw_final" : user_abw_final, "user_off_final" : user_off_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] } if(request.GET["is_basechat"] == "1"): return render(request, "chat/chat_content_basechat.html", context) else: 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) '''