from rest_framework.mixins import CreateModelMixin
from rest_framework import views
from rest_framework.response import Response
from rest_framework import status

from common.drf.api import JMSGenericViewSet
from common.permissions import IsOrgAdminOrAppUser
from tickets.models import TicketSession
from tickets.serializers import TicketSessionRelationSerializer
from terminal.serializers import SessionSerializer
from orgs.utils import tmp_to_root_org


class TicketSessionRelationViewSet(CreateModelMixin, JMSGenericViewSet):
    queryset = TicketSession
    serializer_class = TicketSessionRelationSerializer
    permission_classes = (IsOrgAdminOrAppUser, )


class TicketSessionApi(views.APIView):

    def get(self, request, *args, **kwargs):
        with tmp_to_root_org():
            ticketsession = TicketSession.objects.filter(ticket=self.kwargs['ticket_id']).first()
            if not ticketsession:
                return Response(status=status.HTTP_404_NOT_FOUND)

            session = ticketsession.session
            serializer = SessionSerializer(session)
            return Response(serializer.data)