from django.shortcuts import render from django.views.generic import View from django.db.models import Q from django.forms import formset_factory from .models import Message from .forms import ArticleForm from reviews.forms import Review from users.models import User class ChatUserView(View): template_name = '' def get(self, request, *args, **kwargs): # import code; code.interact(local=dict(globals(), **locals())) user_id = request.GET.get('user_id',None) 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)).filter(Q(team_id=None)).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) if user_id: users_ids.append(int(user_id)) # import code; code.interact(local=dict(globals(), **locals())) 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').exclude(order__contractor__isnull=True) 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)).filter(Q(team_id=None)).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) if user_id: users_ids.append(int(user_id)) 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') if request.user.is_owner_team(): team_orders = request.user.team.orders.all() self.template_name = 'chat_contractor.html' return render(request, self.template_name, {'orders': orders, 'contacts_users': contacts_users, 'chat_messages': chat_messages, 'team_orders': team_orders, })