from osinacore.api.utils import * from osichat.models import * from rest_framework.decorators import api_view from .serializers import * from django.shortcuts import get_object_or_404 from django.db.models import Q @api_view(['GET']) def get_chat_rooms(request): chat_rooms = ChatRoom.objects.annotate(last_update=Max('chatmessage__date_sent')).order_by('-last_update', '-date_created') chat_rooms_serializer = ChatRoomSerializer(chat_rooms, many=True) return successRes(chat_rooms_serializer.data) @api_view(['GET']) def get_visitors(request): start_date = request.data.get("start_date") end_date = request.data.get("end_date") if start_date and end_date: #Range of time visitors = Visitor.objects.filter(Q(visitorlog__visit_date__range=[start_date, end_date]) | Q(visitorlog__left_date__range=[start_date, end_date])).distinct() elif start_date and not end_date: #Specific date visitors = Visitor.objects.filter(Q(visitorlog__visit_date=start_date) | Q(visitorlog__left_date=start_date)).distinct() else: #Active visitors visitors = Visitor.objects.filter(visitorlog__left_date__isnull=True).distinct() visitors_count = visitors.count() visitors_serializer = VisitorSerializer(visitors, many=True) response_data = { "count": visitors_count, "visitors": visitors_serializer.data } return successRes(response_data)