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 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').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)).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 }) def test(request): ArticleFormSet = formset_factory(ArticleForm, extra=2) formset = ArticleFormSet() return render(request, 'test1.html', {'formset': formset})