| from django.shortcuts import render, redirect |
| from django.contrib.auth.models import User |
| from django.contrib.auth.decorators import login_required |
| from chat.models import UserRelation, Messages |
| from django.http.response import JsonResponse |
| from django.contrib import messages as django_messages |
| from django.db.models import Q |
|
|
|
|
| @login_required(login_url="login") |
| def chat(request, username): |
| usersen = request.user |
| try: |
| |
| friend = User.objects.get(username=username) |
| relation = UserRelation.objects.get(user=usersen, friend=friend, accepted=True) |
| except (User.DoesNotExist, UserRelation.DoesNotExist): |
| |
| django_messages.error( |
| request, "User or relation not found. You cannot chat with this user." |
| ) |
| return redirect("home") |
|
|
| |
| messages = Messages.objects.filter( |
| (Q(sender_name=usersen) & Q(receiver_name=friend)) |
| | (Q(sender_name=friend) & Q(receiver_name=usersen)) |
| ).order_by("timestamp") |
|
|
| |
| if request.method == "GET": |
| return render( |
| request, |
| "chat.html", |
| { |
| "relation_key": relation.relation_key, |
| "messages": messages, |
| "curr_user": usersen, |
| "friend": friend, |
| }, |
| ) |
|
|
| |
| return JsonResponse({"error": "Invalid request method"}, status=405) |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|