You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
2.4 KiB
50 lines
2.4 KiB
from django.shortcuts import render
|
|
from django.views.generic import View
|
|
from django.db.models import Q
|
|
|
|
from .models import Message
|
|
from users.models import User
|
|
|
|
|
|
class ChatUserView(View):
|
|
template_name = ''
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
if request.user.is_authenticated() and request.user.is_customer():
|
|
customer_contacts = Message.objects.values_list('sender_id', 'recipent_id'). \
|
|
filter(Q(recipent_id=request.user.pk) | Q(sender_id=request.user.pk)).distinct()
|
|
|
|
users_ids = []
|
|
for msg in customer_contacts:
|
|
a, b = msg
|
|
if a != request.user.pk:
|
|
users_ids.append(a)
|
|
if b != request.user.pk:
|
|
users_ids.append(b)
|
|
contacts_users = User.objects.filter(pk__in=users_ids)
|
|
|
|
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk))
|
|
orders = request.user.projects.select_related('order').all()
|
|
self.template_name = 'chat_customer.html'
|
|
return render(request, self.template_name, {'contacts_users': contacts_users,
|
|
'chat_messages': chat_messages,
|
|
'orders': orders})
|
|
else:
|
|
orders = request.user.orders.all()
|
|
contractor_contacts = Message.objects.values_list('sender_id', 'recipent_id').filter(
|
|
Q(recipent_id=request.user.pk) | Q(sender_id=request.user.pk)).distinct()
|
|
users_ids = []
|
|
for msg in contractor_contacts:
|
|
a, b = msg
|
|
if a != request.user.pk:
|
|
users_ids.append(a)
|
|
if b != request.user.pk:
|
|
users_ids.append(b)
|
|
contacts_users = User.objects.filter(pk__in=users_ids)
|
|
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk)).order_by(
|
|
'created')
|
|
self.template_name = 'chat_contractor.html'
|
|
return render(request, self.template_name, {'orders': orders,
|
|
'contacts_users': contacts_users,
|
|
'chat_messages': chat_messages
|
|
})
|
|
|